我是这种语言的新手,并试图熟悉它。在这个例子中,我得到了一个"错误的寻址" 错误,但它有什么问题?
hextoasc proc near ; AX input, si point result storage address
push ax bx cx dx si di bp es
mov cx,00h
mov bx,0ah
hexloop1:
mov dx,0
div bx
add dl,'0'
push dx
inc cx
cmp ax, 0ah
jge hexloop1
add al, '0'
mov [si], al
hexloop2:
pop ax
inc si
mov [si], al
loop hexloop2
inc si
mov al, '$'
mov [si], al
pop es bp di si dx cx bx ax
ret
endp
这是我的错误:
答案 0 :(得分:3)
尽管它似乎在抱怨寻址模式,但看起来它实际上并不喜欢这条线:
push ax bx cx dx si di bp es
这实际上不是一个有效的8086操作(push
和pop
操作码需要一个寄存器)所以,除非你有一个足够聪明的汇编程序将其分解为个别说明,你必须自己做:
push ax
push bx
push cx
push dx
push si
push di
push bp
push es
; all your other code goes here.
pop es
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax