Процессор ntvdm обнаружил недопустимую инструкцию - Assembler
Формулировка задачи:
Простая программа логических операций над битами:
Вылетает вот такая ошибка, после выполнения 33 строчки
В чем может быть проблема? Может сборка кривая? или все таки руки?)
p.s.: win xp x32 на виртуалке
model small .stack 100h ;========================================= .data A db "M" B db "a" myerr db 0 ;========================================= .code main: mov ax,@data mov ds,ax ; формирование регистра сегмента данных ds ;--------------------------------- mov al,A; mov bl,B; and al,bl; or al,bl; test al,00000100b; JZ b0; and al,11101111b; jmp b1; b0: or al,00010000b; b1: xor al,00001000b; mov bl,al ;копия исходного числа в bl shr al,4 ;AL:=0000 0111 shl bl,4 ;BL:=1001 0000 or al,bl ;AL:=1001 0111 cmp al,32; jae a0; add al,32; a0:mov dl,al; mov ah,2; int 21h; end main
Решение задачи: «Процессор ntvdm обнаружил недопустимую инструкцию»
textual
Листинг программы
.386 .model small stack 100h delay macro time local ext, iter push cx mov cx, time ext: push cx mov cx, 5000 iter: loop iter pop cx loop ext pop cx endm .data tonelow dw 2651 cnt db 0 temp dw ? .code main: mov ax ,@data mov ds ,ax mov ax ,0 go: mov al, 0B6h out 43h, al in al, 61h or al, 3 out 61h, al mov cx, 2083 musicup: mov ax, tonelow out 42h, al xchg al, ah out 42h, al add tonelow, 1 delay 1 mov dx, tonelow mov temp, dx loop musicup mov cx, 2083 musicdown: mov ax, temp out 42h, al mov al, ah out 42h, al sub temp, 1 delay 1 loop musicdown nosound: in al, 61h and al, 0FCh out 61h, al mov dx, 2651 mov tonelow, dx inc cnt cmp cnt, 5 jne go exit: mov ax, 4c00h int 21h end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д