Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
1

Ошибка Illegal Instruction

04.05.2016, 11:59. Просмотров 1844. Ответов 18

Программа находит ошибки Illegal instruction
и прочее!
Помогите с решением текст .asm вставлена ниже

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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
.386P
.MODEL FLAT, stdcall
; константы
; сообщение приходит при закрытии окна
WM_DESTROY  equ 2
; сообщение приходит при создании окна
WM_CREATE   equ 1
; сообщение при щелчке левой кнопкой мыши в области окна
WM_LBUTTONDOWN  equ 201h
; сообщение при щелчке праввой кнопкой мыши в области окна
WM_RBUTTONDOWN  equ 204h
; свойства окна
CS_VREDRAW  equ 1h
CS_HREDRAW  equ 2h
CS_GLOBALCLASS  equ 4000h
WS_OVERLAPPEDWINDOW equ 000CF0000H
style   equ CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS
; идентификатор стандартной иконки
IDI_APPLICATION equ 32512
; идентификатор курсора
IDC_CROSS   equ 32515
; режим показа окна - нормальный
SW_SHOWNORMAL   equ 1
; прототипы внешних процедур
EXTERN  MessageBoxA: NEAR
EXTERN  CreateWindowExA: NEAR
EXTERN  DefWindowProcA: NEAR
EXTERN  DispatchMessageA: NEAR
EXTERN  ExitProcess: NEAR
EXTERN  GetMessageA: NEAR
EXTERN  GetModuleHandleA: NEAR
EXTERN  LoadCursorA: NEAR
EXTERN  LoadIconA: NEAR
EXTERN  PostQuitMessage: NEAR
EXTERN  RegisterClassA: NEAR
EXTERN  ShowWindow: NEAR
EXTERN  TranslateMessage: NEAR
EXTERN  UpdateWindow: NEAR
; директивы компоновщику для подключения библиотек
includelib c:\win32\tasm32\lib\import32.lib
;-------------------------------------------------------------------------
; структуры
; структура сообщения
MSGSTRUCT STRUC
    MSHWND  DD  ?   ; идентификатор сообщения
    MSWPARAM    DD  ?   ; доп. информация о сообщении
    MSLPARAM    DD  ?   ; доп. информация о сообщении
    MSTIME  DD  ?   ; время посылки сообщения
    MSPT        DD  ?   ; положение курсора во время посылки сообщения
MSGSTRUCT   ENDS
;---------------------------
WNDCLASS STRUC
    CLSSTYLE        DD  ?   ; стиль окна
    CLWNDPROC       DD  ?   ; указатель на процедуру окна
    CLSCEXTRA       DD  ?   ; информация о доп. байтах для данной структуры
    CLWNDEXTRA  DD  ?   ; информация о доп. байтах для окна
    CLSHINSTANCE    DD  ?   ; дискриптор приложения
    CLSHICON        DD  ?   ; идентификатор иконы окна
    CLSHCURSOR  DD  ?   ; идентификатор курсора окна
    CLBKGROUND  DD  ?   ; идентификатор кисти окна
    CLMENUNAME  DD  ?   ; имя-идентификатор меню
    CLNAME      DD  ?   ; специфицирует имя класса окна
WNDCLASS    ENDS
; сенмент данных
_DATA SEGMENT DWORD PUBLIC USE32 'DATA'
    NEWHWND DD  0
    MSG MSGSTRUCT   <?>
    WC  WNDCLASS    <?>
    HINST       DD  0   ; здесь хранится дескриптор приложения
    TITLENAME   DB  'Простой пример 32-битного приложения',0
    CLASSNAME   DB  'CLASS32',0
    CAP     DB  'Сообщение',0
    MES1        DB  'Вы нажали левую кнопку мыши',0
    MES2        DB  'Выход из программы. Пока!',0
_DATA   ENDS
; сегмент кода
_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'
START:
; получить дескриптор приложения
    PUSH    0
    CALL    GetModuleHandleA
    MOV [HINST],EAX
REG_CLASS:
; заполнить структуру окна 
    MOV [WC.CLSSTYLE], style
; процедура обработки сообщений
    MOV [WC.CLWNDPROC], OFFSET  WNDPROC
    MOV [WC.CLSCEXTRA], 0
    MOV [WC.CLWNDEXTRA], 0
    MOV EAX, [HINST]
    MOV [WC.CLSHINSTANCE],EAX
