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

Ошибка: "the ntvdm cpu has encountered an illegal instruction"

07.03.2017, 14:34. Просмотров 1674. Ответов 41
Метки нет (Все метки)

помогите сделать скриншоты. для кода. сделала только скрин начало и компилирование..а ход и конец не могу..выдает ошибку. the ntvdm cpu has encountered an illegal instruction. вот сам код
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
model tiny
.code
org 100h
.386
start:
 
;b;
xor ax,ax
mov al,[a]
btr ax,8
btr ax,5
btr ax,3
btr ax,2
xor bx,bx
mov bl,[b]
or bx,ax
mov cx,bx
 
;a;
xor ax,ax
mov al,[b]
btr ax,0
btr ax,1
btr ax,6
btr ax,7
xor bx,bx
mov bl,[a]
or bx,ax
 
;log and
or cx,bx
 
;*4
shl cx,3
 
;otvet cx
 
ret
 
a db 11111111b
b db 10101010b
 
end start
Добавлено через 6 минут
скриншоты сделала компилирование написал без ошибок, а когда запускаю программу пишет ошибку, если у кого запуститься прога, можете сделать пожалуйста скриншоты, хотяб самый последний, где завершение?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2017, 14:34
Ответы с готовыми решениями:

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

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

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

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

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

41
Kukuxumushu
1849 / 632 / 119
Регистрация: 13.06.2015
Сообщений: 2,153
Завершенные тесты: 2
07.03.2017, 14:45 2
Цитата Сообщение от prov6514 Посмотреть сообщение
если у кого запуститься прога, можете сделать пожалуйста скриншоты, хотяб самый последний, где завершение?
Если она у кого и запустится, то тут же завершится с пустым экраном, т.к. она у вас ничего не выводит.
Такие вещи надо либо делать с выводом ответса после соответствующего преобразования, либо эмулировать в Emu8086, где инструкций btr нет (хотя они и не нужны - в вашем случае надо просто наложить битовую маску).
Ну и у вас ещё полно ошибок, например:
Цитата Сообщение от prov6514 Посмотреть сообщение
;log and
or cx,bx
Где же тут "log and", когда делается OR?
Цитата Сообщение от prov6514 Посмотреть сообщение
;*4
shl cx,3
Это умножение не на 4, а на 8.
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 15:54  [ТС] 3
Как же тогда будет правильный код программы?
Просто я запускала TASM далее компилировала без ошибок выдает, а как только запуск делаю уже пишет ошибку
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 16:40 4
Покажите командную строку компиляции tasm и tlink.
0
07.03.2017, 16:40
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 17:26  [ТС] 5
Скриншоты компиляции и запуска

и вот что потом выдает
0
Миниатюры
Ошибка: "the ntvdm cpu has encountered an illegal instruction"   Ошибка: "the ntvdm cpu has encountered an illegal instruction"  
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 17:46 6
Вставляйте картинки, вместо word'ов.

Добавьте точку перед словом model - вот так .model
Вы можете из командной строки выполнить компиляцию?
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 17:50  [ТС] 7
уже меняла и на .model и на .model small.. все равно пишет ошибку...прям с верху компилировать , он пишет без ошибок, и дальше запускаю и уже с ошибкой..уже не знаю что делать
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 17:54 8
Подозреваю, что что-то не так с этой TA.exe.
Вам нужно в командной строке набрать
Код
tasm file.asm
tlink /Tdc file.obj
Добавлено через 3 минуты
После этого получится готовый file.com. Его запустите и ошибок быть не должно.
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:01  [ТС] 9
я новичок, поэтому не очень понимаю
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 18:04 10
Как вы запускаете TA.exe?

Добавлено через 56 секунд
У вас запускается при этом DOSBox?

Добавлено через 1 минуту
В какой Windows работаете (Win7x64, или WinXPx32, или иное)?
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:07  [ТС] 11
Dosbox у меня нет, только сам фай TASM Вложение 806456

Windows 32

Добавлено через 21 секунду
Windows 7 32
0
Миниатюры
Ошибка: "the ntvdm cpu has encountered an illegal instruction"  
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:12  [ТС] 12
Даны два числа в двоичном виде. Поменять местами 8.5.3.2 - разряды первого числа с 0.1.6.7 с разрядами второго числа сооответствено . результат сложить и умножить на 4.
Вот по этой задаче составляла код, если это важно
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 18:17 13
Тогда в том же каталоге, где находятся tasm, tlink, file.asm создайте файл (в обычном блокноте - просто скопировав строки оз форума) следующего содержания и назовите его
tasm-com.bat
Код
@set AsmSourceName=file

@del %AsmSourceName%.obj > NUL
@del %AsmSourceName%.exe > NUL
@del %AsmSourceName%.com > NUL
@del *.obj > NUL
@del *.map > NUL

