第3章答案指系统1-40.._第1页
第3章答案指系统1-40.._第2页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章指令系统1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。1、指令:CPU根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2,什么是计算机的指令和指令系统?2、见第1题。3,简述89C51汇编指令格式。3、操作码目的操作数,源操作数4,简述89C51寻址方式和所能涉及的寻址空间。4、寻址方式寻址空间立即数寻址程序存储器ROM直接寻址片内RAM低128B、特殊功

2、能寄存器寄存器寻址工作寄存器R0-R7、A、B、C、DPTR寄存器间接寻址片内RAM低128B、片外RAM变址寻址程序存储器(A+PC,A+DPTR)相对寻址程序存储器256B范围(PC+偏移量)位寻址片内RAM的20H-2FH字节地址、部分SFR5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址6,在89C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。6、MOVA,40H;直接寻址

3、(40H)AMOVR0,A;寄存器寻址(A)ROMOVP1,#0F0H;立即数寻址OFOP1MOVR0,30H;直接寻址(30H)f(R0)MOVDPTR,#3848H;立即数寻址3848HfDPTRMOV40H,38H直接寻址(38H)f40HMOVR0,30H;直接寻址(30H)fR0MOVP0,R0;寄存器寻址(R0)fP0MOV18H,#30H;立即数寻址30Hf18HMOVA,R0;寄存器间接寻址(R0)fAMOVP2,P1;直接寻址(P1)fP2最后结果:(RO)=38H,(A)=40H,(P0)=38H,(Pl)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,

4、(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:f左边是内容,右边是单兀7,对89C51片内RAM的高128字节的地址空间寻址要注意什么7、用直接寻址,位寻址,寄存器寻址8,指出下列指令的本质区别。8,MOVA,DATA;直接寻址2字节1周期MOVA,#DATA;立即数寻址2字节1周期MOVDATA1,DATA2;直接寻址3字节2周期MOV74H,#78H;立即数寻址3字节2周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A9,设R0内容为32H,A的内容为48H,片内RAM的32H单元内容为80H,40H单元内容为08H,请指出在执行下列程

5、序段后上述各单元内容的变化。9、MOVA,R0;(R0)=80HfAMOVR0,40H;(40H)=08Hf(R0)MOV40H,A;(A)=80f40HMOVR0,#35H;35HfR0最后结果:(R0)=35H(A)=80H,(32H)=08H,(40H)=80H10,如何访问SFR,可使用哪些寻址方式?10、用直接寻址,位寻址,寄存器寻址11, 如何访问片外RAM,可使用哪些寻址方式?11、只能采用寄存器间接寻址(用MOVX指令)12, 如何访问片内RAM,可使用哪些寻址方式?12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0R7)高128字节:直接寻址,位寻址,寄存

6、器寻址13,如何访问片内外程序存储器,可使用哪些寻址方式?13、采用变址寻址(用MOVC指令)14,说明十进制调整的原因和方法。14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DAA指令调整(加06H,60H,66H)15, 说明89C51的布尔处理机功能。15、用来进行位操作16,已知(A)=83H,(R0)=17H,(17H)=34H,请写出执行完下列程序段后A的内容。16、ANLA,#17H;83HA17H=03HAORL17H,A;34HV03H=37H17HXRLA,R0;03H37H=34HCPLA;34H求反等于CBH所以(

7、A)=CBH17,使用位操作指令实现下列逻辑功能,要求不得改变未涉及位的内容。(1)使ACC.0置1;(2)清除累加器高4位;(3)清除ACC.3,ACC.4,ACC.5,ACC.6。17、(1)SETBACC.0或SETBE0H;E0H是累加器的地址(2) CLRACC.7CLRACC.6CLRACC.5CLRACC.4(3) CLRACC.6CLRACC.5CLRACC.4CLRACC.318,编程实现把内部RAMR0R7的内容传递到20H27H单元。18、MOV27H,R7MOV26H,R6MOV25H,R5MOV24H,R4MOV23H,R3MOV22H,R2MOV21H,R1MOV2

