您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页单片机分析程序

单片机分析程序

来源:爱够旅游网
四、分析程序并填空()

1.执行下列程序段后,(P1)=___9BH____。

MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7

2.执行下列程序段后,(A)=__8BH_____,(CY)=__不影响__。

MOV A,#C5H RL A

3.下列程序段执行后,(R0)=___7FH____,(7EH)=__00H__,(7FH)=_41H______。

MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H INC @R0 INC R0 INC @R0

4.已知(SP)=60H,子程序

SUBTRN的首地址为0345H,现执行位于0123H的ACALL

SUBTRN双字节指令后,(PC)=__0345H_,(61H)=___25H____,(62H)= __01H__。

5.阅读下列程序,说明其功能。

MOV R0,#data MOV A,@R0 RL A

MOV R1,A RL A RL A

ADD A,R1 MOV @R0,A

RET ; (data)×10操作

6.改错

1.MUL RoRl 乘法指令应使用A、B寄存器操作

2.MOV A,@R7 间接寄存器使用R7有误,间址寄存器只能使用R0、R1 3.MOV A, #3000H 8位累加器A不能接受16位数据

4.MOVC @A+DPTR,A MOVC指令为对程序存储区操作指令,累加器的内容不可通过变址方式送入程序存储器,两操作数写反了。

5.UMP #1000H 长转移指令中的操作数为16位转移地址,不能用立即数的形式来表达。

7. 说明MCS—51单片机的下列各条指令中源操作数的寻址方式(可直接在每条指令后面书

写)

1.ANL A,20H 直接寻址 2.ADDC A, #20H 立即寻址

3.JZ rel 相对寻址 4.CLR C 位寻址

5.RRA 寄存器寻址

8.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?

