余数在div操作中的位置(X86 tasm汇编程序)

时间:2013-04-24 05:21:20

标签: assembly tasm

以下汇编代码的输出预计为6,但它的结果为3.出了什么问题?

data_seg    segment 
msg1 db "hi",10,13,"$"
msg3 db 26
num db 10
data_seg    ends
code_seg    segment
assume  cs:code_seg, ds:data_seg
start:
        mov ax,data_seg                 ;init
        mov ds,ax

    loop1:
        mov ah,0
        mov al,msg3
        div num
        mov ah,02
        int 21h
    term:   
        mov ah,4ch          ;termination code                       
        mov al,0
        int 21h
code_seg    ends
end start

2 个答案:

答案 0 :(得分:6)

来自documentation

  

源的无符号二进制除累加器。如果来源   除数是一个字节值,然后AX除以src,商是   放置在AL 中,其余部分放在AH 中。如果源操作数是一个单词   值,然后DX:AX除以src,商存储在AX中   DX中的其余部分。

答案 1 :(得分:1)

DOS函数AH=02h需要DL寄存器中的字符代码 您的除法操作为word(AX)/byte(10) -> quot(AL)+res(AH),不会更改DL