;------------------иконка окна
    PUSH    IDI_APPLICATION
    PUSH    0
    CALL    LoadIconA
    MOV [WC.CLSHICON],  EAX
;------------------курсор окна
    PUSH    IDC_CROSS
    PUSH    0
    CALL    LoadCursorA
    MOV [WC.CLSHCURSOR], EAX
;-------------------
    MOV [WC.CLBKGROUND],17  ; цвет окна
    MOV DWORD PTR [WC.CLMENUNAME], 0
    MOV DWORD PTR [WC.CLNAME], OFFSET CLASSNAME
    PUSH    OFFSET  WC
    CALL    RegisterClassA
; создать окно зарегистрированного класса
    PUSH    0
    PUSH    [HINST]
    PUSH    0
    PUSH    0
    PUSH    400     ; DY - высота окна
    PUSH    400     ; DX - ширина окна
    PUSH    100     ; Y - координата левого верхнего угла
    PUSH    100     ; X - координата левого верхнего угла
    PUSH    WS_OVERLAPPEDWINDOW
    PUSH    OFFSET  TITLENAME   ; имя окна
    PUSH    OFFSET  CLASSNAME   ; имя класса
    PUSH    0
    CALL    CreateWindowExA
; проверка на ошибку
    CMP EAX, 0
    JZ  _ERR
    MOV [NEWHWND], EAX
    PUSH    SW_SHOWNORMAL
    PUSH    [NEWHWND]
    CALL    ShowWindow      ; показать созданное окно
    PUSH    [NEWHWND]
    CALL    UpdateWindow    ; команда перерисовать видимую часть окна, сообщение WM_PAINT
; цикл обработки сообщений
MSG_LOOP:
    PUSH    0
    PUSH    0
    PUSH    0
    PUSH    OFFSET  MSG
    CALL    GetMessageA
    CMP EAX, 0
    JE  END_LOOP
    PUSH    OFFSET  MSG
    CALL    TranslateMessage
    PUSH    OFFSET  MSG
    CALL    DispatchMessageA
    JMP MSG_LOOP
END_LOOP:
; выход из программы (закрыть процесс)
    PUSH    [MSG.MSWPARAM]
    CALL    ExitProcess
_ERR:
    JMP END_LOOP
;----------------------------------------------------------------------------
; процедура окна
; расположение параметров в стеке
; [EBP+14H]  LPARAM
; [EBP+10H]  WPARAM
; [EBP+0CH]  MES
; [EBP+8]       HWND
WNDPROC PROC
    PUSH    EBP
    MOV EBP, ESP
    PUSH    EBX
    PUSH    ESI
    PUSH    EDI
    CMP DWORD PTR [EBP+0CH], WM_DESTROY
    JE  WMDESTROY
    CMP DWORD PTR [EBP+0CH], WM_CREATE
    JE  WMCREATE
    CMP DWORD PTR [EBP+0CH], WM_LBUTTONDOWN ; левая кнопка
    JE  LBUTTON
    CMP DWORD PTR [EBP+0CH], WM_RBUTTONDOWN ; правая кнопка
    JE  RBUTTON
    JMP DEFWNDPROC
; нажатие правой кнопки приводит к закрытию окна
RBUTTON:
    JMP WMDESTROY
; нажатие левой кнопки мыши
LBUTTON:
; выводим сообщение
    PUSH    0       ; MB_OK
    PUSH    OFFSET CAP
    PUSH    OFFSET  MES1
    PUSH    DWORD PTR [EBP+08H]
    CALL    MessageBoxA
    MOV EAX, 0
    JMP FINISH
WMCREATE:
    MOV EAX, 0
    JMP FINISH
DEFWNDPROC:
    PUSH    DWORD PTR [EBP+14H]
    PUSH    DWORD PTR [EBP+10H]
    PUSH    DWORD PTR [EBP+0CH]
    PUSH    DWORD PTR [EBP+08H]
    CALL    DefWindowProcA
    JMP FINISH
WMDESTROY:
    PUSH    0       ; MB_OK 
    PUSH    OFFSET  CAP
        PUSH    OFFSET  MES2
        PUSH    DWORD PTR [EBP+08H] ; дескриптор окна
    CALL    MessageBoxA
    PUSH    0
    CALL    PostQuitMessage     ; сообщение WM_QUIT
    MOV EAX, 0
FINISH:
    POP EDI
    POP ESI
    POP EBX
    POP EBP
    RET 16
WNDPROC ENDP
_TEXT   ENDS
END START
0
Миниатюры
Ошибка Illegal Instruction  
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2016, 11:59
Ответы с готовыми решениями:

