单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案

发布时间 : 星期一 文章单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案更新完毕开始阅读

单片机原理及应用技术苏家建

课后习题参考答案

第三章MCS-51指令系统

3-1MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令?

3-2设A=0FH,R0=30H,片内RAM的(30H)=0AH,(31H)=0BH,(32H)=0CH,下列程序段运行后的结果? MOVA,@R0;A=0AH

MOV@R0,32H;(30H)=0CH MOV32H,A;(32H)=0AH MOVR0,#31H;R0=31H

MOVA,@R0;A=(31H)=0BH 3-3

(1)R0的内容传送到R1 MOVA,R0 MOVR1,A

(2)内部RAM20H单元的内容传送到A MOVA,20H

(3)外部RAM30H单元的内容传送到R0 MOVR1,#30H MOVXA,@R1 MOVR0,A

(4)外部RAM30H单元的内容传送到内部RAM20H单元

MOVR1,#30H MOVXA,@R1 MOV20H,A

(5)外部RAM1000H单元的内容传送到内部RAM20H单元

MOVDPTR,#1000H MOVXA,@DPTR MOV20H,A

(6)程序存储器ROM2000H单元的内容传送到R1 MOVDPTR,#2000H CLRA MOVCA,@A+DPTR MOVR1,A

(7)RAM2000H单元的内容传送到内部RAM20H单元

MOVDPTR,#2000H MOVXA,@DPTR MOV20H,A

(8)RAM2000H单元的内容传送到外部RAM30H单元

MOVDPTR,#2000H MOVXA,@DPTR

MOVR0,#30H MOVX@R0,A

(9)RAM2000H单元的内容传送到外部RAM1000H单元

MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#1000H MOVX@DPTR,A

3-4设内部RAM30H=5AH,5AH=40H,40H=00H,P1=7FH,下面程序执行后的结果如何? MOVR0,#30H;R0=30H MOVA,@R0;A=(30H)=5AH MOVR1,A;R1=5AH MOV@R1,P1;(5AH)=7FH MOVA,P1;A=7FH MOV40H,#20H;(40H)=20H MOV30H,40H;(30H)=00H

3-5编程,将内部RAM20H-2FH共16个连续单元清零 ORG0100H

MOVR0,#20H MOVR2,#16

LOOP: MOV@R0,#00H INCR0 DJNZR2,LOOP END

3-6编程,求出内部RAM20H单元中的数据含“1”的个数,并将结果存入21H单元中。 ORG0100H MOV21H,#0 MOVR2,#8 MOVA,20H CLRC LOOP: RLCA JCCOUNT DJNZR2,LOOP SJMPSTOP COUNT:INC21H DJNZR2,LOOP STOP:SJMP$ END

3-7编程,找出内部RAM30H-50H单元中出现FFH的次数,并将结果存入51H单元中。

ORG0100H MOV51H,#0 MOVR0,#30H

MOVR2,#20H LOOP:MOVA,@R0 CJNEA,#0FFH,AGAIN INC51H AGAIN:INCR0 DJNZR2,LOOP

SJMP$ END

3-8编程,计算?2i,并将结果存入内部的30H单元

10i?0ORG0100H

MOV30H,#0

MOV31H,#0;i的初值 MOVR0,#30H MOVR2,#11 MOVA,31H LOOP:INC31H

ADDA,@R0 MOV@R0,A MOVA,31H RLA DJNZR2,LOOP

SJMP$ END

3-9已知片内RAM(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H.说明下列指令源操作数的寻址方式,及指令执行的结果 MOVA,40H;A=48H直接寻址 MOVR0,A;R0=48H寄存器寻址 MOVP1,#0F0H;P1=0F0H直接寻址 MOV@R0,30H;(48H)=38H寄存器间接寻址 MOVDPTR,#3848H;DPTR=3848H直接寻址 MOV40H,38H;(40H)=(38H)=40H直接寻址 MOVR0,30H;R0=(30H)=38H寄存器寻址 MOVP0,R0;P0=38H直接寻址 MOV18H,#30H;(18H)=30H直接寻址

MOVA,@R0;A=(38H)=40H直接寻址 MOVP2,P1;P2=0F0H直接寻址

3-10设R0=32H,A=48H,片内RAM(32H)=80H,(40H)=08H.求指令运行的结果 MOVA,@R0;A=(32H)=80H MOV@R0,40H;(32H)=(40H)=08H

MOV40H,A;(40H)=80H MOVR0,#35H;R0=35H

3-11设A=83H,R0=17H,片内RAM(17H)=34H,求指令运行的结果

ANLA,#17H;A=03H ORLA,17H;(17H)=(37H

XRLA,@R0;A=37H CPLA;A=C8H

3-12编程实现片内RAM20H-2FH与30H-3FH中数据的对换 ORG0100H MOVR0,#20H MOVR1,#40H MOVR2,#0FH LOOP: MOVA,@R0 MOV@R1,A INCR0 INCR1 DJNZR2,LOOP MOVR0,#30H MOVR1,#20H MOVR2,#0FH LOOP1: MOVA,@R0 MOV@R1,A INCR0 INCR1 DJNZR2,LOOP1

MOVR0,#30H MOVR1,#40H MOVR2,#0FH LOOP1: MOVA,@R1 MOV@R0,A INCR0 INCR1 DJNZR2,LOOP1 SJMP$ END

3-13 A=34H,(30H)=4FH,ADDA,30H执行后的结果 A=83H,PSW=41H

3-14SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26)=56H,执行RET后SP=?PC=? SP=23H,PC=3412H

3-15SP=25H,PC=2345H,标号LABEL所在的地址3456H,执行LCALLLABEL后SP=?PC=?,堆栈中的数据有何变化? SP=27H(26H)=48H(27H)=23HPC=3456H

联系合同范文客服:xxxxx#qq.com(#替换为@)