8、0H,R019,试编写程序,将内部RAM20H、21H和22H3个连续单元的内容依次存入2FH、2EH和2DH中。19、MOV2FH,20HMOV2EH,21HMOV2DH,22H20,编写程序,进行两个16位数减法,6F5DH-13B4H,结果存入内部RAM的30H和31H单元,30H存储低8位。20、CLRCMOVA,#5DH;被减数的低8位一AMOVR2,#0B4H;减数低8位一R2SUBBA,R2;被减数减去减数,差fAMOV30H,A;低8位结果一30HMOVA,#6FH;被减数的高8位一AMOVR2,#13H;减数高8位fR2SUBBA,R2;被减数减去减数,差fAMOV31H,A

9、;高8位结果一30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位21,编写程序,若累加器A的内容分别满足下列条件,则程序转至LABEL存储单元。设A中存储的是无符号数。(1)AM10;(2)A>10;AW10。21、(1)A210CJNEA,#0AH,L1LJMPLABELL1:JNCLABEL或者:CLRC;(A)与10比较,不等转L1;相等转LABEL;(A)大于10,转LABEL9;(A)与10比较,不等转L1;相等结束;(A)大于10,转LABEL;(A)小于10,结束;(A)与10比较,不等转L1;相等转LABEL(A)小于10,转L2SUBBA,#0A

10、HJNCLABEL(2)A>10CJNEA,#0AH,L1RETL1:JNCLABELRET或者:CLRCSUBBA,#0AHJNCL1RETL1:JNZLABELRET(3)AW10CJNEA,#0AH,L1L2:LJMPLABELL1:JCL2;RET或者:CLRCSUBBA,#0AHJCLABELJZLABELRET22, 已知(SP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H。问此时执行“RET”指令以后,(SP)=?(PC)=?22、(SP)=23H,(PC)=3412H参看书上80页23, 若(SP)=25H,(PC)=2345

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

12、元置为01H;若未找到,则将51H单元清0。25、MOVR2,#31H;数据块长度fR2MOVR0,#20H;数据块首地址fR0LOOP:MOVA,R0;待查找的数据fACLRC;清进位位SUBBA,#0AAH;待查找的数据是0AAH吗JZL1;是,转L1INCR0;不是,地址增1,指向下一个待查数据DJNZR2,LOOP;数据块长度减1,不等于0,继续查找MOV51H,#00H;等于0,未找到,00H-51HRETL1:MOV51H,#01H;找到,01H-51HRET26,编写指令,查找在内部RAM的20H50H单元中出现00H的次数,并将查找结果存入51H单元。26、MOVR2,#31H

13、;数据块长度一R2;数据块首地址一R0;待查找的数据fA;不为0,转L1;为0,00H个数增1;地址增1,指向下一个待查数据MOVR0,#20HLOOP:MOVA,R0JNZL1INC51HL1:INCR0DJNZR2,LOOP;数据块长度减1,不等于0,继续查找RET27,外部数据RAM中有一个数据块,存有若干字符、数字,首地址为SOURCE。要求将该数据块传送到内部RAM以DIST开始的区域,直到遇到字符“$”时结束(“$”也要传送,它的ASCII码是24H)。27、MOVDPTR,#SOURCEMOVR0,#DISTLOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0CJ

14、NEA,#24H,LOOP下一个字符RET;源首地址fDPTR;目的首地址fR0;传送一个字符;指向下一个字符;传送的是“$”字符吗?不是,传送28,已知R3和R4中存有一个16位的二进制数,高位在R3中,低位在R4中。请编程将其求补,并存回原处。28、MOVA,R3;取该数高8位一AANLA,#80H;取出该数符号判断JZL1;是正数,转L1MOVA,R4;是负数,将该数低8位一ACPLA;低8位取反ADDA,#01H;加1MOVR4,A;低8位取反加1后fR4MOVA,R3;将该数高8位一ACPLA;高8位取反ADDCA,#00H;加上低8位加1时可能产生的进位SETBACC.7MOVR3

