CLR A
清楚累加器A,此时A的内容为0
ADDC A,#00H
ADDC是带进位的加法,之前最高字节加完之后,如果有进1,则进位标志位C为1,如果没有进位,那么C为0。ADDC A,#00H,把累加器A(内容为0)和立即数0(根据语境,这里是立即数,不是地址)执行带进位加法(数和0相加,就是数本身,这里相当于A+C+0,即累加器(0)+C(即50H和53H相加后的进位,可能有进位,可能没有进位)+ 立即数0,目的就是取出进位位C的值),相加的结果是0(如果之前没有进位)或者1(如果之前有进位),相加结果放在累加器A内,后面的语句就是把A的内容存到地址00的地方去。举个16进制数的加法的例子,例如0x445566 + 0xCC22AA = 0x1107810明白了吗,最后那一句就是取出最高位的进位的,也即最高位第七位。再教你一个小知识,两个数相加,结果最多只比原来数字多一位,并且多出的这位数字不会超过1,比如9+9,最多只是18,即十位是1,不会是2到9的,在比如说99+99=198,嘿嘿。懂了吧
虽然我不用汇编写程序,但是看懂还是很容易的
/////////////////////////////////////
CLR A // A=00H
ADDC A,#00H // (A=00H)+数字00H+上次的进位C -> A
// 加后,A中就是上次的进位C了。
// A的最低位:1或0,就是C。
// 按照要求,A的最低位,要放在00H位单元
// 这个位,位于字节地址00H的最低位。
MOV RO,#00H;存放进位的地址单元 //所以,使用间接寻址方式,
MOV @R0,A进位送00H保存 //把A的最低位,送到了00H字节的最低位。
// 这个传送方法,把00H字节中的高7位,也变成了0,
// 超过了题目要求的范围,并不好。
// 这四条指令,完全可以使用下面的一条指令代替。
MOV 00H, C // 这里的00H,是位地址。
CLR A ;首先对A清零
ADDC A,#00H ;表示A中加上进位和00H的和(如进位为 1则加1+00H),此时A中存放的是进位;
MOV RO,#00H ; 把00H存放在R0中;
MOV @R0,A ;把A中的内容(进位)存放在R0中的内容所表示的地址(00H)中
经过上面几步,就把进位存放在00H中了,呵呵
个人意见,如果友不妥之处,还请见谅
这东西对我来说太渺茫了。如果你能给我10分,我还是很感激的