您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页单片机程序分析题练习B2

单片机程序分析题练习B2

来源:华佗小知识


1.程序如下: MOV SP,#13H MOV 33H,#7FH MOV 44H,#0ABH PUSH 33H PUSH 44H POP 33H POP 44H

程序执行后,(33H)=0ABh ,(44H)=7Fh

2.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。 (1)MOV A,#48H (A)= 48H (2)ADD

A,60H

;寻址方式:

;寻址方式:

(A)= 4DH (3)ANL

A,@R0

;寻址方式:

(A)= 10H

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

MOV MOV

R1,#30H A,#H

;(R1)=30H ;(A)= H

ADD A,#47H ;(A)=ABH ,(CY)= 0 ,

(AC)= 0

DA

A

;(A)=31H ,(CY)=1 ,

(AC)=

MOV

@R1,A ;(R1)= 30H ,(30H)= 31H

此程序段完成的功能

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

5.设(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

6.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =15H MOV @R0 , #11H (20H)=11H MOV A , R2 A=20H

ADD A , 20H A=40H MOV PSW , #80H SUBB A , P0 A=10H XRL A , #45H MOV 40H , A

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

A=4BH A=21H A=42H R2=42H A=15H (40H)=15H

MOV R2 , A RET

则执行结束(R0)=36H (R2)= 42H

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

A=23H A=03H (41H)=03H A=23H

ANL A, #0F0H A=20H SWAP A

A=02H

MOV 42H, A (42H)=02H 则(41H)= 03H (42H)= 02H

9.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20H MOV A,@R0 MOV @R0,40H MOV 40H,A MOV R0,#35H

A=7FH (4BH)=20H (40H)=7FH; R0=35H

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

10.若PSW=00, 执行下列程序后,PSW的CY,AC,OV,P各位状态如何? MOV A,#0FBH A=FBH MOV PSW,#10H ADD A,#7FH

A=7AH CY=1; AC=1;OV=1; P=1;

11.程序存储器空间表格如下:

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

INC A A=02H

MOV DPTR,#2000H DPRT=2000H MOVC A,@A+DPTR A=5BH CPL A

A=A3H

MOV 30H,A (30H) =A3H SJMP $ END

执行程序后,(30H)= A3H

12.分析程序段: CLR C

清零cy指令 给A立即数

MOV A,#91H

SUBB A,61H ; A寄存器与地址(61h)的值相减 ADD A,61H ; A寄存器与地址(61h)的值相加 DA A ; BDC码调整指令 MOV 62H,A

把累加器A的值送给地址寄存器62h

(1)程序执行何种操作? 对91H做BDC码调整;

(2)若已知初值:(60H)=24H,(61H)=72H,则运行后,(62H)= 91H 。

13.设(R0)=7EH,DPTR=10FEH,片内RAM 7EH和7FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。

INC @R0 INC R0

(7E)=00H R0=7FH (7FH)=39H DPTR=10FFH DPTR=1100H DPTR=1101H

INC @R0 INC DPTR INC DPTR INC DPTR

14.设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H, (26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何? CLR C

C=0; R2=3;

A=80H A=90H A=20H

MOV R2,#3 LOOP: MOV A,@R0 ADDC A,@R1

MOV @R0,A (20H)=20H;(21H)=00H; (22H)=16H

INC R0 INC R1

R0=21H; R1=26H

DJNZ R2,LOOP JNC NEXT1

MOV @R0,#01H (23H)=01H SJMP $ NEXT: DEC R0

SJMP $

(20H)=20H 、(21H)= 00H 、(22H)=16H 、(23H)= 01H 、 CY=1 A=16H 、R0=23H 、R1=27H 。

15.MOV DPTR,#2000H (DPTR)= 2000H MOV A,#80H (A)= 80H

MOVX @DPTR,A (2000H)= 80H INC DPTR (DPTR)= 2001 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

16.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果 MOV A,10H (A)= FFH , ANL A,#01H (A)= 01H , MOV A,11H (A)= 00H , ORL A,#01H (A)= 01H , MOV A,12H (A)= FFH ,

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

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

17. 阅读程序并回答下列问题:

X DATA 50H Y DATA 51H ORG 00H JMP START

ORG 100H

START: MOV SP,#60H MOV X,#10 (50H)=10 MOV Y,#10 (51H)=10

LCALL SUB

SUB:

NOP

INC X (50H)=11 DEC

Y

(51H)=9

MOV A,Y A=9

JZ

SUBRET

LCALL SUB

SUBRET: NOP

X+10=20 Y=0;

RET

计算X和Y的值是多少?

(X)= 20 ; (Y)= 0 ;

18. 设自变量为X,存放在ARE单元,应变量Y存放在BUF单元。给程序标注注释,说明该段子程序的功能并写出该程序的函数关系式。(7分)

START: MOV DPTR,#ARE

MOVX A,@DPTR JZ SUL

JB ACC.7,NEG MOV A,#02H MOVX @DPTR,A

RET

SUL

NEG: MOV A,#0FEH SJMP 如果X=0,Y=0; 如果X<128,Y=02h; 如果X>128,Y=FEH;

;注释:把A的值传送给BUF地址中

SUL: MOV DPTR,#BUF

;注释:如果A的值大于128跳转NEG

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

20. 执行下列程序段后,(A)=___8BH____,(CY)=__0_。

MOV A,#C5H RL A

21. 下列程序段执行后,(R0)=___7EH____,(7EH)=__41H__,(7FH)=___01H____。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H 1NC @R0 1NC R0

R0=7EH (7EH)=FFH

(7EH)=40H

(7EH)=41H

R0=7FH; (7FH)=1;

1NC @R0

22. 已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。

23. 阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1

MOV @R0,A RET

24. 程序填空

1)数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。 ORG 1000H MOV R7,_____

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

LOOP:MOV A,@R0 MOV _____,A INC R0 INC R1 DJNZ R7, _____ SJMP $ END

2) RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中。

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

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

MOV R0,_____

LOOP:MOV A,@R0 ANL A,_____ MOV @R0,A INC R0 DJNZ R7,LOOP SJMP $

END 25. 程序如下

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)执行POP 10H后堆栈内容?

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

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

(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

27. 改正下列指令

MOV @R3,A MOV DPTR,A INC @R3 I DEC DPTR ADDC #30H,A

AC F0 RS1 RS0 OV F1 P

28. 设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?(8分)

MOV R0,#30H MOV A,@R0 MOV R1,A

MOV B,R1 MOV @R1,P1 MOV A,P1 MOV 40H,#20H MOV 30H,40H

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

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

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

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