单片机原理及应用技术苏家建课后习题参考答案第三章MCS-51指令系统3-1 MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令?3-2 设A=0FH,R0=30H,片内RAM的(30H)=0AH, (31H)=0BH, (32H)=0CH,下列程序段运行后的结果?MOV A,@R0 ;A=0AHMOV @R0,32H ;(30H)=0CHMOV 32H,A ;(32H)=0AHMOV R0,#31H ;R0=31HMOV A,@R0;A=(31H)=0BH3-3(1)R0的内容传送到R1MOV A,R0MOV R1,A(2)内部RAM 20H单元的内容传送到AMOV A,20H(3)外部RAM 30H单元的内容传送到R0MOV R1,#30HMOVX A,@R1MOV R0,A(4) 外部RAM 30H单元的内容传送到内部RAM 20H单元MOV R1,#30HMOVX A,@R1MOV 20H,A(5) 外部RAM 1000H单元的内容传送到内部RAM 20H单元MOV DPTR,#1000HMOVX A,@DPTRMOV 20H,A(6)程序存储器ROM 2000H单元的内容传送到R1MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV R1,A(7) RAM 2000H单元的内容传送到内部RAM 20H单元MOV DPTR,#2000HMOVX A,@DPTRMOV 20H,A(8) RAM 2000H单元的内容传送到外部RAM 30H单元MOV DPTR,#2000HMOVX A,@DPTRMOV R0,#30HMOVX @R0,A(9) RAM 2000H单元的内容传送到外部RAM 1000H单元MOV DPTR,#2000HMOVX A,@DPTRMOV DPTR,#1000HMOVX @DPTR,A3-4 设内部RAM 30H=5AH,5AH=40H,40H=00H, P1=7FH, 下面程序执行后的结果如何?MOV R0,#30H ;R0=30HMOV A,@R0 ;A=(30H)=5AHMOV R1,A ;R1=5AHMOV @R1,P1; (5AH)=7FHMOV A,P1 ;A=7FHMOV 40H,#20H ;(40H)=20HMOV 30H,40H ;(30H)=00H3-5 编程,将内部RAM 20H-2FH共16个连续单元清零ORG 0100HMOV R0,#20HMOV R2,#16LOOP: MOV @R0,#00HINC R0DJNZ R2,LOOPEND3-6编程,求出内部RAM 20H单元中的数据含“1”的个数,并将结果存入21H单元中。
ORG 0100HMOV 21H,#0MOV R2,#8MOV A,20HCLR CLOOP: RLC AJC COUNTDJNZ R2, LOOPSJMP STOPCOUNT: INC 21HDJNZ R2,LOOPSTOP:SJMP $END3-7编程,找出内部RAM 30H-50H单元中出现FFH的次数,并将结果存入51H单元中。
ORG 0100HMOV 51H,#0MOV R0,#30HMOV R2,#20HLOOP:MOV A,@R0CJNE A,#0FFH,AGAININC 51HAGAIN: INC R0DJNZ R2,LOOPSJMP $END3-8编程,计算∑=0102ii,并将结果存入内部的30H单元ORG 0100HMOV 30H,#0MOV 31H,#0 ; i的初值MOV R0,#30HMOV R2,#11MOV A,31HLOOP:INC 31HADD A,@R0MOV @R0,AMOV A,31HRL ADJNZ R2,LOOPSJMP $END3-9 已知片内RAM(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H.说明下列指令源操作数的寻址方式,及指令执行的结果MOV A,40H ;A=48H 直接寻址MOV R0,A ;R0=48H 寄存器寻址MOV P1,#0F0H ;P1=0F0H直接寻址MOV @R0,30H ;(48H)=38H 寄存器间接寻址MOV DPTR,#3848H ;DPTR=3848H 直接寻址MOV 40H,38H ;(40H)=(38H)=40H 直接寻址MOV R0,30H ;R0=(30H)=38H 寄存器寻址MOV P0,R0 ;P0=38H 直接寻址MOV 18H,#30H ; (18H)=30H 直接寻址MOV A,@R0 ;A=(38H)=40H 直接寻址MOV P2,P1 ;P2=0F0H直接寻址3-10设R0=32H,A=48H,片内RAM (32H)=80H,(40H)=08H.求指令运行的结果MOV A,@R0 ;A=(32H)=80HMOV @R0,40H ; (32H)=(40H)=08HMOV 40H,A ; (40H)=80HMOV R0,#35H ; R0= 35H3-11设A=83H,R0=17H,片内RAM (17H)=34H, 求指令运行的结果ANL A,#17H ;A=03HORL A,17H ; (17H)=(37HXRL A ,@R0 ; A=37HCPL A ;A=C8H3-12编程实现片内RAM 20H-2FH与30H-3FH中数据的对换ORG 0100HMOV R0,#20HMOV R1,#40HMOV R2,#0FHLOOP: MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,LOOPMOV R0,#30HMOV R1,#20HMOV R2,#0FHLOOP1: MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,LOOP1MOV R0,#30HMOV R1,#40HMOV R2,#0FHLOOP1: MOV A,@R1MOV @R0,AINC R0INC R1DJNZ R2,LOOP1SJMP $END3-13 A=34H,(30H)=4FH,ADD A,30H执行后的结果A=83H,PSW=41H3-14 SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26)=56H,执行RET后SP=?PC=?SP=23H,PC=3412H3-15 SP=25H,PC=2345H,标号LABEL所在的地址3456H,执行LCALL LABEL后SP=?PC=?,堆栈中的数据有何变化?SP=27H (26H)=48H (27H)=23H PC=3456H第四章程序设计基础4-1片内RAM 30H单元开始存放着一组用补码表示的有符号数,数目存于20H单元。
编程统计出正数,0,负数的数目,分别存到21H,22H,23H单元。
ORG 0100HMOV 21H,#0MOV 22H,#0MOV 23H,#0MOV R0,#30HLOOP: MOV A,@R0CJNE A,#0 ,PDINC 22HSJMP DONEPD:JB ACC.7,FUINC 21HSJMP DONEFU:INC 23HDONE: INC R0DJNZ 20H,LOOPSJMP $END4-2 片内RAM 20H-2FH.凡是满足奇偶校验的数据(1的个数为偶数)的数转存到片外8000H 开始的数据区ORG 0100HMOV R0,#20HMOV DPTR,#8000HMOV R2,#0FHLOOP: MOV A,@R0JB PSW.0,DONEMOVX @DPTR,AINC DPTRDONE: INC R0DJNZ R2,LOOPSJMP $END4-3 编程,把外部 RAM 1000H-10FFH的数据传送到2000H开始的区域ORG 0100HMOV R3,#10HMOV R4,#20HMOV DPL,#00HMOV R2,#0LOOP:MOV DPH,R3MOVX A,@DPTRMOV DPH,R4MOVX @DPTR,AINC DPLDJNZ R2,LOOPSJMP $END4-4片内RAM 30H单元开始存放着一组无符号数,其数目在21H单元中。
编程将其中最小的数存入21HORG 0100HMOV R0,#30HMOV R2,21HMOV A,30HLOOP: CJNE A,@R0,PDSJMP DONEPD:JNC DONEMOV 22H,@R0XCH A,22HDONE: INC R0DJNZ R2,LOOPMOV 21H,ASJMP $END4-5 编程实现片内RAM 30H单元开始的16个数按顺序颠倒过来ORG 0100HMOV R0,#30HMOV R1,#40HMOV R2,#0FHLOOP:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,LOOPMOV R2,#0FHMOV R0,#40HMOV R1,#3FHLOOP1: MOV A,@R0MOV @R1,AINC R0DEC R1DJNZ R2,LOOP1SJMP $END4-6 编程实现片内RAM 30H单元开始的16个数,存有最小数值的所在单元的内容改为0FFHORG 0100HMOV R0,#30HMOV R2,#16MOV A,30HMOV 22H,#0 ;22H存放找到的16个数中的最小值MOV 23H,#0 ;存放最小数值的地址放到23HLOOP: CJNE A,@R0,PDSJMP DONEPD:JNC DONEMOV 22H, @R0MOV 23H,R0XCH A,22HDONE: INC R0DJNZ R2,LOOPMOV R0,23HMOV @R0,#0FFHSJMP $END4-7 编程实现P1.7=P1.6(P1.5 P1.4)ORG 0100HMOV C,P1.5ANL C,/P1.4MOV 20H,CMOV C,P1.4ANL C,/P1.5ORL C,20HANL C,P1.6MOV P1.7,CEND4-8编程统计片内RAM 30H单元开始的16个数,有多少数大于40,小于80,将结果存入40H单元中ORG 0100HMOV R0,#30HMOV R2,#16MOV 40H,#0LOOP:MOV A,@R0CJNE A,#40,PDSJMP DONEPD:JNC PD2SJMP DONEPD2:CJNE A,#80,PD3SJMP DONEPD3:JC COUNTSJMP DONECOUNT:INC 40HDONE:INC R0DJNZ R2,LOOPSJMP $END第六章中断系统6-1 定时器T0和T1各有几种工作方式?请简述。
答:四种。