其余部分以div运算(X86 tasm汇编程序)
问题描述:
下面的汇编代码的输出预计为6,但它是以3.出现了什么问题?其余部分以div运算(X86 tasm汇编程序)
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
答
无符号二进制由源累加器的分裂。如果来源 除数是一个字节值,那么AX除以src,并且商是 放置在AL 中,剩余部分在AH中。如果源操作数是一个字 值,则DX:AX除以src,商存储在AX 中,其余部分存储在DX中。
+0
谢谢..它解决了 – manoj 2013-04-24 05:51:58
答
DOS功能AH=02h
预计DL
寄存器字符代码。
您的分部操作是word(AX)/byte(10) -> quot(AL)+res(AH)
并且不会更改DL
。
感叹......看看div有什么分歧。在你的情况下,其余的是在'啊'...所以你及时打破它。 'mov dl,啊'可能会让你失望。 – 2013-04-24 05:41:12
噢,如果你希望看到一个数字,'add dl,'0'... ... – 2013-04-24 05:43:53
剩下的就是啊,而不是dl。刚刚检查 – manoj 2013-04-24 05:51:01