单片机 试卷 编程题1.doc

上传人:11****ws 文档编号:3075263 上传时间:2019-05-20 格式:DOC 页数:6 大小:43KB
下载 相关 举报
单片机 试卷 编程题1.doc_第1页
第1页 / 共6页
单片机 试卷 编程题1.doc_第2页
第2页 / 共6页
单片机 试卷 编程题1.doc_第3页
第3页 / 共6页
单片机 试卷 编程题1.doc_第4页
第4页 / 共6页
单片机 试卷 编程题1.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、第 3 章 MCS-51 单片机指令系统与程序设计1. 简述下列基本概念:指令、指令系统、机器语言、汇编语言、高级语言。指令:CPU 根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2.什么是计算机的指令和指令系统?指令:CPU 根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合3.简述 89C51 汇编指令格式。操作码 目的操作数 ,源操作数4、简述 89C

2、51 的寻址方式和所涉及的寻址空间。 51 的寻址方式和所能涉及的寻址空间。 寻址方式 寻址空间立即数寻址 程序存储器 ROM直接寻址 片内 RAM 低 128B、特殊功能寄存器寄存器寻址 工作寄存器 R0-R7、A、B、C、DPTR寄存器间接寻址 片内 RAM 低 128B、片外 RAM变址寻址 程序存储器(A+PC,A+DPTR)相对寻址 程序存储器 256B 范围(PC+偏移量)位寻址 片内 RAM 的 20H-2FH 字节地址、部分 SFR5、要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?SFR:直接寻址,位寻址,寄存器寻址;片外 RAM:寄存器间接寻址6、 在 89C51

3、 片内 RAM 中,已知(30H)=38H,(38)H=40H,(40H)=48H,(48H)=90H.请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果MOV A,40H ;直接寻址 (40H)AMOV R0,A ;寄存器寻址 (A)R0MOV P1,#0F0H ;立即数寻址 0F0 P1MOV R0,30H ;直接寻址 (30H) (R0)MOV DPTR,#3848H ;立即数寻址 3848HDPTRMOV 40H,38H ;直接寻址 (38H) 40HMOV R0,30H ;直接寻址 (30H) R0MOV P0,R0 ;寄存器寻址 ( R0 )P0MOV 1

4、8H,#30H ;立即数寻址 30H18HMOV A,R0 ;寄存器间接寻址 (R0) AMOV P2,P1 ;直接寻址 (P1 )P2最后结果:(R0)=38H , (A)=40H , (P0 )=38H, (P1)=(P2 )=0F0H, (DPTR)=3848H, (18H)=30H, (30H) =38H, (38H)=40H, (40H)=40H, (48H)=38H注意:左边是内容,右边是单元7、对 89C51 片内 RAM 的高 128 字节的寻址空间寻址要注意什么?用直接寻址,位寻址,寄存器寻址8、指出下列指令的本质区别? MOV A,DATA ;直接寻址 2 字节 1 周期M

5、OV A,#DATA ;立即数寻址 2 字节 1 周期MOV DATA1,DATA2 ;直接寻址 3 字节 2 周期MOV 74H,#78H ;立即数寻址 3 字节 2 周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录 A9、设 R0 的内容为 32H,A 的内容为 48H,片内 RAM 的 32H 单元内容为80H,40H 单元的内容为 08H。请指出在下列程序断后上述各单元内容的变化MOV A,R0 ;(R0)=80HAMOV R0,40H ;(40H)=08H(R0)MOV 40H,A ;(A)=8040HMOV R0,#35H ;35HR0最后结果:(R0)=35H (

6、A)=80H , (32H) =08H, (40H )=80H7.如何访问 SFR,可使用哪些寻址方式?用直接寻址,位寻址,寄存器寻址11、如何访问片外 RAM 单元,可使用哪些寻址方式?只能采用寄存器间接寻址(用 MOVX 指令)12、如何访问片内 RAM 单元,可使用哪些寻址方式?低 128 字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0R7)高 128 字节:直接寻址,位寻址,寄存器寻址13、如何访问片内外程序存储器,可使用哪些寻址方式?采用变址寻址(用 MOVC 指令)14、说明十进制调整的原因和方法。压缩 BCD 码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处

7、理,此时得到的结果不正确。用 DA A 指令调整(加 06H,60H ,66H )1.说明 89C51 的布尔处理机功能。用来进行位操作16、已知(A)=83H, (R0)=17H, (17H)=34H。请写出执行完下列程序断后 A 的内容。ANL A,#17H ;83H17H=03H AORL 17H,A ;34H03H=37H 17HXRL A,R0 ;03H37H=34HCPL A ;34H 求反等于 CBH所以(A)=CBH17、使用位操作指令实现下列逻辑操作。要求不得改变未涉及位的内容。1)使 ACC.0 置 1SETB ACC.0 或 SETB E0H ;E0H 是累加器的地址(2

8、)清楚累加器高 4 位CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4(3)清楚 ACC.3,ACC.4,ACC.5 ,ACC.6。CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.3 18、编程实现把内部 RAMR0R7 的内容传递到 20H27H 单元。MOV 27H,R7MOV 26H,R6MOV 25H,R5MOV 24H,R4MOV 23H,R3MOV 22H,R2MOV 21H,R1MOV 20H,R019、使编写程序,把内部 RAM 的 20H、21H 和 22H 三个连续单元的内容依次存入 2FH、2EH 和 2DH 中。MOV 2F

