当前位置:文档之家› 第三章 MCS-51指令系统习题答案

第三章 MCS-51指令系统习题答案

第三章 MCS -51指令系统5 题 分析下面程序段的执行功能。

CLR AMOV R2, AMOV R7, #4LOOP: CLR CMOV A, R0RLC AMOV R0, AMOV A, R1RLC AMOV R1, AMOV A, R2RLC AMOV R2, ADJNZ R7, LO OPSJMP $ 答:将R2:R1:R0所表示的24位二进制数左移4位。

(相当×16)6 题 设系统晶振为12MHZ ,阅读下列程序,分析其功能。

START : SETB P1.0NEXT: MOV 30H, #10LOOP2: MOV 31H, #0FAHLOOP1: NOPNOPDJNZ 31H, LOOP1DJNZ 30H, LOOP2CPL P1.0AJMP NEXTSJMP $答:((2+1+1)*250+2+2)*10+2=10.042(ms) 在P1.0引脚上输出周期为20ms的方波。

7 题 阅读下列程序,分析其功能。

MOV R7, #10MOV A, #30HMOV DPTR, #2000HLOOP : MOVX @DPTR, AINC AINC DPLDJNZ R7, LOOPSJMP$R2 R1R0 0 0 0 0答:在外部数据存储器中的以下地址内存放数据:(2000H)=30H(2001H)=31H(2002H)=32H┇┇(2009H)=39H8 题简述下列程序段完成的功能,程序完成后SP指针应指向哪里?MOV SP, #2FHMOV DPTR, #2000HMOV R7, #50HNEXT: MOVX A, @DPTRPUSH AINC DPLDJNZ R7, NEXTSJMP $答:以内部存储器地址30H作为栈底,从30H开始一直到7FH依次存放外部数据存储器中2000H一直到204FH地址中的数据。

7FH作为栈顶。

程序完成后SP=7FH。

9 题分析下列程序段执行结果,程序执行完后,SP指向哪里?MOV SP, #3FHMOV R0, #40HMOV R7, #10HNEXT: POP AMOV @R0, ADEC R0DJNZ R7, NEXTSJMP $答:将栈中3FH,3EH一直到30H地址中的内容依次放入40H,3FH,…,31H单元中。

执行完后SP=2FH。

10 题分析下列程序段执行结果。

XCH A, 30HMOV B, AANL A, #0FHMOV 33H, AMOV A, BSW AP AANL A, #15MOV 34H, ASJMP $答:将30H单元中的数的高四位放入34H中,低四位放入33H中。

14 题阅读(1)(2)(3)程序段,分析其功能。

运算结果存在哪里?(1) MOV A, R2ADD A, R0MOV 30H, AMOV A, R3ADDC A, R1MOV 31H, AMOV A, #0ADDC A, #0MOV 32H, ASJMP $(2) CLR CMOV A, R4SUBB A, R2MOV R0, AMOV A, R5SUBB A, R3MOV R1, A(3) MOV A, R1MOV B, R0MUL ABMOV 30H, AMOV 31H, BMOV A, R2MOV B, R0MUL ABADD A, 31HMOV 31H, AMOV A, BADDC A, #0MOV 32H, ASJMP $答:(1)将R3:R2和R1:R0中的两个16位数相加,结果存放在32H:31H:30H中。

(2)用R5:R4中的16位数减去R3:R2中16位数,结果存放在R1:R0中。

(3)R2:R1中的16位数乘以R0中的数,结果存放在32H:31H:30H中。

23 题有四个变量U、V、W、X分别从P1.0~P1.3输入,阅读如下程序,写出逻辑表达式并画出逻辑电路图。

请使用ORG、END、BIT等伪指令重新编写该程序段。

MOV P1, #0FHMOV C, P1.0ANL C, P1.1CPL CMOV ACC.0, CMOV C, P1.2ORL C, /P1.3ORL C, ACC.0MOV F, CSJMP $答:电路图如下:逻辑表达式:重新整理编写程序如下:ORG 0000HU BIT P1.0V BIT P1.1W BIT P1.2X BIT P1.3MOV C, UANL C, VCPL CMOV ACC.0, CMOV C, WORL C, /XORL C, ACC.0MOV F, CSJMP $END24 题用布尔指令,求解逻辑方程。

(1) PSW.5=P1.3∧ACC.2∨B.5∧P1.1(2) PSW.5=P1.5∧B.4∨ACC.7∧P1.0答:(1)MOV C, P1.3ANL C, ACC.2MOV ACC.0, CMOV C, B.5ANL C, P1.1ORL C, ACC.0MOV PSW.5, C(2)MOV C, P1.5ANL C, B.4MOV ACC.0, CMOV C, ACC.7ANL C, P1.0ORL C, ACC.0CPL CMOV PSW.5, C第四章汇编语言程序设计1 题若晶振为12MHz,试编制延时2ms和1s子程序。

