微机原理习题答案参考(给学生) 下载本文

内容发布更新时间 : 2024/5/16 5:58:30星期一 下面是文章的全部内容请认真阅读。

微机原理习题答案参考

第一章 微处理机概述

根据自己原来的电路基础,自选第一章部分习题作为作业。

第二章 51单片机硬件结构

习 题:2-8,2-12,2-14思考题:2-3,2-6,2-10,2-11,2-16 补充题:

1、MCS-51单片机由哪几部分功能模块组成?2、概述MCS-51单片机的引脚功能,以及三总线的组成。 3、请叙述51单片机I/O口的应用特性。

1、习题2-8简述MCS-51的片内数据存储器的分区特点。(P38-40) 2、习题2-12简述PSW中各位的意义。(P33) 3、习题2-14简述指令执行中的四种周期及其意义。(振荡周期、状态周期、机器周期、指令周期。P45-46) 4、思考题2-3 51子系列和52子系列的片内资源有何区别?(P31)

5、思考题2-6 8051单片机的片内数据和程序存储器寻址范围各是多少?(P31) 6、思考题2-10 MCS-51中有多少SFR,它们是怎样分布的?(P41)

7、思考题2-11谈谈MCS-51是怎么避免存储空间重叠而产生数据冲突的?(P36)

8、思考题2-16为什么要复位?MCS-51有哪些复位电路?复位后SFR的值各为多少?(P44~45) 9、补充题1 MCS-51单片机由哪几部分功能模块组成?(P31 2.3.1硬件资源) 10、补充题2概述MCS-51单片机的引脚功能,以及三总线的组成。(P33-35 、P46-47) 11、补充题3请叙述51单片机I/O口的应用特性。(P34)

第三章 51单片机指令系统

习题:3-2、3-3、3-4、3-6、3-8、3—11、3-13、3-14

1、习题3-2 MCS-51有哪些寻址方式?各有什么特点?试举例说明。(P52-55) 2、习题3-3已知R0=32H,A=48H,(32H)=80H,(40H)=08H。指出执行下列程序段后上述各单元内容的变化。

MOV A, @R0 ;A=80H MOV @R0, 40H ;(32H)=08H MOV 40H, A ;(40H)=80H MOV R0, #35H ;R0=35H

3、习题3-4已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,请指出以下各条指令的执行结果。

①XCH A, R0 ;A=30H,R0=7A H,PSW=81H ②XCH A, 30H ;A= A5H,(30H)=7A H,PSW=80H ③XCH A, @R0 ;A= A5H,(30H)=7A H,PSW=80H ④XCHD A, @R0 ;A=75H,(30H)=AAH,PSW=81H ⑤SWAP A ;A=A7H,PSW=81H ⑥XCHD A, R0 ;XCHD无此寻址方式 ⑦ADD A, 30H ;A=1FH,(30H)=A5H ,PSW=81H(CY=1 AC=0 OV=0 P=1) ⑧ADD A, #30H ;A=AAH,PSW=04H( CY=0 AC=0 OV=1 P=0) ⑨ADDC A, 30H ;A=20H,(30H)=A5H,PSW=C1H(CY=1 AC=1 OV=0 P=1 ) ⑩SUBB A, 30H ;A=D4H,(30H)=A5H,PSW=84H(CY=1 AC=0 OV=1 P=0)

4、习题3-6试编出把外部RAM的2050H单元中的内容和2060H单元中内容互相交换的程序。

ORG 0000H LJMP START

ORG 0100H

START: MOV DPTR,#2050H

MOVX A,@DPTR MOV R0,A

MOV DPTR,#2060H MOVX A,@DPTR MOV DPTR,#2050H MOVX @DPTR,A MOV A,R0

MOV DPTR,#2060H MOVX @DPTR,A

SJMP $ END

5、习题3-8 已知SP=60H,(30H)=24H,(31H)=10H,试分析执行下列指令后各存储单元中的内容以及相应堆栈区域有何变化。

PUSH 30H ;SP=61H,(61H)=24H PUSH 31H ;SP=62H,(62H)=10H POP DPL ;DPL=10H,SP=61H POP DPH ;DPH=24H,SP=60H

6、习题3-11 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。

MOV 78H, 80H ;85 80 78 (H) MOV 78H, #80H ;85 78 80 (H)

7、习题3-13已知外部RAM中以2000H为始址的存储区有20个带符号补码数,请编程把正数和零取出来存放到内部RAM以20H为始址的存储区,负数不作处理。

ORG 0000H LJMP START

ORG 0100H

START: MOV R0,#20H

MOV DPTR,#2000H MOV R7,#20

READ: MOVX A,@DPTR JB ACC.7,NEG

MOV @R0,A INC R0

NEG: INC DPTR DJNZ R7,READ

SJMP $

END

8、习题3-14已知SP=60H,PC=2030H,试问执行指令LCALL 2348H 后堆栈指针和堆栈中的内容有什么变化,此时机器调用何处子程序?

SP=61H,(61H)=33H SP=62H,(62H)=20H PC=2348 即调用PC=2348处子程序

第四章 汇编语言程序设计

4-3、4-4;4-5、4-6、4-8;4-10、4-12、4-14、4-15 习题4-3若有两个无符号数x、y分别存放在内部存储器的50H、51H单元中,试编写一个程序实现x×10+y,结果送入52H、53H两个单元。

ORG 0000H LJMP START

ORG 0100H

START: MOV A,50H

MOV B,#10 MUL AB

ADD A,51H

JNC SAVE ;加法中无进位,则直接存结果 INC B ;加法中有进位,则高位加1

SAVE: MOV 53H,A ;存结果低位入(53H)

MOV 52H,B ;存结果高位入(52H) SJMP $

END

习题4-4设内部RAM 20H单元有两个非零BCD数,请编出求两个BCD数的积并把积送入21H单元的程序。

方法1: ORG 0000H

LJMP START

ORG 0100H

START: MOV A,20H

ANL A,#0FH

MOV B,A ;分离出BCD数的低位送B MOV A,20H ANL A,#0F0H

SWAP A ;分离出BCD数的高位 MUL AB

MOV 21H,A SJMP $

END

方法2: ORG 0000H

LJMP START

ORG 0100H

START: CLR A

MOV R0,#20H XCHD A,@R0

XCH A,@R0

SWAP A ;分离出BCD数的高位 MOV B,@R0 ;分离出BCD数的低位送B MUL AB

MOV 21H,A SJMP $

END

习题4-5请利用MCS-51带进位左移指令实现将内部RAM 30H~32H三字节内容左移6位,移出的部分存入R2中。试用双循环程序设计方法,给出程序框图和源程序清单,并加入必要的注释。

R2?(30H)?(30H)?(32H)

ORG 0000H LJMP START

ORG 0100H

START: MOV R2,#00H

MOV R7,#06H ;循环左移6位

LOOP : CLR C

MOV R6,#03H ;每一位循环要对三个字节操作,先32H左移、再31H、30H MOV R0,#32H LOOP1: MOV A,@R0

RLC A MOV @R0,A DEC R0

DJNZ R6,LOOP1 MOV A,R2 RLC A ;R2带CY位左移,将30H移出的位左移进R2 MOV R2,A DJNZ R7,LOOP SJMP $ END