天津大学出版社的单片机课后习题答案.docx
- 文档编号:23130081
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:34
- 大小:27.31KB
天津大学出版社的单片机课后习题答案.docx
《天津大学出版社的单片机课后习题答案.docx》由会员分享,可在线阅读,更多相关《天津大学出版社的单片机课后习题答案.docx(34页珍藏版)》请在冰豆网上搜索。
天津大学出版社的单片机课后习题答案
第二章习题答案
2-2 8051单片机内部包含哪些主要逻辑部件?
各自的功能是什么?
答:
8051单片机内部包含:
1、 中央处理器CPU:
它是单片机内部的核心部件,决定了单片机的主要功能特性,由运算器和控制器两大部分组成。
2、 存储器:
8051单片机在系统结构上采用了哈佛型,将程序和数据分别存放在两个存储器内,一个称为程序存储器,另一个为数据存储器。
在物理结构上分程序存储器和数据存储器,有四个物理上相互独立的存储空间,即片内ROM和片外ROM,片内RAM和片外RAM。
3、 定时器/计数器(T/C):
8051单片机内有两个16位的定时器/计数器,每个T/C既可以设置成计数方式,也可以设置成定时方式,并以其定时计数结果对计算机进行控制。
4、 并行I/O口:
8051有四个8位并行I/O接口(P0~P3),以实现数据的并行输入输出。
5、 串行口:
8051单片机有一个全双工的串行口,可实现单片机和单片机或其他设备间的串行通信。
6、 中断控制系统:
8051共有5个中断源,非为高级和低级两个级别。
它可以接收外部中断申请、定时器/计数器申请和串行口申请,常用于实时控制、故障自动处理、计算机与外设间传送数据及人机对话等。
2-3 8051单片机的存储器分哪几个空间?
通过什么信号来区别不同空间的寻址?
答:
有四个物理上相互独立的存储空间:
片内ROM地址为0000H-0FFFH此时/EA=1;片外ROM地址为0000H-0FFFFH此时/EA=0。
片内数据存储器地址为00H-0FFH;片外数据存储器地址为0000H-0FFFFH;区分片内片外数据存储器通过指令MOV与MOVX。
2-6 内部RAM低128单元划分为哪三个主要部分?
各部分主要功能是什么?
答:
分为三部分:
工作寄存器去,位寻址区,用户RAM区(堆栈、数据缓冲)。
工作寄存器区(00H-1FH):
32个RAM单元共分四组,每组8个寄存单元(R0-R7)。
寄存器常用于存放操作数及中间结果等。
位寻址区(20H-2FH):
此部分16个单元的每一位都有一个8位表示的位地址,位寻址取得每一个单元既可作为一般RAM单元使用,进行字节操作,也可以对单元中的每一位进行位操作。
用户RAM区:
也是数据缓冲区,一般用于存放用户数据及作堆栈区使用。
第三章习题答案
3-1 MCS-51的寻址方式及特点
MCS-51的寻址方式有七种:
1.直接寻址:
指令中直接给出操作数所在的单元地址或位地址 P68
2.立即寻址:
在指令中紧跟在操作码之后的字节是操作数 P69
3.寄存器寻址:
操作数在指令中给出的寄存器内 P69
4.寄存器间接寻址:
指令中指定的寄存器内存的是操作数的地址 P70
5.变址寻址:
指令中给出由基址加变址形成的16位地址作为操作数的地址 P71
6.相对寻址:
指令中给出相对偏移量,该相对偏移量与PC当前值求和得到转移地址 P72
7.位寻址:
指令中给出的位地址或位寄存器里存是所寻的位操作数 P71
3-2 MCS-51的指令按功能分类及各类的作用
MCS-51的指令按功能分5类:
1.数据传送指令:
主要用于数据的传送与交换和栈操作。
P74
2.算术运算指令:
主要用来作算术四则运算、增量、减量及二—十进制调整。
P81
3.逻辑运算指令:
主要用来作“与”、“或”、“异或”、“清除”“求反”及“左右移位”等逻辑运算。
P88
4.位操作指令:
主要用来作“与”、“或”、“清除”、“置位”“求反”等布尔操作及“位传送”操作。
P90
5.控制转移指令:
主要用于改变程序计数器PC的值, 以控制程序执行的走向,有转移、调用及返回操作.P91
3-3 变址寻址和相对寻址中偏移量的异同点
变址寻址:
@A+DPTR ;基址:
DPTR, 变址:
A
@A+PC ;基址:
PC当前值, 变址:
A
变址:
A 中为8位二进制无符号数偏移量(A)∈[0,255] 即[00H,0FFH]
相对寻址:
相对偏移量为8位二进制带符号数的补码
rel∈[-128,+127]
[rel]补码∈[00H,0FFH]
相同点:
偏移量∈[00H,0FFH]
不同点:
变址寻址中偏移量为8位二进制无符号数;相对寻址中偏移量为8位二进制带符号数的补码
3-4 指出下面每条指令的寻址方式:
MOVA,#30H –寄存器、立即–30H立即数
MOVC,30H –寄存器、位 –30H 位地址
MOVXA,@DPTR –寄存器、间接
jC LAB1 –相对
MOV 30H,@R1 –直接、间接 –30H 字节地址
MOV30H,R5 –直接、寄存器 –30H字节地址
MOVCA,@A+PC –寄存器、变址
sjmpLAB2 –相对
3-5 运行下列程序后各单元及A、PSW的内容
(1)
1.
MOVA,#2 ;(A)=02H 00000001(psw)
MOVR1,#30H ;(R1)=30H 00000001
MOV@R1,A ;((R1))=(30H)=02H 00000001
MOV35H,R1 ;(35H)=30H 00000001
XCHA,R1 ;(A)=30H,(R1)=02H 00000000
2.
MOVA,#0F5H ;(A)=0F5H 00000000
MOV30H,#9BH ;(30H)=9BH
MOVR0,#30H ;(R0)=30H
ADDA,#28H ;(A)=1DH 10000000
ADDCA,@R0 ;(A)=0B9H 01000001
3.
CLRC ;(CY)=0
MOV40H,#7AH ;(40H)=7AH
MOVA,#92H ;(A)=92H 00000001
MOVR0,#40H ;(R0)=40H
SUBBA,@R0 ;(A)=92H-7AH-0=18H,(PSW)=44H
4.
MOVA,#79H ;(A)=79H 00000001
MOV30H,#89H ;(30H)=89H
ADDA,30H ;(A)=02H 11000001
DAA ;(A)=68H 10000001
SWAP A ;(A)=86H 10000001
3-6 写出能完成下列数据传送的指令
⑴ R1内容传送到R0
MOVA,R1; MOVR0,A
(2)内部RAM25H单元内容送到35H单元
MOV 35H,25H或MOVA,25H; MOV35H,A ;MOV35H,25H
(3)内部RAM25H单元内容送到P1口
① MOVA,25H; MOVP1,A ;
② MOVP1,25H ;
③ MOV90H,25H
(4)内部RAM40H单元内容送外部RAM2005H单元
MOVA,40H;MOVDPTR,#2005H;MOVX@DPTR,A
(5)外部RAM3000H单元内容送内部RAM25H单元
MOVDPTR,#3000H;MOVXA,@DPTR;MOV25H,A
(6)外部ROM1000H单元内容送内部RAM35H单元
MOVDPTR,#1000H;CLRA;MOVCA,@A+DPTR;MOV35H,A
(7)外部ROM4000H单元内容送外部RAM4000H单元
MOVDPTR,#4000H;CLRA;MOVCA,@A+DPTR;MOVX@DPTR,A
(8)外部RAM1000H单元内容送SP堆栈指针
MOVDPTR,#1000H;MOVXA,@DPTR; MOVSP,A
3-7 BCD码减法,求7954H-4157H=3797H。
算法1:
999AH-4157H=5843H
5843H+7954H并调整
ORG0000H
BCDS:
MOVA,#9AH
CLRC
SUBBA,#57H
MOV 30H,A
MOVA,#99H
SUBBA,#41H
MOV31H,A
MOVA,#54H
ADDA,30H
DA A
MOV20H,A
MOV A,#79H
ADDCA,31H
DA A
MOV21H,A
CPLC
MOV2FH,C
SJMP$
END
循环程序
ORG 0000H
BCDS1:
MOV20H,#54H
MOV21H,#79H
MOV30H,#57H
MOV 31H,#41H
MOVR0,#30H
CLRC
MOVA,#9AH
SUBBA,@R0
MOV40H,A
INCR0
MOVA,#99H
SUBBA,@R0
MOV41H,A
CLRC
MOVR0,#40H
MOVR1,#20H
MOVR2,#2
LOOP:
MOVA,@R0
ADDCA,@R1
DA A
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
CPLC
MOV 7FH,C
SJMP$
END
3-7 顺序程序 算法2
ORG 0000H
BCDS1:
MOV20H,#54H
MOV21H,#79H
MOV30H,#57H
MOV 31H,#41H
MOVR0,#30H
CLRC
MOVA,#9AH
SUBBA,@R0 ;
ADDA,20H ;
DA A ; CY)=0
MOV40H,A
CPL C ; (CY)=1
INCR0
MOVA,#9AH
SUBBA,@R0 ;(CY)=0
ADD A,21H
DA A
MOV41H,A
CPLC
MOV 7FH,C
SJMP $
END
3-8写出下段程序中每一步A、B中的结果
MOVA,#22H ;(A)=22H
MOVB,#05H ;(B)=05H
MOVR0,#08H
MULAB ;(A)=0AAH,(B)=0 00000000
MOVB,R0
DIV AB ;(A)=15H,(B)=02H 00000001
3-9试写出完成如下操作的程序
(1) ORG 0000H
MOVDPTR,#1000H
MOVXA,@DPTR
ANLA,#11110000B
MOVX@DPTR,A
SJMP $
(2) ORL 50H,#00001111B
(3) XRL 50H,#11100000B
(4) MOV 50H,#11110000B
(5) XRL 50H,#0FFH
3-10 30H开始的20个单元数据传送到外部3000H
ORG0000H
MOVR0,#30H
MOVDPTR,#3000H
MOVR7,#20
Loop1:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR7,Loop1
SJMP$
END
3-11 根据R3条件转移 1
ORG0000H
CjneR3,#15,NEQ
sjmpL1 ;=15
NEQ:
jnCL1 ;>15
sjmp$ ;<15
L1:
nop ;≥15
.
ORG0000H
CjneR3,#15,NEQ
sjmpHalt
NEQ:
jCL1 ;<15
sjmpHalt
L1:
nop ;<15
Halt:
sjmp$ ;≥15
ORG0000H
CjneR3,#15,NEQ
sjmpL1
NEQ:
jCL1
sjmp$
L1:
nop ;≤15
ORG0000H
CjneR3,#15,NEQ
sjmpHalt
NEQ:
jnCL1
sjmpHalt
L1:
nop ;>15
Halt:
sjmp$
3-11 根据R3条件转移 2
ORG0000H
CLRC
MOVA,R3
SUBBA,#15
JNC GE15 ;≥15
….
(R3)-15
ORG0100H
CLRC
MOVA,R3
SUBBA,#15
JC GE15 ;<15
….
(R3)-15
ORG0000H
CLRC
MOVA,#15
SUBBA,R3
JNC GE15 ;≤15
….
15-(R3)
ORG0000H
CLRC
MOVA,#15
SUBBA,R3
JC GE15 ;>15
….
15-(R3)
3-12 已知(SP)=53H,(PC)=37FEH执行:
ACALL3A00H后:
(SP)=(SP)+2=55H
(PC)=3A00H
((SP-1))=(54H)=00H;PCL
((SP))=(55H)=38H ;PCH
37FEH:
ACALL3A00H
3800H:
第四章汇编语言程序设计 思考题与习题4及答案
4-13 试编程实现将20H单元的两位BCD数相乘,结果以BCD码的形式存于21H单元当中。
4-13-1 ORG0000H
MOV20H,#56H
MOVA,20H
ANLA,#0FH
MOVB,A
MOVA,20H
ANLA,#0F0H
SWAPA
MOVR2,A
DECB
LOOP:
ADDA,R2
DAA
DJNZB,LOOP
MOV21H,A
SJMP$
END
4-13-2
ORG0000H
MOV20H,#56H
MOVA,20H
MOVR0,#21H
MOV21H,#0
XCHDA,@R0
MOVB,@R0
SWAPA
MOVR2,A
DECB
LOOP:
ADDA,R2
DAA
DJNZB,LOOP
MOV21H,A
SJMP$
END
4-7 设一个加数在50H~52H单元中,另一个加数在53H~55H中,进位存放在位地址00中,试编程实现两数求和。
ORG000H
ONE DATA 50H
TWO DATA 53H
WEI BIT 00H
MOVR0,#ONE
MOVR1,#TWO
; MOVC,WEI
CLRC
MOVR2,#3
LOOP:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
MOVWEI,C
SJMP$
END
4-7-2
ORG0000H
ONE DATA 50H
TWO DATA 53H
WEI BIT 00H
MOVR0,#ONE
MOVR1,#TWO
CLRC
MOVR2,#3
SETBRS0
MOVR0,#58H
CLRRS0
LOOP:
MOVA,@R0
ADDCA,@R1
INCR0
INCR1
SETBRS0
MOV@R0,A
INCR0
CLRRS0
DJNZR2,LOOP
MOVWEI,C
SJMP$
END
4-11试用除法指令将20H单元的两位BCD码变成ASCII码后存入21H和22H单元。
ORG0000H
MOV20H,#67H
MOVA,20H
MOVB,#10H
DIVAB
ADDA,#30H
MOV21H,A
ORLB,#30H
MOV22H,B
SJMP$
END
4-1从20H单元开始存放一组带符号数,其数目已存在1FH单元。
要求统计出大于0、小于0和等于0的个数并存于ONE、TWO、THREE三个单元。
ORG0000H
ONE EQU 30H
TWO EQU 31H
THREE EQU 32H
NUM EQU 1FH
MOVNUM,#0FH
MOV R0,#20H;-1,2,34,0A0H,0....
MOVR1,#ONE
LOOP:
MOV@R1,#0
INCR1
CJNER1,#34H,LOOP
LOOP1:
MOVA,@R0
JZ MTHREE
JBACC.7,MTWO
INCONE
SJMPDJNZZ
MTHREE:
INCTHREE
SJMPDJNZZ
MTWO:
INCTWO
DJNZZ:
INCR0
DJNZNUM,LOOP1;NUM=0FH
SJMP$
END
4-5在用JMP指令实现128分支的程序中,试用LJMP代替AJMP指令。
修改后的程序有何特点?
最多能实现多少分支?
4-5
AJMP指令表 128分支占128*2=256字节MEMORY
LJMP指令表 可以实现256/3=85 个分支
特点:
各分支可在64KB存储器中转移。
4-2设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元,请编出满足如下关系的程序:
X X≥50
Y= 5X 50>X≥20
2X X<20
ORG0000H
VAX EQU 30H
FUNC EQU 31H
MOVVAX,#55;15;20;25;50;55
MOVA,VAX
CJNEA,#20,DO1
DO1:
JNC DO2
MOVB,#2
MULAB
SJMPMEM
DO2:
CJNEA,#50,DO3
DO3:
JNC MEM
MOVB,#5
MULAB
MEM:
MOVFUNC,A
SJMP$
END
X
Y
X
Y
15
2X=30=14H
50
X=50=32H
20
5X=100=64H
55
X=55=37H
25
5X=125=7DH
4-3外部RAM从2000H到2100H有一数据块,请编出将它们传送到外部RAM3000H到3100H区域的程序。
4-7 ORG0000H
MOVDPTR,#2000H
MOVP2,#30H
MOVR0,#00H
MOVR2,#0
LOOP:
MOVXA,@DPTR
MOVX@R0,A
INCDPTR
INCR0
DJNZR2,LOOP ;0—FF--0
MOVXA,@DPTR ;(DPTR)=2100H
INCP2 ;31H
MOVX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天津大学 出版社 单片机 课后 习题 答案