单片机原理与应用练习题3答案.docx

上传人:李医生 文档编号:11697687 上传时间:2021-08-31 格式:DOCX 页数:13 大小:36.98KB
返回 下载 相关 举报
单片机原理与应用练习题3答案.docx_第1页
第1页 / 共13页
单片机原理与应用练习题3答案.docx_第2页
第2页 / 共13页
单片机原理与应用练习题3答案.docx_第3页
第3页 / 共13页
单片机原理与应用练习题3答案.docx_第4页
第4页 / 共13页
单片机原理与应用练习题3答案.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《单片机原理与应用练习题3答案.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用练习题3答案.docx(13页珍藏版)》请在三一文库上搜索。

1、百度文库让每个人平等地提升自我练习题3答案1 .简述下列基本概念:指令,指令系统,机器语言,汇编语言。答:指令是单片机CPU执行某种操作的命令。指令系统是一台计算机所能执行的指令集合。机器语言即二进制代码语言,是计算机可以直接识别。汇编语言是用助记符、字符串和数字等来表示指令的程序语。2 .简述AT89S51单片机的指令格式答:该单片机的指令由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作, 而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取得数 据的地址或符号。指令格式一般为:标号:操作码 操作数1,操作数2,操作数3;注释3 .简述AT89s51的寻

2、址方式和所能涉及的寻址空间答:共有7种寻址方式,见表3-2。分别是:(1)寄存器寻址:寻址范围为通用寄存器组,共4组32个,但只能使用当前寄存器表32寻址方式及相应的寻址存储器范围寻址方式寻 址 存储 器 范 困立即寻址程序存储器ROM直接寻址片内RAM低128B,特殊功能寄存器寄存器寻址工作寄存器R0R7, A, C DPTR, AB寄存器间接寻址片内RAM低128B,片外RAM变址寻址程序存储器 ROM (A+DPTR,A+PC)相对寻址程序存储器ROM (相对寻址指令的下一指令PC值加- 128+127)位寻址片内RAM的20H-2FH字节地址中所有的位,可位寻址的特殊功能寄存器组,因此

3、使用前需要通过对PSW种的RSI、RSO位的状态进行设置:(2)直接寻址:寻址范 围为内部RAM,包括低128位用户RAM区和高128位专用寄存器;(3)寄存器间接寻址: 寻址范围为内部RAM低128位,外部RAM 64KB (低256单元可以使用DPTR和RO、R1 作为间接寻址寄存器,而其他单元只能用DPTR作为间接寻址寄存器):(4)立即寻址:直接 给出立即数,不涉及寻址空间:(5)变址寻址:只对程序寄存器进行寻址:(6)相对寻址:以 PC的内容为基值,加上指令机器代码中相对地址形成新的PC值转移;(7)位寻址:寻 址空间包括内部RAM位寻址区(202FH)和专用寄存器的可寻址位。4 .

4、要访问片外程序存储器和片外数据存储器,应采用哪些寻址方式?答:访问片外程序存储器采用变址寻址方式,片外数据存储器采用寄存器间接寻址方式,且 用DPTR可以访问64KB,而用R0或者R1只可访问低256字节。5 .在 AT89s51 片内 RAM 中,已知(3OH)=38H, (38H)=40H, (40H)=48H, (48H)=90H。请分 析下面各是什么指令,说明源操作数的寻址方式及按顺序执行每条指令后的结果。答:指令指令说明源操作数寻址方式结果MOV A, 40H将内部RAM中40H内容 传送到累加器A中 (A) (40H)直接寻址(A)=48HMOV RO, A再将A中内容传送给R0

5、(R0) (A)寄存器寻址(R0)=48HMOV Pl, #0F0H将立即数OFOH送到P1 口,即P1.4PL7位1,其 余为0(Pl) -0F0H立即数寻址(P1)=OFOHMOV R0, 30H将30H中的内容,传放到 以R0单元内容为地址的单元中(R0) (30H)直接寻址(R0)=(48H)=38HMOV DPTR.#3848H将立即数3848传送给DPTR数据指针(dptr) _ 3848H立即数寻址(DPTR)=3848HMOV 40H.38H将内部RAM中38H内容 传送到40H单元中 (40H) - (38H)直接寻址(40H)=40HMOV RO.30H将30H中的内容给R