Ошибка: "the ntvdm cpu has encountered an illegal instruction"
помогите сделать скриншоты. для кода. сделала только скрин начало и компилирование..а ход и конец...

Сравнение чисел: ошибка "ntvdm cpu has encountered an illegal instruction"
Написал такую программу .model tiny .code org 100h start: X db 5 Y db 7 a db '5 &gt; 7$'

Нужно найти причину ошибки (illegal instruction)
Совсем новичек в данной теме.(23 минуты опыта). Набрал текст программы из книги пытался...

Illegal instruction: datas db'string' or wrong parameters
Как исправить эти ошибки? (3) illegal instruction: datas db'string' or wrong parameters. (16)...

Ошибка: invalid instruction operands
Здравствуйте! Не могу устранить ошибку : error A2070: invalid instruction operands Подскажите,...

18
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 12:04  [ТС] 2
кто нибудь знает в чем проблема??
0
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 12:43 3

Вы используете компилятор под Dos, а нужно под Windows
0
Миниатюры
Ошибка Illegal Instruction  
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 12:47  [ТС] 4
какой компилятор вы используете?
можете посоветать!
0
04.05.2016, 12:47
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 12:49 5
Антидепрессант,
Иcпользовался TASM 5. Смотрите на версию программ TASM и TLINK
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 12:57  [ТС] 6
Constantin Cat, как его открыть я с этой прогой не работал вообще!
Можно быстрое руководство по использованию!
0
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 13:05 7
Антидепрессант,
Он такой же как и 4.х, через командную строку.
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 13:15  [ТС] 8
Constantin Cat, через cmd запускается?
точнее должен скопировать в ту папку файлы tasm, где мой текст??
0
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 13:23 9
Цитата Сообщение от Антидепрессант Посмотреть сообщение
точнее должен скопировать в ту папку файлы tasm, где мой текст?
Не обязательно, смотрите мой скрин. В папке my, у меня файлы исходников, а компиляторы находятся в других папках. Нужно только пути прописывать.
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 13:50  [ТС] 10
Constantin Cat, у меня вообще не запускается
можете свою прогу в архиве или же установочную!
0
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 14:00 11
Распакуйте в папку.
0
Вложения
Тип файла: zip tasm.5.zip (2.90 Мб, 4 просмотров)
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 14:22  [ТС] 12
Constantin Cat, теперь он выдает ошибку который показан ниже
0
Миниатюры
Ошибка Illegal Instruction  
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 14:46 13
Антидепрессант,
Смотрите, что у Вас есть в папке LIB.
Там, что-то вроде imp32i.lib
0
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
04.05.2016, 14:51 14
Антидепрессант, возьмите дистрибутив ТАСМа 5.х отсюда:
Там же на предыдущей странице есть и МАСМ 6.1х.
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 17:15  [ТС] 15
Constantin Cat, да он есть!
его перекинуть на ту папку где мой .asm??
0
Constantin Cat
8257 / 1367 / 412
Регистрация: 28.02.2015
Сообщений: 2,853
Завершенные тесты: 1
04.05.2016, 17:24 16
Антидепрессант, пропишите путь к этому файлу в строке:
Assembler
1
includelib c:\win32\tasm32\lib\import32.lib
И имя замените на imp32i.lib, либо переименуйте его в import32.lib.
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 18:57  [ТС] 17
Constantin Cat, теперь пишет что
Assembler
1
includelib не является внутренней или внешней командой
0
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
04.05.2016, 19:07 18
Антидепрессант, тогда уберите эту строку из .asm-файла, а компоновщику скажите tlink32 6.obj -L c:\win32\tasm32\lib\
0
Антидепрессант
0 / 0 / 0
Регистрация: 04.04.2016
Сообщений: 14
04.05.2016, 19:21  [ТС] 19
как бы я его не писал он пишет так:
0
Миниатюры
Ошибка Illegal Instruction  
04.05.2016, 19:21
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2016, 19:21

Ошибка A2070: invalid instruction operands
Ребят, помогите пж - не могу понять в чём дело. Выдаёт ошибку А2070. .386 .model flat, stdcall...

Ошибка при запуске примера - parser: instruction expected
Скачал редактор SAMS .Запустил пример выдало ошибку Внимание! В ходе построения обнаружены...

Ошибка индексации (Illegal indexing mode)
mov arr, ax Illegal indexing mode. Помогите исправить


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

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

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