第三章习题79130_第1页
第三章习题79130_第2页
第三章习题79130_第3页
第三章习题79130_第4页
第三章习题79130_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、.习题三1在mcs-51单片机中,寻址方式有几种?其中对片内ram可以用哪几种寻址方式?对片外ram可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内ram寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外ram寻址有:寄存器间接寻址方式。2在对片外ram单元寻址中,用ri间接寻址与用dptr间接寻址有什么区别?答:片外数据存储器寻址中,用ri间接寻址只能访问低端的256字节单元,而用dptr作指针间接访问可

2、访问整个64k字节。3在位处理中,位地址的表示方式有哪几种?答:1直接位地址(00h0ffh)。例如:20h2字节地址带位号。例如:20h.3表示20h单元的3位。3特殊功能寄存器名带位号。例如:p0.1表示p0口的1位。4位符号地址。例如:tr0是定时/计数器t0的启动位。4写出完成下列操作的指令。(1)r0的内容送到r1中。mov a,r0mov r1,a(2)片内ram的20h单元内容送到片内ram的40h单元中。mov 40h,20h(3)片内ram的30h单元内容送到片外ram的50h单元中。mov a,30hmov r0,#50hmovx r0,a(4)片内ram的50h单元内容送

3、到片外ram的3000h单元中。mov a,50hmov dptr,#3000hmovx dptr,a(5)片外ram的2000h单元内容送到片外ram的20h单元中。mov dptr,#2000hmovx a,dptrmov 20h,a(6)片外ram的1000h单元内容送到片外ram的4000h单元中。mov dptr,#1000h精品.movx a,dptrmov dptr,#4000hmov dptr,a(7)rom的1000h单元内容送到片内ram的50h单元中。mov a,#0mov dptr,#1000hmovc a,a+dptrmov 20h,a(8)rom的1000h单元内容

4、送到片外ram的1000h单元中。mov a,#0mov dptr,#1000hmovc a,a+dptrmovx dptr,a5区分下列指令有什么不同?(1)mov a,20h和mov a,#20h答:前者源操作数是直接寻址,后者源操作数立即寻址。(2)mov a,r1和movx a,r1答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。(3)mov a,r1和mov a,r1答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。(4)movx a,r1和movx a,dptr答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器

5、整个64k字节。(5)movx a,dptr和movc a,a+dptr答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。6设片内ram的(20h)=40h,(40h)=10h,(10h)=50h,(p1)=0cah。分析下列指令执行后片内ram的20h、40h、10h单元以及p1、p2中的内容。mov r0,#20hmov a,r0 ;a=40hmov r1,a;r1=40hmov a,r1;a=10hmov r0,p1;(40h)=0cahmov p2,p1p2=0cahmov 10h,a(10h)=10hmov 20h,10h(20h)=10h结果:(20h)=10h

6、、(10h)=10h、(40h)=0cah、p2=0cah和p1=0cah7已知(a)=02h,(r1)=7fh,(dptr)=2ffch,片内ram(7fh)=70h,片外ram(2ffeh)=11h,rom(2ffeh)=64h,试分别写出以下各条指令执行后目标单元的内容。精品.(1)mov a,r1结果:累加器a等于70h(2)movx dptr,a结果:片外ram(2ffch)单元等于02h(3)movc a,a+dptr结果: 累加器a等于64h(4)xchd a,r1结果:累加器a等于00h,片内ram(7fh)单元等于72h8已知:(a)=78h,(r1)=78h,(b)=04h

7、,cy=1,片内ram(78h)=0ddh,(80h)=6ch,试分别写出下列指令执行后目标单元的结果和相应标志位的值。(1)add a,r1;累加器a等于55h,cy等于1(2)subb a,#77h;累加器a等于00h,cy等于0(3)mul ab;累加器a等于e0h,b寄存器等于01h,cy等于1,ov等于0(4)div ab;累加器a等于1eh,b寄存器等于00h,cy、ov等于0(5)anl 78h,#78h;片内ram(78h)单元等于58h(6)orl a,#0fh;累加器a等于7fh(7)xrl 80h,a;片内ram(80h)等于14h9设(a)=83h,(r0)=17h,(

