您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页单片机程序分析(绝对经典)

单片机程序分析(绝对经典)

来源:欧得旅游网


一、读程序题(每小题4分,共20分)

1.执行下列程序段后,(P1)=_______。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7

2.执行下列程序段后,(A)=_______,(CY)=____。 MOV A,#C5H RL A

3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H 1NC @R0 1NC R0 1NC @R0

4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A

MOV R1,A RL A RL A

ADD A,R1 MOV @R0,A RET

读程序题(每小题4分,共20分) 1.(P1)=9BH

2.(A)=8BH(或10001011B) (CY)=不影响 3.(R0)=7FH (7EH)=00H (7FH)=41H 4.(PC)=0345H (61H)=25H (62H)=01H 5.(data)×10操作

二、使用简单指令序列完成以下操作(12分) 1.请将片外RAM20H—25H单元清零 2.请将ROM3000H单元内容送R7

使用简单指令序列完成以下操作(12分,每小题6分) 1. MOV R0,#20H MOV R7,#06H

1

CLR A

LOOP:MOVX @R0,A INC R0

DJNZ R7,LOOP 2.MOV DPTR,#3000H CLR A

MOVC A,@A+DPTR

MOV R7,A

三、使用简单指令序列完成以下操作(12分) 1、将20H单元清零 MOV 20H,#00H 或 CLR A MOV 20H, A

2、将片外RAM2000H中的低字节与片内20H中的低字节交换。 MOV DPTR,#2000H XCHD A,@R0

MOV R0,#20H MOVX @DPTR,A MOVX @DPTR,A

3、已知某端口地址为2FFFH,将片内RAM20H的内容写到该端口中。 MOV A, 20H

MOVX DPTR, #2FFFH MOVX @DPTR, A

4、把DPTR的内容压入堆栈 PUSH DPH PUSH DPL

四、读程序(每小题5分,共10分)

1、设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)= 0E7H ORL A,#27H ANL A,28H XCHD A,@R0 CPL A

2、设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。 SETB C

ADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1 RLC A (A)= 04H (CY)= 1 (P)= 1

MUL AB (A)= 08H (B)= 00H (OV)= 0 五、分析程序并写出结果:(共4题,每题5分)

已知(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

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

2

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

则执行结束(R0)= (R2)= 3. 执行下面一段程序;

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

A , B的内容是:(A)= (B)=

4. 设在31H单元存有#23H,执行下面程序: MOV A, 31H ANL A, #0FH MOV 41H, A MOV A, 31H ANL A, #0F0H SWAP A

MOV 42H, A

则(41H)= (42H)= 分析程序并写出结果。 1.(20H)←11H (A)←20H

(A)←(A)+(20) (CY)=1

(A)-(P0)-(CY)→(A)即(A)←00H (A)+45H→(A)即(A)←45H (40H)←45H 2.(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 3.(A)=01H (B)=10H

4. (41H)=03H (42H)=02H 五、程序分析题(共20分,每题10分) 1、位地址为M、N、Y,程序如下:

3

MOV C,M ;(M) ➞C ANL C, ;(M) MOV Y,C ;(Y)=(M) MOV C,M ;(M) ➞C ANL C,N ;(M) ORL CY ; MOV Y,C 程序功能表达式:

(Y)=(M)*(/N)+(M)*(N) 2、阅读下列程序并回答问题 CLR C

MOV A,#9AH SUBB A,60H ADD A,61H, DA A MOV 62H,A 请问该程序执行何种操作? 已知初值:(60H)=23H,(61H)=61H,请问运行程序后:(62H)=( 解

操作是单字节BCD码运算,是将 (61H)-(60H)➞62H (2)(62H)=38H

六、程序分析题(共20分,每题10分) 1、程序如下

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 POP 10H POP 11H RET 问:(1)执行POP10H后堆栈内容? (2)执行M5A:SJMP M5A后,(SP)=? (20H)=?解

执行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

4

)?

5A 25 59 11 58

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

2、解读下列程序,然后填写有关寄存器内容 (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

若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表: PSW CY AC F0 RS1 RS0 OV F1 P 1 1 0 1 0 0 0 1 (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 AC F0 RS1 RS0 OV F1 P 1 1 0 1 0 0 0 1

5

七、读程序***

1.执行下列程序段中第一条指令后,(1)(P1.7)=__0__ (P1.3)=__0___, (P1.2)=_____0____;执行第二条指令后,(2)(P1.5)=____1_____,(P1.4)=____1_____,(P1.3)=____1_____。 ANL P1,#73H ORL P1,#38H

2.下列程序段执行后,(A)=__0DH(或13)_____,(B)=_11H(或17)_______。 MOV A,#0FBH MOV B,#12H DIV AB

3.下列程序段执行后,(R0)=_7EH___,(7EH)=__FFH__,(7FH)=___3FH___。 MOV R0,#7FH MOV 7EH,#0 MOV 7FH,#40H DEC @R0 DEC R0 DEC @R0

4.已知(SP)=09H,(DPTR)=4567H,在执行下列指令后,(SP)=__0BH_______,内部RAM(0AH)=__67H_______,(0BH)=___45H______ PUSH DPL PUSH DPH

5.下列程序中注释的数字为执行该指令所需的机器周期数,若单片机的晶振频率为6MHz,问执行下列程序需要多少时间?

MOV R3,#100;1 LOOP:NOP ;1 NOP NOP

DJNZ R3,LOOP ;2 RET ; 2 答:一个机器周期为2μs

执行程序所需时间T=2μs*(5*100+3)=1006μs1ms

6.试阅读下面的程序,指出该程序结束后累加器ACC和寄存器TH0的值,并说明该程序完成了怎样的功能。 ORG 0000H MOV SP,#60H MOV A,#10H MOV TH0,#20H PUSH ACC PUSH TH0 POP ACC POP TH0

END 答:利用堆栈交换了ACC和TH0的内容,(A)=20H,(TH0)=10H

6

7.程序段如下,试说明其功能。 MOV R0,#50H MOV R1,#60H MOV A,@R0 ADD A,@R1 MOV @R0,A INC R0 INC R1

MOV A,@R0 ADDC A,@R1 MOV @R0,A MOV 00H,C

答:双字节无符号数加法。被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。

8、已知A = 0F8H,当执行ADD A,#0A9H指令后,PSW中的OV、CY、AC、P各为多少?若是有符号数,A中的结果用十进制表示是多少? 答: OV:0、CY:1、AC:1、P:1 A:-95

9、试问下列程序执行后累加器A和PSW中内容是什么? MOV A, #92H ADD A, #0A4H

答:A=36H ; PSW=84H

7

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

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

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

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