6、0寄 存器(R0) - (30H)直接寻址(R0)=38HMOV PO. RO将R0的内容传送到P0(P0) (R0)寄存器寻址(P0)=38HMOV A, RO将R0内容为地址的该单 元内容传送给A(A)一(R0)寄存器间接寻址(A)=40HMOV P2,P1将Pl的内容传送给P2(P2) (P1)直接寻址(P2)=0F0H直接寻址立即数寻址寄存器间接寻址 寄存器寻址变址寻址6 .指出下列指令的源操作数的寻址方式MOV A. 65HMOV A. #65HMOV A.R0MOV A. R2MOVC A.A+PC7 .内部RAM和特殊功能寄存器各用什么寻址方式?答:内部RAM有寄存器寻址方式、直

7、接寻址方式和间接寻址方式:特殊功能寄存器除A外只能进行直接寻址。8 .已知:(A)=5BH, (Rl)=30H, (30H)=0CEH, (P1)=71H, (PSW)=80H, (PC)=2OOOH, (205CH) =46H, (SP) =30H, (B) =78H,分别求各条指令执行后的结果(要求进行二进制运算验证)及标志位Cy、P的影响:(1) MOVA. R1(A)=0CEHp=i,c不变(2) MOV40H. 30H(40H)=0CEHP和C不变(3) MOVPl,RI(Pl)=30HP和C不变(4) MOVCA, A+PC(A)=46Hp=l,C不变(5) PUSHB(31H)=

8、78H,(SP)=31H P 和 C 不变(6) POPDPH(DPH)=0CEH, (SP)=29H P 和 C 不变(7) XCHDA. R1(A)=05EH(30H)=CBHP=1,C 不变(8) ADDA, 30H(A)=29HP=1,C=1(9) ADDCA. Pl(A)=CDHP=LC=O(10) SUBBA, Pl(A)=E9HP=LC=1(11) ANLPL#OFH(Pl)=01HP和C不变(12 ) CLRPSW.7C=0(13) RLCA(A)=B7HP=0. c=o(14) ORLC. 90HC=1,P不变9.对下而一段程序加上机器码和注释,并说明程序运行后寄存器A、R0

9、和内部RAM50H、51H、52H单元的内容。MOV50H. #50H75 50 50:(50H)TOHMOVA, 50HE5 50:(A)一(50H)MOVR0, AF8:(R0) -(A)MOVA, #30H74 30:(A) TOHMOVR0, AF6;(R0)一(A)MOVA, #50H74 50;(A) TOHMOV51H, AF5 51:(51H)一(A)MOV52H, #00H75 52 00:(52H)-OOH答:运行后寄存器(A)=50H, (R0)=50H,(5OH)=3OH,(51)=50H(52H)=00H10.区别下列各指令中20H的含义,在每条指令后加上注释。MOV

10、 A. #20H 将20H立即数传送给AMOV 45H, 20H将内部RAM中20H单元的内容传送到45H中MOV C, 20H.0将内部RAM中20H单元内容的第。位(最低位)传送给CMOV C, 20H将内部RAM中20H位地址内容传送给C11.写出完成以下功能的指令(1) 将立即数30H送到R1:(2) 将内RAM30H中的数据送到内RAM78H单元;(3)将立即数30H送到 以R0中内容为地址的存储器中:(4)将R2中的内容送到P1;(5)将内RAM60H单元的数据送到 外RAM60H单元;(6) 将内RAM60H单元的数据送到外RAM1060H单元:(7) 将ROM1000H单元的内

11、容送到内RAM30H单元;(8) 使ACC.7置位;(9) 使累加器的低4位清零:(10)使PL2与Cy相与,结果送Cy;(11)立即数45H、93H进行逻辑与、或、异或操作;(12)两立即数求和:1C0H+45H,结果按高低8位存在30H、31H中。答案:(l)MOV RI, #30H(2) MOV 78H, 30HMOV R0, #30H(4)M0V Pl, R2(5) MOV A, 60H;MOV P2,#0;MOV RO, #60H;MOVX R0, A(6) MOV A, 60H;MOV DPTR,#1060;MOVX DPTR, A(7) MOV A, #00HMOV DPTR,#

