Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
DocNick
0 / 0 / 0
Регистрация: 17.02.2014
Сообщений: 4
1

Ошибка при запуске файла

02.03.2014, 11:43. Просмотров 335. Ответов 2
Метки нет (Все метки)

Почему при запуске файла вылезает окошко "Обнаружена ошибка. Приложение будет закрыто"? Код нормально компилируется и создается exe файл.

Все исходники которые я взял с форума http://www.cyberforum.ru/post4709002.html и http://www.cyberforum.ru/post4658556.html , либо выдают ошибку при запуске exe файла, либо вообще не запускаются...
Единственное, что я изменял это добавлял к подключаемым библиотекам вместо просто masm masm32.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 11:43
Ответы с готовыми решениями:

Ошибка при запуске программы
Найти в DSEG: 4-й по порядку код CR (0Dh) я хотела бы выводить данные, пока не выведится 4й код...

Ошибка деления на ноль при запуске программы
program ase; uses crt; var a,b,c,d,x,y: integer; procedure vivod; begin writeln...

Перевод курсора, при запуске exe-файла окно сразу закрывается
Добрый день. Есть код программы которая (по идее) должна, при нажатии в правом нижнем углу окна,...

При запуске копии "Hello, W.."ошибка A1000
Привет всем! Чет не пойму что делаю не так! Установил МАСМ32,запустил первую прогу "Hello",все в...

Ошибка при компиляции exe файла
Пытаюсь скомпилировать пример из книги Assembly Language for x86 processor .386 .model flat,...

2
Mikl___
Автор FAQ
13381 / 6381 / 630
Регистрация: 11.11.2010
Сообщений: 11,542
02.03.2014, 14:20 2
DocNick,
прям так все исходники, прям так и выдают сообщение? Давай остановимся на каком-нибудь одном. Может стоит привести текст программы, с которой у тебя проблема, и текст bat-файла, которым ты собираешь свой ехе-файл?
0
DocNick
0 / 0 / 0
Регистрация: 17.02.2014
Сообщений: 4
02.03.2014, 23:52  [ТС] 3
Например, вот код
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
.386
    .model flat,stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\msvcrt.inc
    includelib \masm32\lib\msvcrt.lib
    includelib \masm32\lib\kernel32.lib
 
.data
    MaxCount = 10000
    Osn=10000
    count=4
    buf db MaxCount*3 dup (0)
    fmts db '%s', 0
    fmti db '%i', 0
    NewLine db 13, 10, 0
    msg1 db 'Enter long number: ', 0
    msg2 db 13, 10, 'You entered: ', 0
    A dd MaxCount dup (0)   
.code
start:  
    push 0
    push offset msg1
    push offset fmts
    call crt_printf
    add esp, 8
    push offset buf
    push offset A
    call ReadLong
    push offset msg2
    push offset fmts
    call crt_printf
    add esp, 8
    push offset buf
    push offset A
    call WriteLong
    call crt_getchar
    call crt_getchar
    call ExitProcess
 
ReadLong proc   
    push ebp
    mov ebp, esp
    pushad
    mov esi, [ebp+12]       ;буфер для ввода строки
    push esi
    push offset fmts
    call crt_scanf          ;вводим строку цифр
    add esp, 8
    push [ebp+12]           
    call crt_strlen
    add esp, 4
    mov ecx, eax
    mov edi, [ebp+8]        ;адрес массива для хранения  числа
    mov dword ptr [edi], 0  ;первый элемент массива будет хранит кол-во элементов массива
                            ;в которых лежат числа
;сия конструкция протаскивает старшую цифру числа в конец.                          
@@1:                        
    push ecx                
    mov ecx, [edi]      
    cmp ecx, 1              
    jb @@3
    
@@2:    
    mov eax, [edi+ecx*4]        
    mov ebx, 10
    mul ebx
    mov ebx, Osn
    div ebx
    add [edi+ecx*4+4], eax
    mov [edi+ecx*4], edx
    loop @@2
@@3:
    xor eax, eax                ;прибавляем очередную цифру
    mov al, [esi]
    sub al, '0'
    add [edi+4], eax
    mov ecx, [edi]
    xor ebx, ebx
    cmp dword ptr [edi+ecx*4+4], 0  ;увеличим кол-во использованых элементов массива, если был задействован еще один
    setne bl
    add [edi], ebx  
    inc esi
    pop ecx
    loop @@1
    popad
    mov esp, ebp
    pop ebp
    ret 8
ReadLong endp
 
WriteLong proc 
    push ebp
    mov ebp, esp
    pushad
    mov edi, [ebp+8]
    mov ecx, [edi]
    push ecx
    push [edi+ecx*4]
    push offset fmti
    call crt_printf         ;выводим первые цифры числа
    add esp, 8
    pop ecx
@@1:
    dec ecx
    cmp ecx, 1
    jl @@4
    push ecx                
    push offset buf
    push [edi+ecx*4]    ;берем очередной элемент массива
    call IntToStr       ;преобразуем в строку    
@@2:          
    cmp eax, count ;если кол-во цифр в строке меньше, чем должно быть, то выводим нули
    je @@3   
    push eax
    push '0'
    call crt_putchar
    add esp, 4   
    pop eax
    inc eax
    jmp short @@2
@@3:
    push offset buf         ;вывод строки с цифрами
    push offset fmts
    call crt_printf
    add esp, 8
    pop ecx
    jmp short @@1
@@4:    
    popad
    mov esp, ebp
    pop ebp
    ret
WriteLong endp
 
;сия процедура есть в прикрепленных темах. отличие лишь в том, что цифры не выводятся на экран, а сохраняются 
;в буфер для последующего вывода.
IntToStr:
    push ebp
    mov ebp, esp    
    push ebx
    push ecx
    push edi
    push edx
    mov edi, [ebp+12]
    mov eax, [ebp+8]
    xor ecx, ecx
    mov ebx, 10
@@1:
    xor edx, edx
    div ebx
    push dx
    inc ecx
    or eax, eax
    jne @@1
    
    mov ebx, ecx
@@2:    
    pop ax
    add al, 30h
    stosb
    loop @@2
    
    xor ax,ax 
    stosb
    mov eax, ebx
    pop edx
    pop edi
    pop ecx
    pop ebx
    mov esp, ebp
    pop ebp
    ret 8
    
end start
Я не создаю bat-файл. Я пользуюсь MASM32 Editor.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2014, 23:52

Ошибка ssis пакета (vs2008) при загрузке .csv файла в БД при запуске VS2015
SSIS пакет создан в vs2008. Работал. Сменился MS Server на 2015 и vs2015. Загружаю. Выдает ошибку...

Ошибка при запуске vbs файла
При запуске выкидывает ошибку Sub Test() With Application.Workbooks.Item(Test.xls) Dim Mas0...

Ошибка при запуске исполняемого файла
Требование к разработке: Разработать программы для генерации и проверки подписей по ГОСТ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru