单片机,高分求计算的详细过程,问题截止于下午3点前。

MOV A,61H ;F2H→A

MOV B,#02H ;02H→B

MUL AB ;F2H×O2H=E4H→A

ADD
A,62H ;积的低8位加上CCH→A

MOV 63H,A ;结果送62H

CLR A ;清A

ADDC A,B ;积的高8位加进位位→A

MOV 64H,A ;结果送64H

功能:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8位放在64H单元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H

望采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-06
  MOV A,61H ;F2H→A 这句意思是将61H里面的数据放到累加器A里面去相当于C语言的
; A = *(61H);

MOV B,#02H ;02H→B 这句是把立即数0X02 存到寄存器B 跟c语言的B = 0X02;意思一样

MUL AB ;F2H×O2H=E4H→A 这句就是累加器A与寄存器B相乘,结果的低八位放 ; 在A里面,高八位放在B,此时B的值是0x01,A的值是0XE4;
ADD A,62H ;积的低8位加上CCH→A这句是将0XE4+0XCC = 0X1B0,而A是8位累器, ; 结果将溢出 A = 0XB0
MOV 63H,A ;结果送62H 和C语言的*(62H)= A ;一样

CLR A ;清A 是将累加器清零

ADDC A,B ;积的高8位加进位位→A ADDC指令是寄存器B与累加器A求和,带进位
;结果等于 A = B+A = 0X01+0X00;

MOV 64H,A ;结果送64H Z这句与C语言的*(64H) = A;意思一样
第2个回答  2014-06-06
前提是(61H)=F2H,(62H)=CCH
MOV A,61H ;(61H)→A 因为(61H)=F2H 或者 F2H→A 所以 A=F2H
MOV B,#02H ;02H→B 立即数 B=02H
MUL AB ;乘法 A x B (F2H×O2H=E4H→A 01H→B) A=E4H 低位 B=01H 高位
ADD A,62H ;积的低8位加上(62H) E4H+CCH→A A=B0H C=1 (C进位标志)
MOV 63H,A ;结果送63H (63H)=B0H
CLR A ;清A A=00H
ADDC A,B ;乘积的高8位(B)+(A)+ C →A, 01H+00H+1=02H, A=02H
MOV 64H,A ;结果送64H, (64H)=02H

功能:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8位放在64H单元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H追问

十分感谢你的回答!您能否解释一下MUL AB ;乘法 A x B (F2H×O2H=E4H→A 01H→B) A=E4H 低位 B=01H 高位。我算出来也是E4H,但是不知道如何分配A和B的值,这里怎么把01H给B了?

追答

MUL AB ;乘法的结果是将低8位(二进制)存放在累加器A中,高8位存放在B中,
这里的低8位=E4H,高8位=01H,这是单片机硬件设计决定的。

第3个回答  2014-06-06
你的问题不就是答案么,都不知道你还在问什么?加个详细一点的注解吧。

MOV A,61H ;地址61H内的值送入累加器A内

MOV B,#02H ;立即数02H送入寄存器B内

MUL AB ;A和B相乘,高8位存在B内,低8位存在A内

ADD A,62H ;积的低8位加上地址62H内的值,存到累加器A

MOV 63H,A ;A内的值存入地址62H

CLR A ;A值清零

ADDC A,B ;积的高8位也就是B内的值加进位位,存入累加器A

MOV 64H,A ;累加器A内的值存入地址送64H内。
相似回答