9、H,20MOV 2EH,21MOV 2DH,2220、编写程序,进行两个 16 位数的减法:6F5DH-13B4H,结果存入内部 RAM的 30H 和 31H 单元,30H 存储低 8 位CLR CMOV A,#5DH ;被减数的低 8 位AMOV R2,#B4H ;减数低 8 位R2SUBB A,R2 ;被减数减去减数,差AMOV 30H,A ;低 8 位结果30HMOV A,#6FH ;被减数的高 8 位AMOV R2,#13H ;减数高 8 位R2SUBB A,R2 ;被减数减去减数,差AMOV 31H,A ;高 8 位结果30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得

10、清 0 进位位21、编写程序,若累加器 A 的内容分别满足下列条件,则程序转至 LABEL 存储单元,设 A 中存的是无符号数。(1)A10CJNE A,#0AH,L1 ;(A)与 10 比较,不等转 L1LJMP LABEL ;相等转 LABELL1:JNC LABEL ;(A)大于 10,转 LABEL或者:CLR CSUBB A,#0AHJNC LABEL(2)A10CJNE A,#0AH,L1 ;(A)与 10 比较,不等转 L1RET ;相等结束L1:JNC LABEL ;(A)大于 10,转 LABELRET ;(A)小于 10,结束或者:CLR CSUBB A,#0AHJNC L

11、1RETL1:JNZ LABELRET(3)A10CJNE A,#0AH,L1 ;(A)与 10 比较,不等转 L1L2:LJMP LABEL ;相等转 LABELL1:JC L2 ;(A)小于 10,转 L2RET或者:CLR CSUBB A,#0AHJC LABELJZ LABELRET22、已知(SP)=25H , (PC)2345H, (24H)=12H, (25H)=34H, (26H)=56H,问此时执行“RET”指令后, (SP )|=?( PC)=?(SP)=23H, (PC)=3412H参看书上 80 页第 4 章若(SP)=25H , (PC)2345H,标号 LABEL

12、所在的地址为 3456H。问执行长调用指令“LCALL LABFL”后,堆栈指针和堆栈的内容发生什么变化?PC 的值等于什么?(SP)=27H, (26H)=48H, (27H)=23H , (PC )=3456H参看书上 79 页24、上题中的 LCALL 指令能否直接换成 ACALL 指令,为什么?如果使用ACALL 指令,则可调用的地址范围是什么?不能。ACALL 是短转指令,可调用的地址范围是 2KB。在看这个题的时候同时看一下 AJMP 指令。同时考虑调用指令 ACALL 和LCALL 指令和 RET 指令的关系。25、试编写程序,查找在内部 RAM 的 20H50H 单元中是否有

13、0AAH 这一数据。若有,则将 51H 单元置为 01H;若未找到,则将 51H 单元清 0。MOV R2,#31H ;数据块长度R2MOV R0,#20H ;数据块首地址R0LOOP:MOV A,R0 ;待查找的数据ACLR C ;清进位位SUBB A,#0AAH ;待查找的数据是 0AAH 吗JZ L1 ;是,转 L1INC R0 ;不是,地址增 1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找MOV 51H,#00H ;等于 0,未找到, 00H51HRETL1:MOV 51H,#01H ;找到,01H51HRET26、试编写程序,查找在内部 RA

14、M 的 20H50H 单元中出现 00H 的次数,并将查找的结果存入 51H 单元。MOV R2,#31H ;数据块长度R2MOV R0,#20H ;数据块首地址R0LOOP:MOV A,R0 ;待查找的数据 AJNZ L1 ;不为 0,转 L1INC 51H ;为 0,00H 个数增 1L1:INC R0 ;地址增 1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找RET27、外部数据 RAM 中有一个数据块,存有若干字符、数字,首地址为SOURCE。要求将该数据块传送到内部 RAM 以 DIST 开始的区域,直到遇到字符“$”时候结束(“$”也要传送,

15、它的 ASCII 码为 24H) 。MOV DPTR,#SOURCE ;源首地址 DPTRMOV R0,#DIST ;目的首地址R0LOOP:MOVX A,DPTR ;传送一个字符MOV R0,AINC DPTR ;指向下一个字符INC R0CJNE A,#24H ,LOOP ;传送的是“$”字符吗?不是,传送下一个字符RET28、已知 R3 和 R4 中存有一个 16 位的二进制数,高位在 R3 中,低位在 R4 中。请编程将其求补,并存回原处。MOV A,R3 ;取该数高 8 位AANL A,#80H ;取出该数符号判断JZ L1 ;是正数,转 L1MOV A,R4 ;是负数,将该数低 8 位ACPL A ;低 8 位取反ADD A,#01H ;加 1MOV R4,A ;低 8 位取反加 1 后R4MOV A,R3 ;将该数高 8 位ACPL A ;高 8 位取反ADDC A,#00H ;加上低 8 位加 1 时可能产生的进位MOV R3,A ;高 8 位取反加 1 后R3L1: RET

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。