答:延时2ms:DELY: MOV R7, #10DLY0: MOV R6, #98NOPDLY1: DJNZ R6, DLY1DJNZ R7, DLY0RET延时1s:DELY: MOV R0, #50LP11: MOV R1, #100LP22: MOV R2, #100LP33: DJNZ R2, LP33DJNZ R1, LP22DJNZ R0, LP11RET4 题试求20H和21H单元中16位带符号二进制补码数的绝对值,并送回20H和21H单元,高位在先,低位在后。

答:方法一:先判断符号位,若为0则不作任何处理(因为正数的补码数与原数相同,而0的补码数就是0)。

若符号位为1,则用0减去该数即可。

编程如下:ORG 0000HMOV A, 20HJNB ACC.7, DONECLR CCLR ASUBB A, 21HMOV 21H, ACLR ASUBB A, 20HMOV 20H, ADONE: SJMP $END方法二:可用变反加“1”来完成。

ORG 0000HMOV A, 20HJNB ACC.7, DONECPL AMOV 20H, AMOV A, 21HCPL AMOV 21H, ACLR CMOV A, 21HADD A, #1MOV 21H, AMOV A, 20HADDC A, #0MOV 20H, ADONE: SJMP $END5题试求内部RAM 30~37H单元8个无符号数的算术平均值,结果存入38H单元。

答:方法一:相加后和放在R3:38H中,然后将结果整体右移3位,得数放在38H单元中。

ORG 0000HSTART: MOV R7, #07HMOV R3, #00HMOV A, 30HMOV R0, #31HLOOP: ADD A, @R0JNC NEXTINC R3NEXT: INC R0DJNZ R7, LOOPMOV 38H, AMOV R7, #3LOOP1: CLR CMOV A, R3RRC AMOV R3, AMOV A, 38HRRC AMOV 38H, ADJNZ R7, LOOP1SJMP $END方法二:相加后和放在R3:38H中,然后将R3中的数乘以25,将38H中的数除以23,然后将两个结果相加,放入38H单元中。

ORG 0000HSTART: MOV R7, #07HMOV R3, #00HMOV A, 30HMOV R0, #31HLOOP: ADD A, @R0JNC NEXTINC R3NEXT: INC R0DJNZ R7, LOOPMOV 38H, APR: MOV A, R3MOV B, #32MUL ABMOV R3, AMOV A, 38HMOV B, #8DIV ABADD A, R3MOV 38H, A6题试编一数据块搬迁程序。

将外部RAM 2000H~204FH单元中的数,移入内部RAM 30H~7FH单元中。

编程如下:ORG 0000HMOV R0, #50HMOV R1, #30HMOV DPTR, #2000HLP1: MOVX A, @DPTRMOV @R1, AINC R1INC DPTRDJNZ R0, LP1END第五章MCS-51定时/计数器、串行口及中断系统31题阅读T0、T1初始化程序,回答右边几个问题(设主频为6MHZ)MOV A, #11HMOV TMOD, AMOV TH0, #9EHMOV TL0, #58HMOV TH1, #0F0HMOV TL1, #60HCLR PT0SETB PT1SETB ET0SETB ET1SETB EA*MOV A, #50H*MOV TCON, A┇┇①T0, T1各用何种方式工作?几位计数器?②T0, T1各自定时时间或计数次数是多少?③T0, T1的中断优先级?④T0, T1的中断矢量地址?⑤最后两条带*号的指令功能是什么?µ答:① T0、T1都以方式1工作,16位计数器。

② T0的定时时间=2*(M-定时初值)=2*[65536-(9E58)16]=2*[65536-40536] =50000(微秒)= 0.05秒T1的定时时间=2*(M-定时初值)=2*[65536-(F060)16]=2*[65536-61536]=8000(微秒)= 0.008秒③ T0设为低优先级,T1设为高优先级。

④ T0的中断矢量地址:000BHT1的中断矢量地址:001BH⑤ TCON的内容:01010000作用:TR1和TR0被置1,使计数器T0和T1启动。

第六章单片机系统扩展设计13题若用8片6116构成的外部数据存储器,地址为0000H~3FFFH;试编写一存储器诊断程序(诊断到某片)。

答:编程如下:MOV DPTR, #0000HMOV R0, #31H ;存放诊断结果LP1: MOV A, #0MOVX @DPTR, AMOVX A, @DPTRJNZ ERRMOV A, #0FFHMOVX @DPTR, AMOVX A, @DPTRCPL AJNZ ERRINC1: INC DPTRMOV A, #3FHCJNE A, DPH, LP1MOV A, #0FFHCJNE A, DPL, LP1SJMP $ERR: PUSH DPLPOP ACC ;存放出错点的地址MOV @R0, AINC R0PUSH DPHPOP ACCMOV @R0, AINC R0SJMP INC1END11题 试设计以8031为主机,用74LS138为译码器,采用1片27128作ROM ,地址为0000H ~3FFFH ;采用2片6264作RAM ,4000H ~7FFFH 的扩展系统(加1个与门),地址不允许重叠,画出电路图。

相关主题