mcs-51第四章答案 汇编语言程序设计
- 格式:pdf
- 大小:118.38 KB
- 文档页数:4
第二章单片机结构及原理 1、MCS-51 单片机内部包含哪些主18bit CPU 是234K ROM4128B RAM516bit 定时器/632 根可编程I/O准8 4 I/O I/O 线都能独立地作输入或输出。
782操作的命令。
程序是根据任务要求有序编排指令的集合。
3、如何认识 89S51/52 存储器空间在物理结构上可以划分为 4 个分为3 89S51/52 存片外程序存储器、片内数据存储器、片外数据存储器。
在逻辑64KB 程序存储器地址25664数据存储器地址空间。
4CPU 使用的是哪组工CPU 如何确定和改变当前工CPU 使用的是第0 组工作寄00H07H CPU 通过改变状态字寄存器PSW中的RS0 和RS1 来确定工作寄存器组。
5SP 重新赋果CPU SP 应该多SP复位后指向07H 00H1FH 20H2FHSP 重新赋值。
如果CPU SP 应该至少设置为0FH。
6、89S51/52 的时钟周期、机器周期、指令周期8MHz 个单片机周期为中最基本的、最小的时间单位。
机器周期是指完成一个基本操12 个时钟周期组成。
指令周由若干个机器周期组成。
若fosc=8MHz=1/8×12μ s=1.5μ s 7、89S51/52 扩为什么不会据存储器使用不同的指令用来区分同一地址空间。
8、程序状态字寄存器PSWPSW是8PSW中各位状态通常是在指令执行的过程中自PSW.7Cy PSW.6ACPSW.5F0志位。
PSW.4、PSW.3RS1 和 RS0PSW.2OV PSW.1 PSW.0 P 9、位地址7CH 和字节地址7CH 有何区7CH 7CH87CH 是内部数据存储器中位寻址区中的一1 位二进制数。
位地址 7CH 具体在片内数据存储器字节地址为2FH 中的第4 2FH.4 10、89S51/52 中4 个I/O 89S51/52 的片外三I/O 端口是单片机与外界联系的重要8 P0 16 P0 8P2 8 PSEN ALERD WR EA P3 口。
第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
第四章汇编语言程序设计习题答案一、单项选择题1.C2.B3.C4.C5.C6.A7.A8.C9.B10. D11.B12.B13.D14.C15.C16.A17.D18.D19.A20. C21.B22.D23.D24. A二、多项选择题1.ABCEF2.ACE3.AC4.ABCD三、填空题1.PARA2.1,2,60,120, 13.SEGMENT,ENDS4.12005.段内转移,段间转移6.AH7.过程,PROC,RET,NEAR,FAR8.LEA BX,BUF9.1, 410..0504H11.ASM,EXE12.立即寻址,直接寻址四、判断题××××V V V××V五、程序分析题1. 32.12H,3412H3.46H,73H4.(1) 从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。
(2) ZF=1, 说明已找到字符ZF=0, 说明未找到字符CX 0,说明中途已找到字符退出CX=0,且ZF=0说明串中无字符‘0’5.1, 0, 3, 2, 5, 4, 7, 6, 9, 86.87H,81H7.44AAH,44D5H8.DEC CX,JNC,JZ9.JNZ L210.ADC DX,0,CLC11.AAS12.STOSB13.1,3,1,2, 214.(2000H)=39H (2001H)=00H将(2000H),(2001H)两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入(2000H)单元,0 (2001H)15.A)2345H,6780HB)将DX、AX中存放的32位二进制数向左移动4位16.0 ,1009H0对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个17.20H,10,T18.①$-BUF②ASSUME CS:CODE,DS:DATA③MOV DS,AXMOV AX,0⑤JLE NEXT⑥JNZ NEXT⑦JNZ LOPA⑧BEGIN19.不相同,第一个数据段72H在前,04在后,后一个04H在前,72H在后。
《单片机原理及接口技术(修订本)》部分习题与参考答案第1章绪论1-2 什么叫单片机一个完整的单片机芯片至少有哪些部件答:将微处理器(CPU)、存储器、定时/计数器及输入输出接口电路等部件集成在一块集成电路上,称为单片微型计算机,简称单片机。
一个完整的单片机芯片至少有中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、定时/计数器及I/O接口等部件。
1-5 Intel 公司的主要单片机产品分为哪几大系列各系列的区别何在答:Intel公司的MCS-48系列、MCS-51系列、MCS-96系列产品;48系列的单片机在片内集成4位CPU,片内含有多种I/O接口,有的根据不同用途还配有许多专用接口,价格便宜,控制功能强。
51系列的单片机在片内集成8位CPU、片内RAM为128字节,ROM为4K字节,4个并行I/O口、2个16位定时/计数器、串行接口、5个中断源。
96系列单片机CPU为16位,片内RAM为232字节,ROM为8K字节,片内带有高速输入输出部件,多通道10位A/D转换部件,中断处理为8级。
1-6 叙述51子系列与52子系列的区别答:51子系列包含8031/8051/8751三种型号,它们的基本组成、基本性能都相同,都具有一个8位CPU、片内数据存储器RAM128B、2个16位定时/计数器、有5个中断源,一个全双工串行接口,它们之间的区别在于片内程序存储器配置:8031片内没有ROM,使用时需在片外接EPROM。
8051片内含有4KB的掩模ROM,其中的程序是生产厂家制作芯片时烧制的。
8751片内含有4KB的EPROM,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。
52子系列包含8032/8052/8752三种型号,52子系列与51子系列的区别在于:片内ROM 和RAM的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。
第2章 MCS-51系列单片机的结构及原理2-2 MCS-51单片机的引脚有何功能在使用8031时如何接法使用8751时如何接法答:引脚是片内外程序存储器的选择信号。
单⽚微机原理系统设计与应⽤课后部分习题答案第⼆章 MCS-51单⽚机硬件结构2-5. 8051单⽚机堆栈可以设置在什么地⽅?如何实现?答:8051单⽚机堆栈可以设置在内部RAM中。
当系统复位时,堆栈指针地址为07H,只要改变堆栈指针SP的值,使其为内部RAM中地址量,就可以灵活的将堆栈设置在内部RAM中。
2-16. 8051单⽚机内部数据存储器可以分为⼏个不同的区域?各有什么特点?2-21.复位后,CPU内部RAM各单元内容是否被清除?CPU使⽤的是哪⼀组⼯作寄存器?它们的地址是什么?如何选择确定和改变当前⼯作寄存器组?答:复位并不清除CPU内部RAM单元中内容,掉电会清除内部RAM 中内容。
复位以后因为PSW=00H,所以选择⼯作寄存器0区,所占地址空间为00H-07H。
⼯作寄存器组可以查询PSW中的RS1(PSW.4)和RS0(PSW.3)来确定,改变当前RS1和RS0的值即可改变当前⼯作寄存器组。
2-22.指出复位后⼯作寄存器组R0-R7的物理地址,若希望快速保护当前⼯作寄存器组,应采取什么措施?答:复位⼯作寄存器组R0-R7的物理地址为00H-07H。
如希望快速保护当前⼯作寄存器组,可以通过改变PSW中RS1(PSW.4)和RS0(PSW.3)的当前值来完成。
第三章 MCS-51指令系统3-6.设系统晶振为12MHz,阅读下列程序,分析其功能,并⼈⼯汇编成机器代码。
答:因为AJMP指令必须有PC指针地址,所以本题解题时设程序开始地址为1000H。
本程序完成功能是使P1.0⼝输出⽅波:T=2*((3*250+2+2)*10+1+2+2)=15090us=15.09ms翻译成机器语⾔的难点在于AJMP⼀句,根据AJMP指令代码可知,该指令为2个字节,⾼8为字节构成为“A10A9A800001”,低8位字节构成为“A7-A0”。
⼜有设置了程序起始地址为1000H,很容易可以写出各指令的地址,AJMP的绝对转移⽬标地址为1002H,A10=0、A9=0、A8=0,所以机器代码为“01 02”,⽬标地址在2区,因为A15-A11为“00010”。
第四章汇编语言程序设计
1 题若晶振为12MHz,试编制延时2ms和1s子程序。
答:延时2ms:
DELY: MOV R7, #10
DLY0: MOV R6, #98
NOP
DLY1: DJNZ R6, DLY1
DJNZ R7, DLY0
RET
延时1s:
DELY: MOV R0, #50
LP11: MOV R1, #100
LP22: MOV R2, #100
LP33: DJNZ R2, LP33
DJNZ R1, LP22
DJNZ R0, LP11
RET
4 题试求20H和21H单元中16位带符号二进制补码数的绝对值,并送回20H和21H单元,高位在先,低位在后。
答:方法一:
先判断符号位,若为0则不作任何处理(因为正数的补码数与原数相同,而0的补码数就是0)。
若符号位为1,则用0减去该数即可。
编程如下:
ORG 1000H
MOV A, 20H
JNB ACC.7, DONE
CLR C
CLR A
SUBB A, 21H
MOV 21H, A
CLR A
SUBB A, 20H
MOV 20H, A
DONE: SJMP $
END
方法二:可用变反加“1”来完成。
ORG 1000H
MOV A, 20H
JNB ACC.7, DONE
CPL A
MOV 20H, A
MOV A, 21H
CPL A
MOV 21H, A
CLR C
MOV A, 21H
ADD A, #1
MOV 21H, A
MOV A, 20H
ADDC A, #0
MOV 20H, A
DONE: SJMP $
END
5题试求内部RAM 30~37H单元8个无符号数的算术平均值,结果存入38H单元。
答:方法一:相加后和放在R3:38H中,然后将结果整体右移3位,得数放在38H单元中。
ORG 1000H
START: MOV R7, #07H
MOV R3, #00H
MOV A, 30H
MOV R0, #31H
LOOP: ADD A, @R0
JNC NEXT
INC R3
NEXT: INC R0
DJNZ R7, LOOP
MOV 38H, A
MOV R7, #3
LOOP1: CLR C
MOV A, R3
RRC A
MOV R3, A
MOV A, 38H
RRC A
MOV 38H, A
DJNZ R7, LOOP1
SJMP $
END
方法二:相加后和放在R3:38H中,然后将R3中的数乘以25,将38H 中的数除以23,然后将两个结果相加,放入38H单元中。
ORG 1000H
START: MOV R7, #07H
MOV R3, #00H
MOV A, 30H
MOV R0, #31H
LOOP: ADD A, @R0
JNC NEXT
INC R3
NEXT: INC R0
DJNZ R7, LOOP
MOV 38H, A
PR: MOV A, R3
MOV B, #32
MUL AB
MOV R3, A
MOV A, 38H
MOV B, #8
DIV AB
ADD A, R3
MOV 38H, A
6题试编一数据块搬迁程序。
将外部RAM 2000H~204FH单元中的数,移入内部RAM 30H~7FH单元中。
编程如下:
ORG 1000H
MOV R0, #50H
MOV R1, #30H
MOV DPTR, #2000H
LP1: MOVX A, @DPTR
MOV @R1, A
INC R1
INC DPTR
DJNZ R0, LP1
END。