个、十、百位指的是十进制数的数位。十进制数字在计算机中是以二进制形式存储的,如十进制数字12,在计算机中的表示就是(以字节为例)0000 1100B,十六进制表示就是0CH,现在我们要把这种计算机中的表示转化成十进制表示形式,即表示成0001 0010B,十六进制就是12h。前面所讲个、十、百位是指转换过程中分离出来的数位值。下面是具体的示例:
……
mov
ax,0C
;要转化的数字
mov
bl,0A
;10作为除数存储在寄存器bl中
div
bl
;ax中的数值作为被除数除以bl中存放的除数10,商1(即分离出来的十位上的数字)存放在al中,余数2(即分离出来的个位上的数字)存放在
;ah中
mov
cl,4
shl
al,cl
mov
[45],al
;以上3步将存放在al中的商(分离出来的十位上的数字)左移4位,以便存放在[45h]单元的高4位
or
[45],ah
;将存放在ah中的余数(分离出来的个位上的数字)存放入[45h]单元的低4位
……
以上代码中的内存寻址采用的是立即寻址,没有段前缀,只能在DEBUG环境下使用,并且DEBUG环境下默认都是十六进制,所以十六进制数45后面不需要加H。
[
本帖最后由 取名字 于 2015-5-2 15:55 编辑 ]