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

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

07.03.2017, 14:34. Просмотров 3424. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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...

Ошибка "ntvdm cpu has encountered an illegal instruction"
Вот эта ошибка 16 bit ms-dos subsystem the ntvdm cpu has encountered an illegal instruction...

Ошибка the ntvdm cpu has encountered an illegal instruction
какая ошибка the ntvdm cpu has encountered an illegal instruction помогите.....

41
1535 / 774 / 139
Регистрация: 13.06.2015
Сообщений: 2,782
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
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 15:54  [ТС] 3
Как же тогда будет правильный код программы?
Просто я запускала TASM далее компилировала без ошибок выдает, а как только запуск делаю уже пишет ошибку
0
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
07.03.2017, 16:40 4
Покажите командную строку компиляции tasm и tlink.
0
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"  
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
07.03.2017, 17:46 6
Вставляйте картинки, вместо word'ов.

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

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

Добавлено через 1 минуту
В какой Windows работаете (Win7x64, или WinXPx32, или иное)?
0
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"  
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:12  [ТС] 12
Даны два числа в двоичном виде. Поменять местами 8.5.3.2 - разряды первого числа с 0.1.6.7 с разрядами второго числа сооответствено . результат сложить и умножить на 4.
Вот по этой задаче составляла код, если это важно
0
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
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
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:28  [ТС] 14
выходит все та же ошибка, я уже не знаю что делать, может не понимаю что то, т.к. только недавно начала пользоваться. делала вместе с преподавателем, и все равно, а курсовую уже скоро сдавать((
0
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
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
0 / 0 / 0
Регистрация: 07.03.2017
Сообщений: 23
07.03.2017, 18:42  [ТС] 16
да. выдает ошибку

Добавлено через 2 минуты
заменила и таже самая ошибка, может я что то не то делаю. компилирует он без ошибок, но запускает прогу с ошибкой
0
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
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
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
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"  

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"  
Модератор
6683 / 3260 / 1308
Регистрация: 01.02.2015
Сообщений: 10,339
Записей в блоге: 1
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2017, 20:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

The NTVDM CPU has encountered an illegal instruction
Вообщем, зарегистрировался на вашем форуме только ради того, чтобы вы помогли. Очень на вас...

The NTVDM CPU has encountered an illegal instruction
Вообщем, зарегистрировался на вашем форуме только ради того, чтобы вы помогли. Очень на вас...

The ntvdm cpu has encountered an illegal instruction
Здравствуйте. Вторую неделю при загрузке ОС выскакивает такое вот сообщение: the ntvdm cpu has...

The NTVDM CPU has encountered an illegal instruction
Знающим прошу откликнуться. При запуске винды стала выскакивать супостатская ерундовина:...


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

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

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