以下汇编代码的输出预计为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
答案 0 :(得分:6)
源的无符号二进制除累加器。如果来源 除数是一个字节值,然后AX除以src,商是 放置在AL 中,其余部分放在AH 中。如果源操作数是一个单词 值,然后DX:AX除以src,商存储在AX中 DX中的其余部分。
答案 1 :(得分:1)
DOS函数AH=02h
需要DL
寄存器中的字符代码
您的除法操作为word(AX)/byte(10) -> quot(AL)+res(AH)
,不会更改DL
。