mcs-51第四章答案 汇编语言程序设计

合集下载

《单片机原理及应用》(张迎新) 课后习题答案 电子工业出版社

《单片机原理及应用》(张迎新) 课后习题答案 电子工业出版社

第二章单片机结构及原理 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字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。

(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。

)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。

操作数:给指令的操作提供数据或地址。

注释:是对语句或程序段的解释说明。

(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。

冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。

第4章 MCS-51单片机汇编语言程序设计

第4章 MCS-51单片机汇编语言程序设计
开始
程序清单:
送转移地址序号
A,R3 ;取序号 A ;序号乘2 DPTR, #JTAB ;32个子程序 首地址送DPTR JMP @A+DPTR ;根据序号转移 JTAB: AJMP ROUT00 ;32个子程序首地址 AJMP ROUT01 … MP: MOV RL MOV AJMP ROUT31
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
【例4-1】
双字节二进制数求补。
程序说明:对R3(高8位)、R2(低8位)中的二进制定 点数取反加1即可得到其补码。
开始
程序清单:
BINPL:MOV A,R2 CPL A ADD A,#01H MOV R2,A MOV A,R3 CPL A ADDC A,#00H MOV R3,A RET ;低位字节取反 ;加1 ;低位字节补码送R2 ;高位字节取反 ;加进位 ;高位字节补码送R3
散转生成正确偏移号
置换指令地址表首址
转入R3指示的程序
AJMP
……
AJMP
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
3.循环程序
包括:循环初始化、循环处理、循环控制
开始 置初值 循环体 循环结束? Y 循环修改 N 循环体 循环结束? N Y 结束 循环修改 结束 开始 置初值
;调用查表子程序 ; 暂存R1中 ;调查表子程序 ;平方和存A中 ;等待
取第一个数→A 调查表子程序 结果存入R1 取下一个数→A 调查表子程序 两数平方相加 存结果
子程序清单:
SQR: INC A ;加RET占的一个字节 MOVC A,@A+PC ;查平方表 RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 END

MCS-51汇编语言程序设计

MCS-51汇编语言程序设计

01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
2
本章目录
4.2.1 顺序结构程序 4.2.2 分支结构程序 4.2.3 循环结构程序 4.2.4 查表程序 4.2.5 子程序 4.3 汇编语言程序设计实例 习题与思考题
4.1 程序设计概述 4.1.1 程序设计的步骤 4.1.2 程序设计的方法 4.1.3 汇编语言的规范 4.1.4 汇编语言程序编辑和 汇编 4.2 结构化程序设计方法
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
15
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
---伪指令 伪指令DW 伪指令
功能: DW 指令是在程序存储器 ( ROM ) 中 , 从指定的 指令是在程序存储器( 功能 : DW指令是在程序存储器 ROM) 地址单元开始,定义若干个16位数据 一个16位数 位数据。 地址单元开始,定义若干个16位数据。一个16位数 要占两个存储单元,其中高8位存入低地址单元, 要占两个存储单元, 其中高 8位存入低地址单元, 位存入高地址单元。 低8位存入高地址单元。 例如: 例如: ORG 1100H 1100H TAB : DW 1234H, 0ABH 10 1234H, 以上伪指令经汇编以后, 将对从1100H 以上伪指令经汇编以后 , 将对从 1100H 开始的若 干内存单元赋值。 干内存单元赋值。
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
16
4.1.3 汇编语言的规范
例如:ORG 1100H 例如: TAB :DW 1234H, 0ABH 10 (1100H)=12H (1101H)=34H (1102H)=00H (1103H)=ABH (1104H)=00H (1105H)=0AH

第4章 MCS-51汇编语言程序设计

第4章 MCS-51汇编语言程序设计

n
第4章 MCS-51汇编语言程序设计
当i=n时,yn+1即为所求n个数据之和y。这种形式的 公式叫递推公式。在用单片机的汇编程序实现时,yi 是一个变量,这可用式(4-3)表示:
0 y 1 i y xi yi i 1 i
in
根据这个公式,可以画出程序框图,如图4.1所示。
第4章 MCS-51汇编语言程序设计
4.3.1 程序总体结构 • MCS-51单片机的汇编程序由主程序、若干个子程序、中 断服务程序等组成。 • 由于MCS-51单片机复位后PC=0000H,也就是程序从程 序存储器的0000H开始执行,由于MCS-51单片机程序存 储器的0003H、000BH、0013H、001BH、0023H分别是 外部中断0、定时器0、外部中断1、定时器1、串行口的中 断入口地址,所以主程序开始的地址一般安排在0030H之 后的程序存储器中。一般在程序存储器的0000H开始放一 条无条件转移指令(AJMP、LJMP、SJMP)转到主程序的 开始处。如果要使用某些中断,则在相应的中断入口地址 也放一条无条件转移指令,多数情况下用LJMP指令,这 是因为使用LJMP指令可使中断服务程序在单片机程序存 储器中的任意位置编写。图4.3是MCS-51单片机的程序总 体结构图。
第4章 MCS-51汇编语言程序设计
2. 汇编 • 汇编语言必须经过机器汇编或人工汇编才能得到相应的机 器程序,即目标程序,以供单片机识别和执行。由于人工 汇编工作量大,容易出错,现已不用。机器汇编一般是在 PC上利用一些汇编软件进行。目前几乎所有的单片机仿 真器配的开发软件都有汇编程序,在源程序编写完成后使 用汇编功能菜单即可进行对源程序汇编。在汇编时若发现 源程序有语法错误或跳转超出范围等情况,系统会将错误 显示给用户。用户在改正错误后,需再对源程序进行汇编, 直到源程序完全没有语法错误。此时汇编程序会生成与其 对应的目标文件。一般情况下是生成HEX(十六进制)和 BIN(二进制)文件。没有语法错误并不等于程序开发成功, 一般来说还要对程序进一步调试、修改,运行无误后,程 序才算最终完成。这时才可将目标文件写入到程序存储器 中。

汇编语言程序设计课后习题答案

汇编语言程序设计课后习题答案

第四章汇编语言程序设计习题答案一、单项选择题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在后。

第4章 MCS-51单片机汇编语言程序设计(2)

第4章 MCS-51单片机汇编语言程序设计(2)
START:MOV DPTR,#TAB : MOV A,R7 ADD A,R7 MOV R3,A MOVC A,@A+DPTR
XCH A,R3 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR TAB DW DW A0 A1
…………. DW AN
INC
DPTR
MOVX A,@DPTR SUBB A,R7 JNC XCH BIG1 A,R7
BIG0:INC DPTR
实现程序如下: 实现程序如下
START:CLR C : MOV DPTR,#ST1 , MOVX A,@DPTR , MOV R7,A
MOVX @DPTR,A RET BIG1:MOVX A,@DPTR SJMP BIG0
实现程序如下: 实现程序如下 MOV 30H, 20H ANL 30H,#00011111B MOV A,21H SWAP A RL A ANL A,#11100000B ORL 30H,A
第4章 MCS-51单片机汇编语言程序设计
实现程序如下: 实现程序如下 例 A,@R1 ADDC4.3 做3个字节的 无符号的加法. 无符号的加法.设一个加 MOV R0,#52H , MOV @R0,A 数存放在内部RAM 50H、 RAM的 数存放在内部RAM的50H、 MOV R1,#55H , DEC R0 51H、52H单元中 单元中, 51H、52H单元中,另一 DEC R1 RAM的53H、 MOV A,@R0 个加数存放在RAM 个加数存放在RAM的53H、 MOV A,@R0 54H、55H单元中 单元中, 54H、55H单元中,相加 ADD A,@R1 结果存内部RAM的50H、 结果存内部RAM的50H、 RAM ADDC A,@R1 51H、52H单元 单元, 51H、52H单元,均从高 MOV @R0,A 字节开始存放, 字节开始存放,进位存放 MOV 00H,C 在位寻址区的00H位中。 00H位中 在位寻址区的00H位中。 MOV @R0,A DEC DEC R0 R1

第4章MCS51单片机的指令系统

第4章MCS51单片机的指令系统

1、立即寻址
若指令的操作数是一个8位二进制数或16位二进制数,就 称为立即寻址。指令中出现的操作数就称为立即数。
例如:MOV A,#3AH;A ← 3AH
MOV DPTR,#8000H 在MCS51系统中采用“#”来表示后面的是立即数。
16
2、寄存器寻址
寄存器寻址就是以通用寄存器的内容作为操作数,在指令 的助记符中直接以寄存器的名字来表示操作数位置。这种 寻址方式如果使用了另一个操作数,那么另一操作数必须 是累加器A,这些指令都是单字节指令
在汇编语言编程时,数据的存放、传送、运算都要通过 指令来完成,编程者必须自始至终都要十分清楚操作数 的位置以及如何将它们传送至适当的寄存器中去运算。 因此,如何从各个存放操作数的区域去寻找和提取操作 数就变得十分重要。
所谓寻址方式就是如何通过确定操作数所在的位置(地 址)从而把操作数提取出来的方法。
(补码数)。相对转移指令所在的地址称为源地址,转移
后的地址称为目的地址 。程序的转移范围以PC当前值为中
心,介于-128~+127之间
目的地址=源地址十转移指令字节数十rel
例如SJMP rel指令的机器码 是“80H,rel”,两个字节。 设指令所在地址为2000H, rel为54H,则转移地址(目的 地址)为:
4.1 指令和指令程序
所有软件,都要翻译成计算机能直接识别和执行 的命令,才能由计算机去执行。这种计算机能直 接识别和执行的命令称为指令。一台计算机所能 执行的全部指令的集合称为这台计算机的指令系 统。指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
20
寄存器间接寻址的寻址范围: 1)片内RAM低128单元:这里只能用R0和R1作为间接 寻址寄存器。 2)片外RAM 64KB:使用DPTR作为间接寻址寄存器。 3)片外RAM低256单元:也可以使用R0和R1。MOVX 4)在执行PUSH(压栈)和POP(出栈)指令时,采 用堆栈指针SP作寄存器间接寻址。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章汇编语言程序设计
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。

相关文档
最新文档