12、1000HMOVCA, A+DPTRMOV 30H, A(8)SETB ACC. 7(9) ANL A, #0F0H(10)ANLC,pl.2(11)与:MOV A.#45HANL A.#59H或:MOV A.#45HORL A.#59H异或:PMOV A,#45HXRL A#59H(12) CLR CMOV R2.#lMOV A.#0C0HADD A#45HMOV 31H, AMOV A.R2ADDCA, #0MOV 30H, A12 .写出下列指令执行过程中堆栈的变化设堆栈初值为X:MOV R6,#11H(SP)=X (堆栈不变)MOV R7,#23H(SP)=X (堆栈不变)ACALL

13、200H(SP)=X+2;(X+1)=第4条指令的首址PC低8位 (X+2)=第4条指令的首址PC高8位POP 50H(SP)=X-1POP 51H(SP)=X-2SJMP $ORG 200HRET答:执行过程中,前面两条为立即寻址指令,堆栈不变:执行第三条ACALL指令时,首先 将程序寄存器PC的当前值加2,接着先后将PC的低八位和高八位分别进栈,(SP)= (SP)+2; 然后再将PC内容中的低11位用200H来替代,同时程序跳到第七条ORG200H中,接着 RET表示子程序返回,将原先压入堆栈的PC值弹出,(SP) =(SP)-2;最后两条POP指令执 行后将SP所指地址中的内容赋给50

14、H, SP减1后再将SP所指地址中的内容赋给51H, SP 内容再减1给SP,最后程序结束。13 .请写出能实现下列功能的程序段:(1) 一个16位数据,高低字节分别放在20H和21H中,试将该数乘以2MOV A, 21HCLRCRRCAM0V21KAMOV A, 20HRRCAMOV 20H, A(2) 16位二进制数由高位到低位放在30H和31H单元,将其内容加1:MOV A, 31HADD A,#01HMOV 31H,AMOV A, 30HADDC A.#00HMOV 30H,A(3)将DPTR中的数据减5;CLR CMOV A, DPLSUBB A, #05HMOV DPL, AMOV

15、 A.DPHSUBB A, #00HMOV DPh,A(4)有3个位变量X, Y, Z,请编写程序实现丫=*+丫2的逻辑关系式。X BIT 30HY BIT 31HZ BIT 32HMOV C,YANL C,ZMOV 20H.eMOV C,XORL C,20HMOV Y, C14 .将一个按高低字节存放在21H、20H中的一个双字节乘以2后,再按高低次序将结果存 放到22H、21H、20H单元ORGOSTAR: CLRCMOV 20H.#0E2H;设低字节的数据 是E2HMOV21H.#OF3H;设高字节的数据是F3HMOV A, 20HMOV B.#2HMULABMOV 20H.AMOV 2

16、3H.BMOVA.21HMOV B.#2HMULABADDC A,23HMOV21H.AMOV 22H.BSJMP $END15 .试编程,将片外RAM 1000H-1050H单元的内容置为55H。MOV P2.#10HMOV RO, #00HMOVA.#55HMOVX R0.AMOV R0.#50HL0: MOVX R0,ADJNZ R0,L0SJMP $END16 .试编程统计数据区长度的程序,设数据区从片内RAM 30H单元开始,该数据区以。结 束,统计结果放入2FH中。MOV R0.#30HL0:MOVA,R0JZ LIINC RIINC R0SJMP L0LI: MOV 2FH.R1

17、17 .试编写程序,将片外RAM2OOOH2(X)FH数据区中的数据由大到小排列起来。 ORGOLO: MOV P2.#2OHMOV R0,#00HMOV R7,#OFH CLRFOLOOP: MOVX A,R0MOV 3IKAINC ROMOVX A, ROCLRCCJNEA31HX1LI: JC L2DEC ROMOVX R0.AMOV A.31HINC ROMOVX R0,A SETBFOL2: DJNZ R7.LOOPJB FO.LOSJMPSEND18.若晶振频率位6MHZ,试计算下面延时子程序的延时时间DELAY: MOVLP:MOVDJNZDJNZ RETR7, #0F6HR6,

18、 #0FAHR6,$R7,LP1个机器周期1个机器周期2个机器周期2个机器周期2个机器周期答:机器周期为 2us,则有:1+ (1+2X250+2) X246+2X2 us =247482 us19.试分别编写延时20ms和Is的程序设晶振频率为12M20ms:ORGOMOVR1.#102LI: MOV R0.#48L2: NOPNOPDJNZ R0,L2NOPDJNZRLL19百度文库让每个人平等地提升自我NOPNOPNOPNOPNOPNOPNOPEND Is:ORGOMOV R2.#50L0:MOVRL#100Li: MOV R0.#49 L2: NOPNOPDJNZ R0,L2NOPDJ