8、17h)=34h,分析当执行完下面指令段后累加器a、r0、17h单元的内容。anl a,#17h;a=03horl 17h,a;(17h)=37hxrl a,r0;a=34hcpl a;a=cbh结果:a=cbh,(r0)=17h,(17h)=37h10写出完成下列要求的指令。(1)累加器a的低2位清零,其余位不变。anl a,#11111100b(2)累加器a的高2位置“1”,其余位不变。orl a,#11000000b(3)累加器的高4位取反,其余位不变。xrl a,#11110000b(4)累加器第0位、2位、4位、6位取反,其余位不变。xrl a,#01010101b11说明ljmp指

9、令与ajmp指令的区别?答:ljmp指令后面提供的是16位目标地址,所以可以转移到64kb程序存储器的任意位置,缺点是:执行时间长,字节数多。ajmp指令后带的是11位直接地址,执行时,先将程序指针pc的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针pc的低11位,而程序指针的高5位不变,只能在当前2k范围内转移。12设当前指令cjne a,#12h,10h的地址是0ffeh,若累加器a的值为10h,则该指令执行后的pc值为多少?若累加器a的值为12精品.h呢?答:指令执行后的pc值为1011h,若累加器a的值为12h,则指令执行后的pc值为1001h。13用位

10、处理指令实现p1.4=p1.0(p1.1p1.2)/p1.3的逻辑功能。程序:movc,p1.1orlc,p1.2anlc,p1.0orlc,/p1.3movp1.4,c14下列程序段汇编后,从1000h单元开始的单元内容是什么?org 1000htab: db 12h,34hds 3dw 5567h,87h答:(1000h)=12h,(1001h)=34h,(1002h)=00h,(1003h)=00,(1004h)=00,(1005h)=67h,(1006h)=55h,(1007h)=87h,(1008h)=00h15试编一段程序,将片内ram的20h、21h、22h单元的内容依次存入片外

11、ram的20h、21h、22h中。程序:movr0,#20hmovr2,#03hloop:mov a,r0movxr0,aincr0djnzr2,loopsjmp$16编程实现将片外ram的2000h2030h单元的内容,全部搬到片内ram的20h单元开始位置,并将源位置清零。程序:movr0,#20hmovdptr,#2000hmovr2,#30hloop:movxa,dptrmov r0,amova,#00movxdptr,aincdptrincr0精品.djnzr2,loopsjmp$17编程将片外ram的1000h单元开始的100个字节数据相加,结果放于r7r6中。程序:movdptr

12、,#1000hmovr2,#100movr7,#00movr6,#00loop:movxa,dptradda,r6movr6,amova,r7addca,#0movr7,aincdptrdjnzr2,loopsjmp$18编程实现r4r3r2,结果放于r7r6r5中。程序:org0100hmul1:mov a,r2mov b,r3mul ab ;r2r3,结果的低字节直接存入积的r5mov r5,a ;结果的高字节存入r6中暂存起来mov r6,bmul2:mov a,r2mov b,r4mul ab ;r2r4,结果的低字节与r6相加后,再存入r6中add a,r6mov r6,amov a

13、,b ;结果的高字节加上进位位后存入r7中addc a,#00mov r7,asjmp$19编程实现把片内ram的20h单元的0位、1位,21h单元的2位、3位,22h单元的4位、5位,23h单元的6位、7位,按原位置关系拼装在一起放于r2中。程序:movc,20h.0mova.0,c精品.movc,20h.1mova.1,cmovc,21h.2mova.2,cmovc,21h.3mova.3,cmovc,22h.4mova.4,cmovc,22h.5mova.5,cmovc,23h.6mova.6,cmovc,23h.7mova.7,cmovr2,a20用查表的方法实现一位十六进制数转换成ascii。程序:(设一位十六进制数放在r2中,轮换的ascii也放于r2中)c16stasc:movdptr,#tabmova,r2movca,a+dptrmovr2,arettab:db 30h,31h,

温馨提示

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

评论

0/150

提交评论