tasm %AsmSourceName%.asm
tlink /Tdc %AsmSourceName%.obj

pause
После его запуска в папке появится файл file.com. Попробуйте его запустить.

Добавлено через 1 минуту
Конечно, задание важно. Но сейчас у вас не получается скомпилировать и запустить корректный с точки зрения компилятора код.
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:28  [ТС] 14
выходит все та же ошибка, я уже не знаю что делать, может не понимаю что то, т.к. только недавно начала пользоваться. делала вместе с преподавателем, и все равно, а курсовую уже скоро сдавать((
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 18:38 15
Вы запустили пакетник, что в результате?
Вы запустили программу file.com?

Добавлено через 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
33
34
35
36
37
38
39
40
41
42
43
44
.model tiny
.386
.code
org 100h
 
start:
 
;b;
        xor ax,ax
        mov al,[a]
        btr ax,8
        btr ax,5
        btr ax,3
        btr ax,2
        xor bx,bx
        mov bl,[b]
        or bx,ax
        mov cx,bx
 
;a;
        xor ax,ax
        mov al,[b]
        btr ax,0
        btr ax,1
        btr ax,6
        btr ax,7
        xor bx,bx
        mov bl,[a]
        or bx,ax
 
;log and
        or cx,bx
 
;*4
        shl cx,3
 
;otvet cx
 
int 20h
 
a db 11111111b
b db 10101010b
 
end start
0
prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:42  [ТС] 16
да. выдает ошибку

Добавлено через 2 минуты
заменила и таже самая ошибка, может я что то не то делаю. компилирует он без ошибок, но запускает прогу с ошибкой
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 18:55 17
Тогда поступите так. Установите DOSBox и из под этого эмулятора работайте с tasm и TA.exe.
Тут я предлагал своё видение по настройке
Программа с командами пересылки данных, выводом строки
MASM-Компоновщик и Отладчик

Возможно - эмулятор ntvdm с ошибкой.
-------------
Ещё можно попробовать следующее. Компилировать в другой модели памяти
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
.model small
.386
.code
start:
    mov ax, @data
    mov ds, ax
;b;
        xor ax,ax
        mov al,[a]
        btr ax,8
        btr ax,5
        btr ax,3
        btr ax,2
        xor bx,bx
        mov bl,[b]
        or bx,ax
        mov cx,bx
 
;a;
        xor ax,ax
        mov al,[b]
        btr ax,0
        btr ax,1
        btr ax,6
        btr ax,7
        xor bx,bx
        mov bl,[a]
        or bx,ax
 
;log and
        or cx,bx
 
;*4
        shl cx,3
 
;otvet cx
    mov ax, 4C00h
    int 21h
.data
a db 11111111b
b db 10101010b
 
end start
компилировать
Код
@set AsmSourceName=file
@del %AsmSourceName%.obj > NUL
@del %AsmSourceName%.exe > NUL
@del %AsmSourceName%.com > NUL
@del *.obj > NUL
@del *.map > NUL

tasm %AsmSourceName%.asm
tlink %AsmSourceName%.obj
0
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 19:31 18
Если компилировать код из #15, то компиляция и ход выполнения в turbo debugger
0
Миниатюры
Ошибка: "the ntvdm cpu has encountered an illegal instruction"   Ошибка: "the ntvdm cpu has encountered an illegal instruction"   Ошибка: "the ntvdm cpu has encountered an illegal instruction"  

prov6514
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 19:51  [ТС] 19
ошибки нет, но теперь пишет нет стека, а компилируется так же без ошибок

Добавлено через 3 минуты
получается две последние картинки это завершение работы программы?
в dosbox такие у меня не вышли, такие выходили в TASM, где я делала. но они не работали

скрин
0
Миниатюры
Ошибка: "the ntvdm cpu has encountered an illegal instruction"  
ФедосеевПавел
Модератор
4305 / 2380 / 954
Регистрация: 01.02.2015
Сообщений: 7,842
07.03.2017, 20:30 20
Про отсутствие стэка: добавьте перед .code строку .stack 100h. Я забыл об этом.

В DOSBox я запускаю td.exe - turbo debugger и по шагам выполняю программу file.com (или file.exe).

Добавлено через 6 минут
У меня в пакете tasm нет такой программы TA.exe. Даже не знаю, как ею пользоваться.
Поэтому компилирую, компоную и отлаживаю действительно штатными известными компонентами пакета tasm. Компиляцию и компоновку выполняю при помощи пакетного файла.

Беда всего этого в том, что пакет tasm предназначен для чуждой операционки - DOS. Запуск программ для неё связан с теми же чудесами, что и запуск программ для Linux.
Поэтому все советы носят вероятностный характер.
0
07.03.2017, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2017, 20:30

Ошибка линковщика: "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:...


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

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

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