19、NZRLL1DJNZ R2,L0SJMP$END20 .试编写利用调用子程序的方法延时Imin的程序。 ORG 0HMOV R2.#60AO:LCALL DLYDJNZ R2,A0SJMPSDLY: MOV R2,#50L0:MOV RI,#100LI:MOV R0.#49L2:NOPNOPDJNZ R0,L2NOPDJNZRLL1DJNZ R2.L0 RETEND21 .用查表程序求06之间的整数的立方。已知整数存在A中,查表结果存入片内RAM 31H 中。ORGOMOV A, #DATAMOV DPTR.#TABMOVC A, A+DPTRMOV 30H.ASJMP $TAB: DB 01

20、8,27,6425,216END若立方数超过一个字节,在两个字节以内,由以下程序实现。ORG 0000HMOV A.#5RLAMOV RO.AMOV DPTR.#TABMOVC A, A+DPTRMOV31H.A :高位MOV A.ROINCAMOVC A,A+DPTRMOV 30H.A :低位SJMP $TAB: DW 0,1,8,27.64,125,216END22 .编写程序,查找在内部RAM的30H50H单元中出现FFH的次数,并将查找结果存入 51H单元aMOVRL#OOHMOV R0.#30HMOV R2.#21HL0: MOVA.R()CJNEA,#OFFH.L1INC RILI

21、: INC RODJNZ R2,L0MOV51H.R1SJMP$END23.试用子程序求多项式:Y=(A+B)2+(B+C)2(要求:两数之和不能超过16)X EQU 30H: X 代表 AYEQU31H;Y 代表 BZEQU 32H:Z 代表 CFEQU 33H:F中存放计算结果YMOV RLXMOV R2.YLCALL L0MOV R3.AMOV RhY MOV R2.Z LCALL LO ADD A.R3 MOV F,A Sjmp $ LO: MOV A.R1ADD A.R2 MOV B,A MUL AB RET end24.已知(60H) =33H.(61H)=43H,试写出程序的功能

22、和运行结果。 ORG OOOOhSS: MOV R0,#61H MOVRL#70H ACALL CRR SWAP A MOVRLA DEC RO ACALLCRR XCHDA,R1 SJMPSCRR:MOVA,RO CLRC SUBB A.#3Oh CJNEA,#OAH.NEQ AJMP BIG NEQ: JC CEN BIG: SUBB A.#07H CEN: RET该程序的运行结果是:(60H)=33H, (61H)=43H. (70H)=C3H25 .内部RAM的30H单元开始存放着一组无符号数,其数目存放在21H单元中。试编写程 序,求出这组无符号数中的最小的数,并将其存入20H单元中

23、。MOV RO.#30H MOVA,RO MOV 20H,A DEC21H LOOP: INC RO MOVA,RO CJNEA,2OH,L1LI: JNC L2MOV 20H.AL2: DJNZ21HXOOP SJMP$END26 .写程序实现散转功能:(R2)=0 转向 RR0 (R2)=l 转向 RR1 (R2)=2 转向 RR2ORGOMOV R2.#2HMOV DPTR.#TABMOV A.R2MOVCA,A+DPTRJMP A+DPTRTAB: DB RRO-TABDB RR 1-TABDB RR2-TABRRO: MOVA,#1SJMP ENDFRR1: MOV A,#2SJMP

24、 ENDFRR2: MOV A.#3SJMP ENDF:设(R2)=2:RRO:将立即数1赋给A:RR1:将立即数2赋给A:RR2:将立即数3赋给AENDF: SJMP S1327.试按子程序形式编程,将单字节二进制数高4位、低4位分别转换成两个字节的ASCII:将R0中的内容作为贝转换对象:取低四位码。MOV A.R0ANL A.#0FHMOV DPTR.#TAB MOVC A,A+DPTR MOV 20H,A MOV A.RO ANL A.ttOFOH SWAP A MOVC A,A+DPTR MOV 21H.A:低四位转换后存放于20H中取高四位:高四位转换后存放于21H中TAB: DB 30H.31 H.32H.33H.34H.35H,36H,37H,38H.39HDB 41H,42H.43H.44H.45H.46H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1