指令系统及汇编语言程序设计
- 格式:doc
- 大小:66.00 KB
- 文档页数:6
第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知: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,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。
4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成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, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。
第3章指令系统及汇编语言程序设计一、简答题1、80C51系列单片机的指令系统有何特点?2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?3、访问特殊功能寄存器SFR可以采用哪些寻址方式?4、访问内部RAM单元可以采用哪些寻址方式?5、访问外部RAM单元可以采用哪些寻址方式?6、访问外部程序存储器可以采用哪些寻址方式?7、为什么说布尔处理功能是80C51单片机的重要特点?8、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问?9、试根据指令编码表写出下列指令的机器码。
(1)MOV A,#88H(2)MOV R3,50H(3)MOV P1.1,#55H(4)ADD A,@R1(5)SETB 12H10、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。
(1)将R0的内容传送到R1;(2)内部RAM单元60H的内容传送到寄存器R2;(3)外部RAM单元1000H的内容传送到内部RAM单元60H;(4)外部RAM单元1000H的内容传送到寄存器R2;(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。
11、11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。
试分析执行下列程序段后上述各单元内容的变化。
MOV A,@R1MOV @R1,40HMOV 40H,AMOV R1,#7FH12、若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。
(1)MOV A,@R0(2)ANL 40H,#0FH(3)ADD A,R4(4)SWAP A(5)DEC @R1(6)XCHD A,@R113、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?MOV A,50HMOV R0,AMOV A,#00HMOV @R0,AMOV A,3BHMOV 41H,AMOV 42H,41H14、试用位操作指令实现下列逻辑操作。
要求不得改变未涉及的位的内容。
(1)使ACC.0置位;(2)清除累加器高4位;(3)清除ACC.3,ACC.4,ACC.5,ACC.6。
15、试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。
16、试编写程序,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位。
17、试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。
18、试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。
19、若(CY)=1,(P1)=10100011B,(P3)=01101100B。
试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。
MOV P1.3,CMOV P1.4,CMOV C,P1.6MOV P3.6,CMOV C,P1.0MOV P3.4,C20、若单片机的主频为12MHz,试用循环转移指令编写延时20ms的延时子程序。
并说明这种软件延时方式的优缺点。
21、80C51单片机汇编语言有何特点?22、利用80C51单片机汇编语言进行程序设计的步骤如何?23、常用的程序结构有哪几种?特点如何?24、子程序调用时,参数的传递方法有哪几种?25、什么是伪指令?常用的伪指令功能如何?26、设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位数相加的程序。
27、编写一段程序,把外部RAM中1000H~1030H的内容传送到内部RAM的30H~60H中。
28、编写程序,实现双字节无符号数加法运算,要求(R1R0)+(R7R6)→(61H60H)。
29、若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。
DELAY:MOV R7,#0F6HLP:MOV R6,#0FAHDJNZ R6,$DJNZ R7,LPRET30、在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。
31、编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。
32、编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。
33、编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。
34、指令由哪几部分组成?35、什么是汇编语言指令?为什么说汇编语言指令比机器语言指令更容易理解和记忆?通过什么方式可将汇编语言程序转化为机器语言程序?36、MCS-51汇编语言中有哪些常用的伪指令?各起什么作用?37、汇编语言程序和汇编程序两术语含义相同吗?38、什么是寻址方式?对于双操作数指令来说,为什么不需要指定操作结果存放位置?39、给出下列指令中每一操作数的寻址方式。
MOV A, #23HMOV 23H,AMOV 90H, 23HMOV 23H, @R0INC A40、位地址90H和字节地址90H及P1.0有何异同?如何区别?位寻址和字节寻址如何区分?在使用时有何不同?41、要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。
42、编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元。
43、编程将内部数据存储器20H~30H单元内容清零。
44、已知A=83H,R0=17H,(17H):34H,写出下列程序段执行完后的A中的内容。
ANL A, #17HORL 17H,AXRL A, @R0CPL A45、编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将将50H单元置为0FFH,否则清50H单元为0。
46、已知单片机的晶振为12MHz,分别设计延时0.1s、1s、lmin的子程序。
47、查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元48、试编程使内部RAM的20H~4FH单元的数据块按降序排列。
49、内部RAM的20H单元开始有一个数据块,以0DH为结束标志,试统计该数据块长度,将该数据块传送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。
50、试编写一个用查表法查0~9字形段码的子程序,调用子程序前,待查表的数据存放在累加器A中,子程序返回后,查表的结果也存放在累加器A中。
51、内部RAM的DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。
52、MCS-51内部RAM前128字节支持哪些寻址方式?请写出用不同寻址方式将内部RAM 30H单元信息传送到累加器A的指令或程序片段;内部RAM后128字节支持哪些寻址方式?请写出将内部RAM 80H单元信息传送到累加器A的指令或程序片段。
53、写出实现下列要求的指令或程序片段,并在仿真机上验证(假设指令代码从2000H单元开始存放)。
(1)将内部RAM 20H单元内容与累加器A相加,结果存放在20H单元中。
(2)将8032内部RAM 80H单元内容与内部RAM 31H单元内容相加,结果存放到内部RAM 31H单元中。
(3)将内部RAM 20H单元内容传送到外部RAM 20H单元中。
(4)将程序状态字寄存器PSW内容传送到外部RAM的0D0H单元中。
(5)将内部RAM 00H~7FH单元,共128字节传送到以8000H为首址的外部RAM中。
(6)将外部RAM 8000H~803FH单元,共64字节传送到以40H为首址的内部RAM中。
(7)将外部RAM 8000H~807FH单元,共128字节传送到以0000H为首址的外部RAM中。
(8)将存放在内部RAM的40H、41H和外部RAM的8000H、8001H的16位二进制数相加,结果存放在内部RAM的40H和41H单元中(假设低位字节存放在低地址中)。
(9)如果0~9七段数码显示器对应的字模码3P,06,5B,4F,66,6D,7D,07,7E6F 存放在1000H为首址的程序存储器中,写出将数字4对应的字模码输出到外部RAM3003H单元(即扩展I/O端口地址)的程序段。
(10)使内部RAM 20H单元的b7和b3清零,其他位不变。
(11)使内部RAM 20H单元的b7和b3置1,b5清零,其他位不变。
(12)将内部RAM 20H单元的b7和b3置1,b5取反,其他位不变。
(13)将DPH寄存器的b7、b5位清零,将b2、b0位置1,其他位不变。
(14)将存放在内部RAM 40H、41H和外部RAM 8000H、8001H的四位BCD码相加,结果存放在内部RAM 40H和41H单元中(假设低位字节存放在低地址中)。
(15)将立即数32H传送到内部RAM 30H单元中。
(16)将立即数32H传送到8032 CPU内部RAM 88H单元中。
54、假设内部RAM(30H)=3FH,累加器A=0FEH,R0=30H,SP=07H,PSW=00H,则执行如下指令后,各存储单元及寄存器内容是什么(假设各小题相互独立)?(1)MOV A, @R0 A= 。
(2)INC A A= ;PSW= 。
(3)MOV A, #01HMOV A, #04HADD A, @R0INC R0MOV @R0, AA= ;PSW= ;R0= ;(30H)= 。
(4)ANL A, @R0 A= ;PSW= 。
(5)PUSH ACCPUSP 30H A= ;PSW= 。
55、假设4位BCD码压缩存放在R3、R2中,试编写BCD减1的程序段,并在仿真机上验证。
56、输入、编译、运行下列程序段,并指出复位后和程序执行过程中SP、程序计数器PC的变化以及程序执行结束后累加器ACC、内部RAM 30H~33H单元内容。
ORG 0000HLJMP MainORG 1000HMain: MOV SP, #6FHMOV R0, #30HMOV Rl, #32HMOV 30H,#12HMOV 31H,#34HMOV 32H,#76HMOV 33H,#98HLCALL SUBlNOPORG 2000HSUBl: PUSH AccPUSH PSWMOV A, @R0ADD A, @R1MOV @R0,AINC R0RET57、假设程序头中含有如下变量定义伪指令。