AL寄存器存放了一个十六进制数,它的范围在00H-FFH。
我现在希望能有一个算法,能够将它转换成十进制,并显示在屏幕上。(最好能用 MOV AH, 02H INT 21H这个来显示)
比如,AL中存放的是30H,则输出048,或者就48也行。AL中放的是70H,则输出112。
00h-09h的算法很好实现,自己已经解决。
但是一旦转换出来的十进制数超过2位,这个算法就困难了,数学不好,看着ASCII码看了半天,归纳了很久没找到规律。。。求大神指教。
初识汇编,较关键的地方希望能多给点注释,感激不尽。
------解决方案--------------------
xor dx,dx 就是将 dx 置 0 ;由于要保证除以 10 时不溢出,所以用的是 div cx(=10),这样就是 dx:ax 组成的 dword 除以 cx,而 ax 里是原来的被除数,所以就要将 dx 置 0 了,否则有了其它内容的话,就会产生错误的结果。
test ax,ax 就是看商是否为 0;如果 为 0 了说明除法操作该结束了。