当前位置:首页 > 单片机 > 单片机
[导读] 人工汇编出下列程序机器代码,并分析该程序段的执行功能。 CLR A MOV R2, A MOV R7, #4LOOP: 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 SJ

人工汇编出下列程序机器代码,并分析该程序段的执行功能。

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。

程序的功能,即如前所述。

;------------------


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