分割后印刷有问题(8086)

时间:2014-03-03 20:10:08

标签: assembly x86-16 divide

我在分割之后在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

3 个答案:

答案 0 :(得分:1)

div cx实际上正在划分dx:ax - 您应该预先将dx归零,以获得您期望的结果。

要展开,它正在执行:(dx * 0x10000 + ax) / cx,将商存储在ax中,余数存储在dx中。如果商不适合ax,即:dx >= cx,则会引发除(溢出)错误。

答案 1 :(得分:0)

div cxdx:ax除以cx。所以你应事先清除dx

答案 2 :(得分:0)

发现问题,这是我自己的愚蠢。

没有添加第一个

    mov       ax,@data            ; establish addressability
    mov       ds,ax               ; for the data segment