Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Sh@dow777
16 / 16 / 6
Регистрация: 10.12.2013
Сообщений: 724
1

Сравнение чисел: ошибка "ntvdm cpu has encountered an illegal instruction"

25.12.2013, 01:07. Просмотров 630. Ответов 5
Метки нет (Все метки)

Написал такую программу
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
.model tiny
.code
org 100h
 
start:
 
X db 5
Y db 7
a db '5 > 7$' 
b db '5 < 7$'  
 
mov al,X
mov ah,Y
cmp al,ah
jg ml1
jl ml2
 
ml1:
 
mov ah,9
mov dx,offset a
int 21h
 
ml2:
 
mov ah,9
mov dx,offset b
int 21h
 
ret
 
end start
Сравнивает 2 числа и выводит наименьшее. Но у меня выдает ошибку THE NTVDM CPU has encountered an illegal instruction. В чем здесь ошибка? И скажите,большая часть программы хотя бы правильная?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 01:07
Ответы с готовыми решениями:

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

the NTVDM CPU has encountered an illegal instruction.
при запуске .еxe файла этой программы - .model TINY .stack 100h .data .code start: mov...

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

Ошибка "invalid instruction operands"
Всем привет! Небольшая проблема. Выбивает ошибку в 21 строке. Не понимаю что там такого...

Ошибка в программе: "Unexpected end of file encountered" (tasm)
.MODEL SMALL .STACK 200h .386 DATASEG SLINE DB 78 DUP (CHSEP), 0 MESS_1 DB &quot;Mouse...

5
TFS
551 / 33 / 6
Регистрация: 11.12.2013
Сообщений: 92
25.12.2013, 01:20 2
COM-файл начинает выполняться с самого начала. Соответственно, в вашем случае он начнёт выполнение программы не с 12-й строки, а с 7-й, пытаясь интерпретировать переменные как код.

Переменные нужно либо вынести за команду ret, либо переместить в данные - это формальный перенос, просто для красоты, чтобы эту секцию можно было поставить перед кодом. Ну или поставить jmp на код перед данными.

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
.model tiny
 
.data
X db 5
Y db 7
a db '5 > 7$'
b db '5 < 7$'
 
.code
org 100h
 
start:
mov al,X
mov ah,Y
cmp al,ah
jg ml1
jl ml2
 
ml1:
 
mov ah,9
mov dx,offset a
int 21h
 
ml2:
 
mov ah,9
mov dx,offset b
int 21h
 
ret
 
end start
1
Sh@dow777
16 / 16 / 6
Регистрация: 10.12.2013
Сообщений: 724
25.12.2013, 01:38  [ТС] 3
Спасибо огромное! Теперь буду знать. Прога работает.
0
Mikl___
Автор FAQ
13486 / 6417 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
25.12.2013, 06:15 4
Sh@dow777,
программа на ассемблере - это стремление к использованию минимального количества команд, твоя программа должна выглядеть как-то так
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.model tiny
.code
org 100h 
start:mov al,X
     cmp al,Y
     jl ml2 
ml1:mov dx,offset a
      jmp ml3
ml2: mov dx,offset b
ml3: mov ah,9
       int 21h 
ret
X db 5
Y db 7
a db '5 > 7$' 
b db '5 < 7$' 
end start
Sh@dow777, надпись '5 > 7' отдает глупостью, вот этот вариант проверяет еще и на равенство X и Y
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
; masm dos com #
.286
.model tiny
.code
org 100h
start:  mov al,X
     cmp al,Y
     jl l1
     je l0
     inc [a+2]
l0:  inc [a+2]
l1:  mov dx,offset a
     mov ah,9
     int 21h 
     ret
X db 7
Y db 6
a db 'X < Y$' 
end start
используется свойство ASCII-кодов "<" = 60, "=" = 61, ">"=62
1
Sh@dow777
16 / 16 / 6
Регистрация: 10.12.2013
Сообщений: 724
25.12.2013, 06:20  [ТС] 5
Спасибо за помощь. Я уже решил задачу. Я сначала делал проверку на равенство. Потом подумал, что это лишнее,т.к я ввел определенные числа.
0
Mikl___
Автор FAQ
13486 / 6417 / 635
Регистрация: 11.11.2010
Сообщений: 11,588
25.12.2013, 08:38 6
Sh@dow777,
а теперь программа может сравнивать любые X и Y от 0 до 255, осталось только ввод X и Y с клавиатуры прикрепить
0
25.12.2013, 08:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 08:38

Ошибка линковщика: "32-bit record encountered in module"
.386 .model small .stack 256 .data stat db ? col dw ? row dw ? color db 1 flag db 0...

DosBox и ошибка "Illegal command: masm"
Создаю простой хелло ворлд под дос в редакторе Quick, сохраняю как hello.asm .MODEL Small .STACK...

Illegal instruction
Помогите, почему компилятор выдает ошибки ? (6) Illegal instruction (14) Undefined symbol:...


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

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

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