资源描述:
《第三章习题与思考题参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、习题与思考题3-8按要求写出相应的指令。(1)把寄存器R6的内容送到累加器A中。(2)把外部RAM1000H单元的内容传送到内部RAM30H单元中。(3)清除内部RAM3FH单元的高4位。(4)使累加器A的最低位置1。(5)清除进位位。(6)使ACC.4和ACC.5置1。(7)把外部ROM2000H单元中的内容送到内部RAM的20H单元中。(8)把外部ROM2000H单元中的内容送到外部RAM的3000H单元中。答案:(1)MOVA,R6(2)MOVDPTR,#1000HMOVXA,@DPTRMOVR0,#30HMOV@R0,A(3)ANL3FH,#0FH(4
2、)ORLA,#01H(5)CLRC(6)ORLA,#30H(7)CLRAMOVDPTR,#2000HMOVCA,@A+DPTRMOV20H,A(8)CLRAMOVDPTR,#2000HMOVCA,@A+DPTRMOVDPTR,#3000HMOVX@DPTR,A3-10编写程序段完成如下要求。(1)将寄存器R0中的内容乘以10(积小于256)。(2)将片内RAM30H单元开始的15个字节的数据传送到片外RAM3000H开始的单元中。(3)将片外RAM2000H开始的5个字节的数据传送到片内RAM·7·20H开始的单元中。(4)有10个字节的二进制数存放在片内RA
3、M以40H开始的单元内,编程找出其中的最大值并存于内部50H单元中。(5)将片外RAM空间2000H~200AH中的数据的高4位变零,低4位不变,原址存放。(6)将外部RAM2040H单元的内容与3040H单元的内容互换。答案:(1)MOVB,#0AHMOVA,R0MULABMOVR0,A(2)ORG0000HMOVR0,#30HMOVDPTR,#3000HMOVR7,#0FHLOOP:MOVA,@R0MOVX@DPRT,AINCR0INCDPTRDJNZR7,LOOPSJMP$END(3)MOVDPTR,#2000HMOVR0,#20HMOVR7,#05HL
4、OOP:MOVXA,@DPTRMOV@R0,AINCR0INCDPTRDJNZR7,LOOPEND(4)ORG0000HMOVA,40H;A寄存器放最大值,且初始化最大值(默认第一个数)MOVR3,#09H;比较次数MOVR0,#41HSTART:CJNEA,@R0,LOOPLOOP:JNCLOOP1;如果比A小,则跳转到LOOP1MOVA,@R0;如果比A大,则更新A的值·7·LOOP1:INCR0DJNZR3STARTMOV50H,ASJMP$END(5)MOVDPTR,#20000HMOVR1,#0BHLOOP:MOVXA,@DPTRANLA,#0FHM
5、OVX@DPTR,AINCDPTRDJNZR1,LOOPSJMP$(6)MOVDPTR,#2040HMOVXA,@DPTRMOVR0,#20HMOV@R0,AMOVDPTR,#3040HMOVXA,@DPTRXCH@R0,AMOVX@DPTRAMOVA,@R0MOVDPTR,#2040HMOVX@DPTR,A3-15设有一带符号的十六位数以补码形式存放在R2、R3寄存器中,试编制求其原码的程序。ORG0000HSTART:MOVA,R3JBACC.7,NEXT;判读符号位,如果是正数则原码与补码一样,如果为负,求原码的方法是符号位不变,其余位取反加1MOVR3
6、,AHERE:SJMP$NEXT:XRLA,#7FH;高八位,符号位不变,其余取反MOVR3,A;放回R3MOVA,R2;低八位XRLA,#0FFH;取反ADDA,#01H;加1MOVR2,A;放回R2·7·MOVA,R3;看低八位是否有向高八位进位ADDCA,#00HMOVR3,ASJMP$END3-16设有一不带符号的十六进制数组,存放在8031单片机片内RAM以BUFFER为首址的连续单元中,其长度为30个字节,要求统计小于10,等于10及大于10的数的个数,并把它们分别存放到片内RAM的LESS、EQUAL、BIG单元中,试编制实现上述要求的程序并画出
7、相应的流程图。ORG0000HBUFFERDATA10HLESSDATA30HEQUALDATA31HBIGDATA32HMOVR0,#BUFFERMOVR7,#1EHMOVLESS,#00HMOVEQUAL,#00HMOVBIG,#00HNEXT:CJNE@R0,#0AH,LOOP1;循环次数INCEQUALAJMPLOOP3LOOP1:JCLOOP2INCBIGAJMPLOOP3LOOP2:INCLESSLOOP3:INCR0DJNZR7,NEXTSJMP$END3-17在外部RAM1000H单元开始的存储区域存放着10个用ASCII码表示的0~9之间的数
8、字,请编程将它们转换成BCD码,然后存