Процессор ntvdm обнаружил недопустимую инструкцию - Assembler

Узнай цену своей работы

Формулировка задачи:

Простая программа логических операций над битами:
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
Вылетает вот такая ошибка, после выполнения 33 строчки В чем может быть проблема? Может сборка кривая? или все таки руки?) p.s.: win xp x32 на виртуалке

Решение задачи: «Процессор 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы