第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)

1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?

(1)MOV A,#19H

ADD A,#66H

(2)MOV A,#5AH

ADD A,#6BH

2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?

(1)ADDC A,R0, (2)ADDC A,31H

(3) ADDC A,@R0, (4) ADDC A,#85H

3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。

4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?

CLR C

MOV A,#52H

SUBB A,#0B4H

5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?

(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R1

6.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。

7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。

8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?

(1)MOV A, #0FFH ANL A, R0

(2)MOV A, #0FH ANL A, 30H

(3)MOV A, #0F0H ANL A, @R0

(4)MOV A, #80H ANL 30H, A

9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。

10.已知外部RAM30H中有一数AAH令高四位不变,低四位取反,试编出相应的程序。

11.已知:30H单元有一正数X,试编写求(-X)补码的程序。

12.如图所示,若X,Y,Z三个输入信号放在X,Y,Z三个单元中,试编写模拟电路功能的程序,并把电路输出送到F单元。

13.已知M1和M1+1有一个16位的二进制数,低8位存放在M1,高8位存放在M1+1,编程令其扩大一倍。

14. 已知M1和M1+1有两个BCD数,试编程把他们紧缩成一个字节并存放在M1单元。

15.已知某单片机的监控程序初始地址为A080H,采用什么方法使开机后自动执行监控程序。

16.确定指令执行后的PC值,及该指令的机器码:

KWM:AJMP addr11

其中:KWM为3100H,addr11=

17.有如下程序,请计算SJMP START 指令中rel值,并分析目标地址的转移范围。

ORG 1000H

1000H 7401H START: MOV A, #01H

1002H F8H MOV R0,A

1003H 90CF01H LOOP:MOV DPTR ,#0CF01H

………

1017H 80 rel SJMP START

………

END

18.已知累加器A中存放带处理命令的编号0~4,程序存储器中有初始地址为PMTB三字节长转移指令表,试编写程序使单片机能根据A中的命令编号转去执行相应的命令程序。PMTB三字节长转移指令表如下:

PMTB:LJMP PM0

LJMP PM1

LJMP PM2

LJMP PM3

LJMP PM4

19.已知:外部RAM中以DA TA1为初始地址的数据块以0为结束标志,试编写程序把他们转移到DATA2为初始地址的内部RAM中。

20.试编一个程序,把片内RAM中以DATA为初始地址的数据块中的十个数相加,并把和放在SUM单元中。设相加的结果不超过8为二进制数表示的范围。

21.设ACALL addr11指令在程序中的初始地址为1FFFH,堆栈指针SP为60H,试画出指令执行后的堆栈示意图,并确定被调用子程序的合法范围。

22.已知:MA=0500H,试问8031执行如下指令

MOV SP,#70H

MA:LCALL 8192H

堆栈中数据如何变化?PC中内容是什么?

23.试利用子程序技术编出令20H-2AH,30H-3EH三个子域清零的程序。

24.试编程把00H位中内容和7FH位中内容相交换。

25.设M、N和W都代表位地址,试编程完成M、N中内容的异或操作。

26.已知:内部RAM的M1,M2单元中各有一个无符号8位二进制数,试编程比较它们的大小,并把大数送到MAX单元。

27.已知:20H中有一无符号数X,若它小于50,则转向LOOP1执行;若它等于50,则转向LOOP2执行;若它大于50,则转向LOOP3执行,试编出相应程序。

28.已知外部RAM的2000H开始有一个输入数据缓冲区,该缓冲区中数据以回车符CR (ASCII码为0DH)为结束标志,试编一个程序能把正数送入30H(片内RAM)开始的正数区和把负数送入40H开始的负数区。

29.若已知A=76H,PSW=81H,转移指令所在地址位2080H,当执行下列指令后程序是否发生转移?PC值为多少?

(1)JNZ 12H

(2)JNC 34H

(3)JB P,56H

(4)JBC AC,78H

(5)CJNE A,#50,9AH

(6)DJNZ PSW,0BCH

30.指出下列那些指令不存在,并改用其他指令完成预期的功能。

(1)MOV 20H,30H

(2)MOV R1,R2

(3)MOV @R3,20H

(4)MOV DPH,30H

(5)MOV C,PSW.1

(6)MOV SMOD,C

(7)MOVX R2,@DPTR

(8)PUSH 20H

(9)POP R0

(10)XCH R1,R2

31.以下两段程序中,R2为两位16进制数,试问这两段程序各执行多少次循环?

(1). MOV R2,#60H

LOOP: ……

……

DJNZ R2,LOOP

SJMP $

(2). MOV R2,#60H

LOOP: ……

……

MOV A,R2

ADD A,#99H

DA A

MOV R2,A

JNZ LOOP

SJMP $

32.用循环指令将内部RAM的20H,21H,22H三个连续单元的内容依次放到2FH,2EH,2DH 单元。

33.编写程序,若累加器A中的内容分别满足下列条件时,程序转移到LABEL处。设A中存放无符号数。

(1)A>=10

(2)A>10

(3)A<=10

(4)A<10

相关文档
最新文档