英特尔8086部门。需要AX为分母而不是分子

时间:2017-05-02 12:49:04

标签: intel x86-16 dos

需要将CL除以10.我明白在除法AX中将永远是分子,但我需要它作为分母。
在下面的代码中,我尝试将我需要的值作为分子移动到AL,然后将10放入CL并除以。
任何帮助,将不胜感激。

            Mov Al, Cl
            Mov Cl, 10 
            Div Cl

1 个答案:

答案 0 :(得分:2)

  

需要将Cl除以10

那么你需要在CL寄存器中找回商。

  • 您的更正解决方案(10个字节):

    mov al, cl
    xor ah, ah     ;Clear high byte because DIV will use the entire AX
    mov cl, 10
    div cl         ;Divides AX by 10, leaves quotient in AL
    mov cl,al
    
  • 更短的解决方案(6个字节):

    mov al, cl
    aam            ;Divides AL by 10, leaves quotient in AH
    mov cl, ah
    

    上,AAM指令专门除以10 在 AAM指令可以除以任何字节大小的数字 所以这个AAM指令实际上是8位×8位除法!

  

有没有办法将寄存器除以10?

所有分部都隐式使用累加器(ALAXDX:AX)。只需先将寄存器复制到累加器即可。