好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

第三章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=10110100101

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中以DATA1为初始地址的数据块以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

第三章MCS51单片机的指令系统和汇编语言程序示例(第8~15节)

1.设在内部RAM的BLOCK单元有一无符号数数据块的长度,无符号数数据块的始址是BLOCK+1,试编程求无符号数数据块中数据的累加和(不考虑进位位的加法之和),并把结果存入SUM单元。编程后请人工汇编成相应的目标代码。

2.请编出能把20H单元的两个BCD数变换成相应的ASCII码放在21H(高位BCD数的ASCII码)和22H(低位BCD数的ASCII码)单元的程序。

3.已知一个16位二进制负数(补码形式)的低8位在NUM单元和高8位在NUM+1单元,试编程求该数的绝对值。 4.已知20H单元有一个二进制数,请编程把它转换成3位BCD数,把百位BCD数送入FRIST单元的低四位,个位BCD数送入SECOND单元的低四位,十位BCD数送入SECOND单元的高四位。

5.已知VAR单元有一个自变量X,请编程求出下列条件下的Y值,并将它存入FUNC单元。

?1 X?0?Y??0 X?0

??1 X?0?6.N=128的分支程序。已知R3中的值为00H~7FH中的一个,请编出根据R3的值转移到相应分支程序去的程序。

7.已知两个有符号数分别存在ONE和TWO单元,编程比较他们的大小,并把大数存入MAX单元。

8.某系有200名学生参加外语考试,若成绩已经存放在8031外部RAM始址为ENGLISH的连续的单元,现决定给成绩在95~100分之间的学生颁发A级合格证书,成绩在90~94分之间的学生颁发B级合格证书。试编一个程序可以统计A级和B级证书的人数,并把统计结果存入内部RAM的GRADA和GRADB单元。

9.已知内部RAM从BLOCK单元开始有一个无符号的数据块,块长在LEN单元,试编程求出各数的累加和并存入SUM单元。

10.已知内部RAM单元以ADDR为始址的数据块是无符号数,块长在LEN单元,试编程求出各数的最大值并存入MAX单元。

11.设有10组三字节被加数和加数,分别存放在BLOCK1和BLOCK2为始址的单元,请编程求出10组数的和(设和仍为3字节),并把和送回BLOCK1为始址的数据块中。 12.设单片机8031内部RAM始址为30H的数据块中有64个无符号数,试编程使他们按从小到大的顺序排列。

13.已知R0的低四位有一个16进制数(0~F),试编程将他转化成相应的ASCII码,并送入R0的程序。

14.已知BLOCK1为始址的数据块(数据块的长度在LEN单元),数据块中每个存储单元的高,低四位分别是两个16进制数,试编程将他们转换成相应的ASCII码,并放在BLOCK2为始址的连续存储单元(低四位ASCCII码在前,高四位ASCCII码在后)。

15.设有一个始址为DTATAB的数据表格,表中存放1024个元素,每个元素为

2个字节。试编出能根据R5,R4中的元素序号查找对应的元素并放在R5,R4(R5中为高8位,R4中为低8位)的程序。

16.设MDA和MDB那有两个数a和b,请编出求c=a2+b2,并把c送入MDC的程序。设a和b都是小于10的整数。

17.在HEX单元存有两个16进制数,试编程分别把他们转换成相应的ASCII码存入ASC和ASC+1单元。

18.已知片内RAM中有一个5位的BCD码(高位在前,低位在后),最大不超过65535,始址在R0中,BCD码位数减1(04H)在R2中,试编程将BCD码转换成二进制整数并存入R4和R3中的程序(R4中为高8位)。

19.已知BLOCK1和BLOCK2为始址的存储区分别存有5字节无符号被减数和减数(低位在前,高位在后),试编一个减法子程序令他们相减并把差放入BLOCK1为始址的存储单元。

20.设BLOCK1和BLOCK+1单元有两个补码形式的有符号数,请编一个子程序求他们的和,并把和放在SUM和SUM+1单元(低8位在SUM单元)。 21.16位无符号数乘法程序。BLOCK1和BLOCK2为始址的存储区内放有16位的乘数和被乘数(低字节在前,高字节在后),试编程求积,结果放在BLOCK3为始址的连续4个存储单元。

22.设32位长的被除数已经放在R5、R4、R3、R2(R5为高字节),16位除数放在R7、R6中,试编程求商放在R3、R2,余数放在R5、R4。该程序应能判定除数为0时转入ERR出错处理程序和商超过双字节时使PSW中的F0=1(否则F0=0)。

23.设R0和R1中有两个补码形式的有符号数,试编程求两数之积并送入R3、R2中的程序(R3存放积的高8位)。 24.将外部RAM从0000H开始的2K字节的数据转移到外部2000H开始的区域。试编写有关的程序。

25.外部RAM从2000H开始的100字节的数据,要把他们转移到外部2030H开始的区域。试编写有关的程序。

26.从内部BLOCK单元开始有一个无符号的数据块,长度存放在LEN单元,编程找出数据块中的最小元素,并放在MINI单元。

27.编写一段程序,模拟如图所示逻辑电路的逻辑功能。要求将4输入与非门的功能模拟先写成一个子程序,多次调用模拟整个电路的逻辑功能。设X、Y、Z、W都已经定义为位地址,若程序中还需其他位地址,可以另行定义。

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

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOVA,#19HADDA,#66H(2)MOVA,#5AHADDA,#6BH2.已知:A=85H,R0=30H,(30H)=11H,(31H)=0FFH,C=1,试计算
推荐度:
点击下载文档文档为doc格式
9zc2d7dkq58uhsm07tfq670et7c1ze01752
领取福利

微信扫码领取福利

微信扫码分享