我在分割之后在al中打印值时遇到问题。我不断得到一个奇怪的ascii角色,而不是像我想要的那样3。如果我把一个简单的插入电影,它打印完美。任何帮助将不胜感激。这是代码:
mov ax,32511
mov cx,10000
div cx ;divide 7eff by 2710. Result in al will be 3.
add al,'0' ;convert to ascii
mov ah,2 ;print
mov dl,al
int 21h
答案 0 :(得分:1)
div cx
实际上正在划分dx:ax
- 您应该预先将dx
归零,以获得您期望的结果。
要展开,它正在执行:(dx * 0x10000 + ax) / cx
,将商存储在ax
中,余数存储在dx
中。如果商不适合ax
,即:dx >= cx
,则会引发除(溢出)错误。
答案 1 :(得分:0)
div cx
将dx:ax
除以cx
。所以你应事先清除dx
。
答案 2 :(得分:0)
发现问题,这是我自己的愚蠢。
没有添加第一个
mov ax,@data ; establish addressability
mov ds,ax ; for the data segment