得到"错误的解决"尝试将十六进制转换为ascii时出错

时间:2016-11-10 11:25:29

标签: assembly emu8086

我是这种语言的新手,并试图熟悉它。在这个例子中,我得到了一个"错误的寻址" 错误,但它有什么问题?

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

这是我的错误:

enter image description here

1 个答案:

答案 0 :(得分:3)

尽管它似乎在抱怨寻址模式,但看起来它实际上并不喜欢这条线:

push ax bx cx dx si di bp es

这实际上不是一个有效的8086操作(pushpop操作码需要一个寄存器)所以,除非你有一个足够聪明的汇编程序将其分解为个别说明,你必须自己做:

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