对于div中的数,小弟总高不清
如db 的除法,如51/2
ah中是什么?25.5吗
al中是什么?余数1吗?
我想在计算过程中全用十进制
怎么半?就是说
向上面的例子中全部数字是十进制的
然后在ahal中也得到十进制的25.5和1
最后怎么样把ahal 中的直显示出来呢?
还有,ahal 中的默认数制是什么 ?8位?16位?还是十进制?
其实计算机内部计算只能使用二进制,
比如AH这东西,它就是8位,每位只有两种状态,假设我们定义一种状态是0,另一种状态是1,现在它的状态就是00001111,执行AH+AH得到AH的状态变为00011110。你可以认为是二进制的00001111+00001111=00011110,也可以认为是十六进制的0FH+0FH=1EH,也可以认为是十进制的15+15=30。
计算机中只可能有00001111这样的状态,不可能有十进制的状态。
所以不明白你说的计算过程中用十进制是什么意思。
另外,AH中也无法表示25.5这样的浮点数,普通浮点数在计算机中要用4字节表示,double的浮点数要用8字节表示,AH中放不下。浮点数运算需要特殊的指令。通常的除法指令51/2得到的是25和余数1。
比如AH的值是十进制的25,它的状态其实是00011001,AHAL的数制只可能是二进制,没有其它数值。有一种BCD码存放方式,其实也只是二进制的不同理解而已。
想显示Ah中的25这样,可以用以下代码:
mov al,ah
mov bl,10
div bl
add ax,3030h;转化为ASCII码
push ax
mov dl,al
mov ah,2
int 21h
pop ax
mov dl,ah
mov ah,2
int 21h
注意方法是这样的,但以上程序AH中的数超过99出错,你可以自己想想如何处理