一、写出每条汇编指令执行后寄存器的直
mov ax,62627;AX=62627=F4A3H;数制转换,将十进制转换成十六进制
mov ah,31H;仅将AX的高8位AH变为31H,而低8位AL不变,是上一步的值A3H,所以合在一起AX=31A3H
mov al,23H;将AL赋新值23H,AH保持上一步的31H,所以AX=3123H
说明:
1、AX分成两个8位寄存器AH(高8位)和AL(低8位)
2、这三条指令是连续的,下一条指令用到上一条指令的结果
二、计算2的4次方
mov ax,2;AX初值为2
add ax,ax ;AX自身加自身,即2加2等于4,相当于2的平方,又存入AX
add ax,ax ;AX自身加自身,即4加4等于8,相当于3的平方,又存入AX
add ax,ax ;AX自身加自身,即8加8等于16,相当于4的平方,又存入AX
1、ax是16位的,它的内部又被分为2个部分,ah是高8位,al是低8位,ah和al都是ax的一部分,改变al或ah的话,ax当然会改变咯。
只有计算2的n次方可以这样做,因为你想嘛,2的n次方等于n个2相乘,而a * 2 == a + a,所以呢,只要执行一次mov ax, 2,相当于计算出2的1次方,然后往下数:
add ax,ax ; 2^2 = 2 * 2 = 2 + 2 = 4
add ax,ax ; 2^3 = 4 * 2 = 4 + 4 = 8
add ax,ax ; 2^4 = 8 * 2 = 8 + 8 = 16
1。ah就是ax的高8位,al就是ax的低8位。
2。可以理解为
x=2
x=x+x
x=x+x
x=x+x