(5分)设(60H)=35H,((A)=19H,(R0)=30H,(30H)=0FH。

(1)MOV A,#48H ;寻址方式: 立即寻址 ((A)= 48H

(2)ADD A,60H ;寻址方式: 直接寻址 ; ((A)= 4EH

(3)ANL A,@R0 ;寻址方式: 寄存器间接寻址 ; ((A)= 09H

9.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?(15分)

MOV R1,#30H ;(R1)= 30H MOV A,#H ;((A)= H ADD A,#47H ;((A)= ABH (CY)= 0 (A(C)= 0 DA A ;((A)= 11H ,(CY)= 1 (A(C)= 1 MOV @R1,A ;(R1)= 30H ,(30H)= 11H 此程序段完成的功能:(5分)求两个BCD码数(H和47H)的和,并将结果放在内部RAM的30H单元。

10.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =

MOV @R0 , #11H MOV A , R2 ADD A , 20H MOV PSW , #80H SUBB A , P0 XRL A , #45H MOV 40H , A

答:(20H)←11H ((A)←20H ((A)←((A)+(20) (CY)=1 ((A)-(P0)-(CY)→((A)即((A)←00H ((A)+45H→((A)即((A)←45H (40H)←45H

11. 已知 ( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下:

MOV A , @R0 MOV R0 , A MOV A , @R0 ADD A , 21H ORL A , #21H RL A MOV R2 , A RET

则执行结束(R0)= (R2)= 答: ((A)←((R0)) ((A)=36H (R0)←((A) (R0)←36H ((A)←((R0)) ((A)←34H ((A)←((A)+(21H) 34H+17H=4BH ((A)←((A)21H 4BH21H=6BH ((A)←D6H (R2)←D6H

(R0)=36H (R2)=D6H

12. 执行下面一段程序;

MOV SP, #60H MOV A, #10H MOV B, #01H PUSH A PUSH B POP A POP B

A , B的内容是:(A)= (B)= 答:((A)=01H ((B)=10H

13. 设在31H单元存有#23H,执行下面程序:

MOV A, 31H ANL A, #0FH MOV 41H, A MOV A, 31H ANL A, #0F0H SWAP A

MOV 42H, A

则(41H)= (42H)=

答: (41H)=03H (42H)=02H 三.计算题(22分)

14.((A)=3BH,执行ANL A,#9EH指令后,((A)= 1AH (CY)=不受影响

15.JNZ REL为2B指令,放于1308H,转移目标地址是134AH,求偏移量REL=40H 16.若((A)=C3H,(R0)=AAH,执行ADD A,R0后,((A)= 6DH (CY)= 1

(OV)= 1 (A(C)= 0

177.若((A)=50H,((B)=A0H,执行MUL AB后,((A)=00H ((B)=32H (CY)

= 总为0 (OV)=1

18.SJMP 0E7H为2B指令,放于F010H,目标地址=EFF9H

四.阅读并分析程序(28分)

19.2506H M5:MOV SP,#58H

2509H MOV 10H,#0FH 250CH MOV 11H,#0BH

SP1SP,PC7~0SPSP1SP,PC15~8SPaddrPC10~0 250FH ACALL XHD ;PC+2PC ,

MOV 20H,11H

2514H M5A:SJMP M5A XHD:PUSH 10H PUSH 11H POP 10H POP 11H RET 问:(1)执行POP 10H后堆栈内容?(SP)=5AH (2)执行M5A:SJMP M5A后,(SP)= 58H (20H)= 0FH

20.A程序存储空间表格如下: 地址 内容 2000H 3FH 2001H 06H 2002H 5BH 2003H 4FH 。。。。。 。。。。。 已知:片内RAM的20H中为01H,执行下列程序后(30H)=5BH MOV A,20H INC A

MOV DPTR,#2000H MOVC A,@A+DPTR CPL A

MOV 30H,A SJMP $

21.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H

MOV A,@R0 MOV @R0,40H MOV 40H,A MOV R0,#35H

问执行程序后,R0= 35H A= 7FH 4BH= 20H 40H= 7FH

22.若PSW=00, 执行下列程序后,PSW的各位状态如何?

MOV A,#0FBH MOV PSW,#10H ADD A,#7FH CY AC 1 1 五.程序填空(10分)

OV 0 P 1 OF 0 RS1 1 23.数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开

始的连续32个单元。 #20H R1 LOOP ORG 1000H

MOV R7,_____

MOV R0, #30H MOV R1,#60H

LOOP:MOV A,@R0 MOV _____,A INC R0 INC R1

DJNZ R7, _____ SJMP $ END

24. 将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。41H R0

ORG 1000H

MOV R7,#04H MOV R0,30H CLR A

MOV 41H,A

LOOP: ADD A,@R0 JNC NEXT

INC _____

NEXT:INC _____

DJNZ R7,LOOP MOV 40H,A SJMP $ END

25. RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD

码的十位和个位放在累加器A中,百位放在R2中。 40H #0AH A

ORG 2200H MOV A,_____ MOV B,#H DIV AB

MOV R2,A MOV A,_____ XCH A,B DIV AB SWAP _____ ORL A,B SJMP $ END

26. 编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。 #40H ORG 1000H MOV R7,#07H

MOV R0,_____

LOOP:MOV A,@R0 ANL A,_____ MOV @R0,A INC R0

DJNZ R7,LOOP SJMP $ END

一、 程序分析题(共20分,每题10分)

27、位地址为M、N、Y,程序如下:

MOV C,M ;(M) ➞C ANL C, ;(M) MOV Y,C ;(Y)=(M) MOV C,M ;(M) ➞C ANL C,N ;(M)

ORL CY ;

#0FH

MOV Y,C

程序功能表达式:

(Y)=(M)*(/N)+(M)*(N)

28、阅读下列程序并回答问题

CLR C MOV A,#9AH SUBB A,60H ADD A,61H, DA A MOV 62H,A (1) 请问该程序执行何种操作?

(2) 已知初值:(60H)=23H,(61H)=61H,请问运行程序后:( )? 解

(1) 操作是单字节BCD码运算,是将

(61H)-(60H)➞62H

(2)(62H)=38H

29、程序如下

2506H M5: MOV SP,#58H; 2509H MOV 10H,0FH; 250CH MOV 11H,#0BH; 250FH ACALL XHD; 2511H MOV 20H,11H 2514H M5A: SJMP M5A XHD: PUSH 10H PUSH 11H

62H)=

( POP 10H POP 11H

RET

问:(1)执行POP10H后堆栈内容?

(2)执行M5A:SJMP M5A后,(SP)=? (20H)=? 解

1) 执行ACALL指令时:PC+2➞PC:

(SP)+1➞SP PC0~PC7➞(SP) (SP)+1➞SP PC8~PC15➞(SP) 2) 子程序返回时,点地址弹出,SP=58H

所以 (1)执行POP 10H后,堆栈内容如左图所示.

5C 0B 5B 0F 5A 25 59 11 58

(2)执行M5A:SJMP M5A后,(SP)=58H, (20H)=0FH

30、解读下列程序,然后填写有关寄存器内容

(1) MOV R1,#48H MOV 48H,#51H CJNE @R1,#51H,00H JNC NEXT1 MOV A,#0FFH SJMP NEXT2 NEXT: MOV A,#0AAH NEXT2: SJMP NEXT2 累加器 A=( )

(2) MOV A,#0FBH MOV PSW,#10H

ADD A,#7FH 解

(1) MOV R1,#48H ;48H 送 R1 MOV 48H,#51H ;51H送➞(48H) CJNE @R1,#51H,00H ;(R1)GN #51相比,相等,顺序执行

JNC NEXT1 ;没借位转,NEXT1 MOV A,#0FFH ;有借位,FFH送A SJMP NEXT2

NEXT1 MOV A,#0AAH ;0AAH送A NEXT2 SJMP NEXT2 累加器 A=(0AAH) (2) MOV A,#0FBH

MOV PSW,#10H 00010000送PSW ADD A,#7FH

由 11111011 + 01111111 ____________ 1 01111010

所以,有进位CY=1,C6 ♁ C7=1♁1=0,OV=0; A中有奇

数个1,P=1;

有辅助进位位AC=1

若PSW=00,当执行完上述程序段后,将PSW各位状态

填入下表:

PSW

CY 1 AC 1 F0 0 RS1 1 RS0 0 OV 0 F1 0 P 1 31、程序存储器空间表格如下:

地址 2000H 2001H 2002H 2003H ... 内容 3FH 06H 5BH 4FH ... 已知:片内RAM的20H中为01H,执行下列程序后(30H)=? MOV A,20H ;01H➞A

INC A ;01H+1=02H➞A MOV DPTR,#2000H ;2000H➞DPTR MOVC A,@A+DPTR ;(2000H+2)=5

BH➞A

CPL A ;5BH求反等于A4H MOV 30H,A ;A4H➞(30H)

END: SJMP END 答 执行程序后,(30H)=A4

32、分析程序段:

CLR C

MOV A,#91H

SUBB A,61H ;求60H内的BCD数的补数,9AH-24H=76H

ADD A,61H ;76H+72H=E8H DA A ;CY=1、A=48H MOV 62H,A

解 根据9AH=99=1的特殊性,该程序功能为单字节BCD数减法运算,即完成的是(61H)-(60H)➞(62H)。所以运行后,(62H)=48H,意即72-24=48

33、(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(4BH)=20H

MOV A,@R0 ;7FH➞A MOV @R0,40,40H ;20H➞4BH MOV 40H,A ;7FH➞40H MOV R0,#35H

问执行和程序后,R0、A和4BH、40H单元内容的变化如何?

答 程序执行后(R0)=35H,(A)7FH,(4BH)=20H,(40H)=7FH.

34、设(R0)=7EH,DPTR=10FEH,片内RAM

结果。

INC @R0 INC R0 INC @R0 INC DPTR INC DPTR INC DPTR

解 (1)(7EH)=00H (2)R0=7FH (3)7FH=39H (4)DPTR=10FFH (5)DPTR=1100H (6)DPTR=1101H

7FH和7

FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行

35、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,

(26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何? CLR C MOV R2,#3

LOOP: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP JNC NEXT1 MOV @R0,#01H SJMP $ NEXT: DEC R0

SJMP $

答 (20H)=(20H)、(21H)=00H、(22H)=17H、(23H)=01H、 CY=1、

A=17H、R0=23H、R1=28H

36、设片内RAM中(59H)=50H,执行下列程序段

MOV A,59H MOV R0,A MOV @R0,A MOV A,#25H MOV 51H,A MOV 52H,#70H

解 A=25H,(50H)=0,(51H)=25H,(52H)=70H.

37 .MOV A,#10H ((A)= 10H MOV B,A ((B)= 10H MOV A,B ((A)= 20H ADD A,B ((A)= 20H MOV 20H,A (20H)= 21H INC A ((A)= 21H MOV 21H,A (21H)= 22H INC A ((A)= 22H MOV 22H,A (22H)= 22H

38.MOV DPTR,#2000H (DPTR)= 2000H MOV A,#80H ((A)= 80H MOVX @DPTR,A (2000H)= 80H INC DPTR (DPTR)= 2001H MOV A,#90H ((A)= 90H MOVX @DPTR,A (2001H)= 90H MOV DPTR,#2000H (DPTR)= 2000H MOVX A,@DPTR ((A)= 80H MOV B,A ((B)= 80H INC DPTR (DPTR)= 2001H MOVX A,@DPTR ((A)= 90H

39、改正下列指令

MOV @R3,A MOV @R1,A MOV DPTR,A MOVX DPTR,A INC @R3 INC A DEC DPTR DEC R0 ADDC #30H,A ADDC A,#30H

40.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果

MOV A,10H (A)= 0FFH , ANL A,#01H (A)= 01H , MOV A,11H (A)= 00H , ORL A,#01H (A)= 01H , MOV A,12H (A)= FFH , XRL A,#01H (A)= 01H , MOV A,13H (A)= 00H , XRL A,#0AA (A)= 0A ,

(10H)= FFH , (11H)= 00H , (12H)= FFH , (13H)= 00H

41.MOV SP,#60H

MOV A,#01H (A)= 01H , MOV B,#02H (B)= 02H , PUSH A (SP)= 61H , PUSH B (SP)= 62H , POP A

POP B (60H)= 01H ,

42.改正下列指令

MOV A,DPTR MOVX A,@DPTR MOV DPTR,10H MOV A,10H MOV DPTR,40H MOV A,40H MOVX 40H,#30H MOV 40H,#30H ADD 20H,#10H ADD A,#10H

43.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果

MOV A,10H (A)= 0FFH , ANL A,#01H (A)= 01H , MOV A,11H (A)= 00H , ORL A,#01H (A)= 01H , MOV A,12H (A)= FFH ,

XRL A,#01H (A)= 01H , MOV A,13H (A)= 00H , XRL A,#0AA (A)= 0A ,

(10H)= FFH , (11H)= 00H , (12H)= FFH , (13H)= 00H

44.MOV 30H,#60H

MOV R0,#60H MOV A,30H MOV B,A MOV @R0,B

(A)= ,(R0)= ,(B)= ,

45.MOV SP,#60H

MOV A,#01H (A)= 01H , MOV B,#02H (B)= 02H , PUSH A (SP)= 61H , PUSH B (SP)= 62H , POP A

POP B (60H)= 01H ,

46.改正下列指令

MOV A,DPTR MOVX A,@DPTR MOV DPTR,10H MOV A,10H MOV DPTR,40H MOV A,40H MOVX 40H,#30H MOV 40H,#30H ADD 20H,#10H ADD A,#10H

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务