您的位置:首页 > 其它

汇编语言程序分析-51单片机

2016-01-25 11:34 197 查看
人工汇编出下列程序机器代码,并分析该程序段的执行功能。
悬赏分:10 - 解决时间:2009-10-8 13:19
      CLR A
      MOV R2, A
      MOV R7, #4
LOOP:
     CLR C
      MOV A, R0
      RLC A
      MOV R0, A
      MOV A, R1
      RLC A
      MOV R1, A
      MOV A, R2
      RLC A
      MOV R2, A
      DJNZ R7, LOOP
      SJMP $
;-------------------
问题补充:问 做而论道:
为什么是把 R1的高4位,移入R2的低4位? 而不是 R2中的数,也左移4位,右边填入4个0?
还有哪儿看出来是16位数???
;==================================
最佳答案:
0000 7812    MOV   R0, #12H
0002 7934    MOV   R1, #34H
0004 E4      CLR   A
0005 FA      MOV   R2, A
0006 7F04    MOV   R7, #04H
0008 C3      CLR   C
0009 E8      MOV   A, R0
000A 33      RLC   A
000B F8      MOV   R0, A
000C E9      MOV   A, R1
000D 33      RLC   A
000E F9      MOV   R1, A
000F EA      MOV   A, R2
0010 33      RLC   A
0011 FA      MOV   R2, A
0012 DFF4    DJNZ R7, 0008H
0014 80FE    SJMP $
;-----------------
程序功能:将R1R0中的16位数,左移4位,右边填入4个0,R1的高4位,移入R2的低4位。
;-----------------
对补充提问的回答:
程序中,参与向左移位的是R2R1R0,共有24位数字。
但是,在你的程序中,事先已经将R2清零,所以实际被移动的只有R1R0中的16位数字。
在你的程序前面,我加上了两行,使得R1 R0=34 12H;
程序执行后,R2 R1 R0=03 41 20H。
程序的功能,即如前所述。
;------------------
回答者: 做而论道 - 七级   2009-10-8 06:38
提问者对于答案的评价:嗯,谢谢了,再给你加10分吧,咱分不太多,呵呵~~~
原文网址:http://zhidao.baidu.com/question/120423261.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: