减法输出错误35-39 = 6?

时间:2013-02-25 15:09:46

标签: assembly masm x86-16

任何人都可以解释为什么这段代码给我错误的o / p

data segment
num1 db 35h
num2 db 39h
result db 00h
data ends
code segment
assume cs: code, ds: data
start:
            mov ax,data
            mov ds ,ax
            mov ax,0000h
            mov al,num1
            sub al,num2
            aas
            mov result,al
            int 03h
            code ends
end start 
end

输出:

-g

AX=FF06  BX=0000  CX=0024  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=146C  ES=145C  SS=146C  CS=146D  IP=0013   NV UP EI PL NZ AC PO CY
146D:0013 CC            INT     3
-d ds:0l10
146C:0000  35 39 06 00 00 00 00 00-00 00 00 00 00 00 00 00   59..............
-

我期待AX成为FF04。

我刚开始学习它,所以尽可能使用简单的解释。

1 个答案:

答案 0 :(得分:3)

您正在使用解压缩指令aas,该指令在解压缩的BCD 06 中提供 -4 结果,但您正在执行打包 BCD,需要打包变体das才能获得正确答案 96