|
发表于 2012-4-11 08:36:27
|
显示全部楼层
这样哦,我从头和你说啊!
首先你要知道ax,bx,cx,dx是4个通用寄存器,这些在8086计算机下是都16个字节
每一个通用寄存器都可以被分为2个部分,(我们以ax举例来说)这两个部分分别为 高字节(ah),低字节(al),
这两个高低字节分别可以存储8个字节,你看他们两个加在一起不就是16字节了吗,正好ax也是个16字节的寄存器!
好,下面就要说一下存储问题了,当然了我们为了存储一个16自己的数据,可以把这个16字节的数据分开存储,分为2个8字节,例如检测点2.1里面第一行的,62627(十进制)转化为十六进制是F4A3,如果把它分开的话就是F4(高字节为),A3(低字节),也许你会问我,我怎么知道哪里是高字节哪里是低字节呢,
好,现在我告诉你啊,一个16字节数据以16进制体现最多就是4个字母或者数字,比如 1234(十六进制),这里呢,咱们从右往左数,自然最后两个34就是低字节,前面两个12就是高字节!现在估计你有了一点眉目了吧,好了下面开始做题
首先 mov ax,62627 ax= F4A3 (62627转化为16进制就是f4a3) ,意思是把,f4a3放到ax里面
mov ah,31H ax=31A3 (你看啊,F4A3里面的高字节为自然是F4了,这行的意思是把31放到ax寄存器的高字节为,所以我们用31代替了F4)
mov al,23H ax=3123(道理一样啊,F4A3的低字节al是A3,所以这里我们mov 23到A3的位置替换了它)
add ax,ax ax=6246(这里很简单,就是把ax加一遍)
mov bx,826CH bx=826C(这里也不用说了,就是把826C放到bx中)
mov cx,ax cx=6246(这里就是把ax的值6246放到cx中)
mov ax,bx ax = 826C(同样把bx的值826c放到ax中)
add ax,bx ax=04D8(这里要强调一下,本来的意思是使bx和ax相加求ax的值,其结果为104D8, 但是ax是16位的寄存器,前面我说了16为寄存器最多也就存放4个十六进制的数值,但是这里的结果多了一位,所以按照计算机的习惯,把最前面的一位(也就是1)去掉了,得到最后的结果04D8)
mov al,bh ax=0482(这里是把bx寄存器里面的bh(高字节位)放到ax的al(低字节位中),bh=82,al=D8,这里我们用82替换了D8,ax的ah(高字节为不变,依然是04),所以最终结果是0482!
好了如果上面的内容你都看懂了,下面的几行计算我就不给你打出来了,正好留给你自己去演练一下!
希望可以帮到你! |
|