人工匯編出下列程序機(jī)器代碼,并分析該程序段的執(zhí)行功能。
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 $
;-------------------
問題補(bǔ)充:問 做而論道:
為什么是把 R1的高4位,移入R2的低4位? 而不是 R2中的數(shù),也左移4位,右邊填入4個0?
還有哪兒看出來是16位數(shù)???
;==================================
最佳答案:
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位數(shù),左移4位,右邊填入4個0,R1的高4位,移入R2的低4位。
;-----------------
對補(bǔ)充提問的回答:
程序中,參與向左移位的是R2R1R0,共有24位數(shù)字。
但是,在你的程序中,事先已經(jīng)將R2清零,所以實(shí)際被移動的只有R1R0中的16位數(shù)字。
在你的程序前面,我加上了兩行,使得R1 R0=34 12H;
程序執(zhí)行后,R2 R1 R0=03 41 20H。
程序的功能,即如前所述。
;------------------