15、,A;高8位取反加1后fR3L1:RET29,已知30H和31H中存有一个16位的二进制数,高位在前,地位在后,请编程将它们乘以2,再存回原单元中。29、CLRCMOVA,31HRLCAMOV31H,AMOVA,30HRLCAMOV30H,A;清进位位C;取该数低8位一A;带进位位左移1位;结果存回31H;取该数高8位一A;带进位位左移1位;结果存回30H30,内存中有两个4字节以压缩的BCD码形式存放的十进制数,一个存放在30H33H单元中,一个存放在40H43H单元请编程求他们的和,结果存放在30H33H单元中。30、MOVR2,#04HMOVR0,#30HMOVR1,#40HCLRCLO

16、OP:MOVA,R0ADDCA,R1DAAMOVR0,AINCR0INCR1DJNZR2,LOOPRET32、(1)MOVR0,0FH;2字节,2周期MOVB,R0;2字节,2周期(2)MOVR0#0FH;2字节,1周期MOVB,R0;2字节,2周期(3)MOVB,#0FH;3字节,2周期32,要将片内RAM中0FH单元的内容传送到寄存器B,对0FH单元的内容寻址可以有3种方法:(1)R寻址;(2)R间址;(3)direct寻址。请分别编出相应程序,比较其字节数、机器周期数和优缺点。3字节2周期(好)33,阅读下列程序,要求:(1)说明该程序功能;(2)填写所缺的机器码;(3)修改程序,使片内

17、RAM的内容成为如图3-20所示的结果。字节4周期(差)4字节3周期(中);字节长度fR2;一个加数首地址fRO;另一个加数首地址fRl;清进位位;取一个加数;两个加数带进位位相加;十进制调整;存放结果;指向下一个字节;数据块长度减1,不等于0,继续查找31,编写程序,将片外RAM从2000H开始存放的8个数传送到片内30H开始的单元中。31、MOVR2,#08H;数据块长度一R2MOVRO,#30H;数据块目的地址一ROMOVDPTR,#2000H;数据块源地址fDPTRLOOP:MOVXA,DPTR;传送一个数据MOVR0,AINCDPTR;指向下一个数据INCR0;DJNZR2,LOOP

18、;数据块长度减1,没传送完,继续传送RET7A-MOVR2,#0AH-MOVR0,#50HE4CLRAF6LOOP:MOVR0,A08INCR0DA-DJNZR2,LOOPDONE:33、(1)功能是将片内RAM中50H51H单元清0。(2)7A0A(大家可以看一下书上,对于立即数寻址的话,后面一个字节存放的是立即数)7850(第一个字节的后三位是寄存器,前一个条指令是010也就是指的R2,在这里是R0,所以应该是78,后一个字节存放的是立即数)DAFC(这里涉及到偏移量的计算,可以参考书上56页)34,设(R0)=7EH,(DPTR)=10FEH,片内RAM中7EH单元的内容为0FFH,7F

19、H单元内容为38H,试为下列程序每条指令注释其执行结果。INCR0;(7EH)=00HINCR0;(R0)=7FHINCR0;(7FH)=39HINCDPTR;(DPTR)=10FFHINCDPTR;(DPTR)=1100HINCDPTR;(DPTR)=1101H34、35,下列程序段经汇编后,从1000H开始的各有关存储单元内容将是什么?ORG1000HTAB1:EQU1234HTAB2:EQU3000HDB“START”DWTAB1,TAB2,70H35、解:(1000H)=53H(1003H)=52H(1006H)=34H1001H)=54H1004H)=54H1007H)=30H1002H)=41H1005H)=12H1008H)=00H1009H)=70H36:,阅读下列程序,并要求:(1)说明程序的功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论