第4章 汇编语言程序设计第2讲
微机原理及应用2版 第4章汇编语言程序设计
第4章 汇编语言程序设计
3.段定义伪指令
段名 SEGMENT [定位类型] [组合类型] [‘类别’] …
段名 ENDS
第4章 汇编语言程序设计
定位类型:说明段的起始地址应有怎样的边界值
BYTE:×××× ×××× ×××× ××××B, 即段可以从任何地址开始;
WORD:×××× ×××× ×××× ×××0B, 即段的起始地址必须为偶地址;
概述
汇编语言(Assembly Language)是一种采用指令助 记符、符号地址、标号、伪指令等符号编写程序的程 序设计语言。 用汇编语言编写的程序称为汇编语言源程序 (Source Program)。 一般情况下,一个助记符对应一条机器指令,所以 汇编语言也是面向机器的语言。
第4章 汇编语言程序设计
第4章 汇编语言程序设计
⑵ END
格式:END [标号] 功能:表示源程序的结束。
标号指示程序开始执行的起始地址。 如果多个程序模块相连接,则只有主程序要使用 标号,其它子模块只用END而不必指定标号。
第4章 汇编语言程序设计
ASSUME:用于明确段与段寄存器的关系
ASSUME 段寄存器名:段名[,段寄存器名:段名…]
例:ASSUME DS:DSEG,CS:CSEG,ES:ESEG,SS:SESG 例:ASSUME CS:CODE,DS:DATA,ES:DATA
说明:
1. 该伪指令出现在码段中; 2. 该伪指令只是指示各逻辑段使用段寄存器的情况,并
(3)字符被存放时为它的ASCII码, 例 ‘A’的ASCII码为41H;
(4)符号地址具有以下关系: D_B = D_A+3 D_D = D_B+2 = D_A+6
第4章汇编语言程序设计PPT教学课件
图 分支程序结构流程图
2020/12/11
《单片机应用技术》教学课件
12Leabharlann 第4章 汇编语言程序设计条件满足? Y
A
4.2.2 分支程序结构
第4章 汇编语言程序设计
目的:1.进一步熟悉指令系统 2.会编写简单的程序 3.上机训练
内容:4.1 汇编语言程序设计概述
4.2 三种程序结构 4.3 程序设计举例
2020/12/11
《单片机应用技术》教学课件
1
第4章 汇编语言程序设计
4.1 汇编语言程序设计概述
所谓程序设计,就是按照给定的任务要求,编写 出完整的计算机程序。要完成同样的任务,使用的方 法或程序并不是唯一的。
汇编后: (1000H)=12H (1001H ) = 34H
(1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH
2020/12/11
《单片机应用技术》教学课件
7
第4章 汇编语言程序设计
• (6)定义存储区伪指令DS
• 功能:从指定地址开始预留一定数量的内 存单元,以备源程序执行过程中使用。预
(4) 编写源程序
(5) 程序优化。
(6)上机调试、修改和最后确定源程序。
2020/12/11
《单片机应用技术》教学课件
10
第4章 汇编语言程序设计
4.2.1 顺序程序设计
顺序结构程序是一种最简单、最基本的程序,按照程序编 写的顺序依次执行。
【例4-1】两个多字节数加法
1.两个三字节无符号相加,其中被加数在内部RAM的 50H、51H和52H单元中;加数在内部RAM的53H、54H和 55H单元中;要求把相加之和存放在50H、51H和52H单元中 进位存放在位寻址区的00H位中。
第四章-汇编语言程序的设计
第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
第4章 汇编语言程序设计课件
第4章汇编语言程序设计本章主要介绍了汇编语言程序的基本结构与组成、伪指令及其使用方法、DOS功能调用和BIOS功能调用,以及汇编语言程序设计的基本技术。
本章还给出了汇编语言程序上机和调试的实例。
通过该实例,可以了解汇编语言程序设计与开发的全过程。
本章中介绍的程序设计技术包括简单程序设计、分支程序设计、循环程序设计和子程序设计,每种程序设计均给出了多个具体实例,并对设计思想进行了分析,提供了有价值的程序设计技术和方法。
使用这些技术和方法可以为PC机开发基于汇编语言的软件。
1.机器语言与汇编语言(Machine Language and Assembly Language)计算机程序由一系列指令序列组成。
计算机通过对每条指令的译码和执行来完成相应的操作。
指令必须以二进制代码的形式存放在内存中,才能够被计算机所识别和理解,并加以执行。
由二进制代码表示的指令称为机器指令,相应的程序称为机器语言程序。
机器语言程序由0、1二进制代码组成,不便于编程和记忆。
由此产生了用指令助记符表示的汇编语言指令,对应的程序称为汇编语言程序。
例4-1将4位二进制数转换为ASCII码字符。
当数在0000B-1001B时,对应的ASCII 码为‘0’-‘9’;当数在1010B-1111B时,对应的ASCII码为‘A’-‘F’。
设待转换的数据已在累加器AL中(低4位)。
8086汇编语言程序如下:AND AL,0FHCMP AL,0AHJB NUMADD AL,07HNUM: ADD AL,30HRET对例4-1程序进行汇编以后,得到8086汇编指令对应的机器代码(用十六进制数表示),如表4.1所示。
在表4.1中,第一列表示机器代码存放的内存地址,该地址与机器所处的环境有关;第二列表示8086机器代码,每条指令的机器代码由一个或几个字节组成;第三列表示汇编指令,由指令助记符和操作数组成。
指令前可能有标号,表示该指令第一个字节所在的地址。
四章节汇编语言程序设计
主 … 程 序 子 程 … 序 S C A … L L S … C A L L S …
… R E T
2020/2/29
4-6-4 子程序的类型
按子程序与主程序之间传递参数的方式分类。 入口参数:调用子程序之前,需要传给子程序的参数。 出口参数:子程序送回调用程序的结果参数。
设X存在40H中,结果Y存在41H SYMB: MOV A,40H ;取X
开始
取X
Y
N
X=0?
Y= 0
Y X<0? N
JZ STOR
;X=0,Y=X
JB ACC7,MINUS;X<0跳转
Y=-1
Y= + 1
MOV A,# 1 ;X>0,Y=+1
保存Y
SJMP STOR
MINUS:MOV A,#0FFH;X<0,Y= -1补码
• 源程序
指令周期(M) 指令执行次数
DELAY:MOV R6,#64H
1
1
I1: MOV R7,#0FFH
1
100
I2: DJNZ R7,I2
2
100×255
DJNZ R6,I1
2
100
RET
2
1
延时时间计算:(设时钟f=12MHz,M=1μs) t=(1×1+1×100+2×100×255+2×100+2×1)×M=51.3 ms
4. EQU —等值。为标号或标识符赋值。 X1 EQU 2000H X2 EQU 0FH
… MAIN:MOV DPTR,#X1
ADD A,#X2
• 5. END —结束汇编指令。
• 例:START: …
•
…
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解:EA=(BX)+20H=0120H PA=DS*10H+EA=20120H (IP)=00A0H,(CS)=5000H
返回
控制转移类指令
1)无条件转移指令(JMP) 2)条件转移指令 (简单条件转移、无符号数、有符号数条件转移)
2
条件转移指令
(1)简单条件转移指令(测试单个状态标志位)
1.流程图的概念 流程图是由特定的几何图形、指向线、文 字说明来表示数据处理的步骤,形象描述逻辑 控制结构以及数据流程的示意图。流程图具有 简洁、明了、直观的特点。
2.流程图符号表示 (1)执行框
(2)选择框
条件?
N
Y
条件?
N
Y
(3)起止框:
开始
结束
(4)指向线
二、汇编语言程序的三种基本结构
1 2
0110 0000 1000 1101
1010 0011 0101 0101
所以,CF=0,OF=1 第二步:JNO L1 ;OF=1,不满足条件,顺序执行 第三步:JNC L2 ; CF=0,满足条件,转去L2执行
(2)无符号数条件转移指令
(2)无符号数条件转移指令
1) JB (Jump if below)低于则转移指令。 若CF=1,则符合转移条件。 和JB指令等价的指令还有JNAE(不高于或等于转移),JC (借位 为1转移)。 2) JBE (Jump if below or equal)低于或等于则转移指令。 若CF=1或ZF=1,则符合转移条件。 和JBE指令等价的指令还有JNA(不高于转移)。 3) JA (Jump if above)高于则转移指令。 若CF=0且ZF=0,则符合转移条件。 和JA指令等价的指令还有JNBE(不低于或不等于转移)。 4) JAE (Jump if above or equal)高于或等于则转移指令。 若CF=0或ZF=1,则符合转移条件。 和JAB指令等价的指令还有JNB(不低于转移)。
顺序结构:按语句的书写顺序依次执行。 分支结构:根据不同的条件判断结果,执行不同的 程序段,实现程序分支。
成立 条件成立? 不成立 判定条件?
程序段1 程序段2 程序段1 程序段2
……
程序段n
图4.1 两路分支结构
图4.2 多路分支结构
3
循环结构:由条件是否成立,确定是否重复执行某 段程序。
条件成立? 成立 程序段 不成立 程序段 条件成立? 不成立 成立 (a) 当型循环 图4.3 循环结构 (b) 直到型循环
…
XX XX
34100H
…
返回
5)段间间接转移
【例】若(CS)=3000H,(IP)=0012H,(BX)=0100H, (DS)=2000H, (20120H)=A0H, (20121H)=00H, (20122H)=00H, (20123H)=50H 执行:JMP DWORD PTR[BX+20H] 执行指令后(IP)=? (CS)=?
CODEl SEGMENT JMP FAR PTR NEW_SEG ENDS
CODEl
CODE2
SEGMENT NEW_SEG: MOV AX,BX CODE2 ENDS
CODE1
设NEW_SEG标号的地址为 3200H:2100H
CODEl SEGMENT JMP FAR PTR NEW_SEG CODEl ENDS
本章要点
1 2 3 4 5 6
汇编语言概述 汇编语言程序设计基本步骤 顺序程序的基本结构和设计方法
分支程序的结构形式和程序设计
循环程序的结构形式和程序设计
子程序的基本过程和设计方法
1、顺序程序设计
【例4-1】已知X和Y是数据段中的两个无符号字节 单元数据,用程序完成表达式Z=(X2+Y2)/2的计算.
皖西学院
第四章 汇编语言程序设计
本章要点
1 2 3 4 5 6
汇编语言概述 汇编语言程序设计基本步骤 顺序程序的基本结构和设计方法
分支程序的结构形式和程序设计
循环程序的结构形式和程序设计
子程序的基本过程和设计方法
一、汇编语言程序设计的基本方法和基本步骤
结构化程序设计:是指程序的设计、编写和测试都 采用一种规定的组织形式进行。
【例】比较无符号数大小,将较大的数存放AX寄存器。 CMP AX, BX JNB NEXT XCHG AX,BX NEXT:… ;(AX)-(BX) ;若AX>=BX,转移到NEXT ;若AX<BX,交换
比较指令对标志位的影响(CMP A,B): 1)A、B均为无符号数:若 CF=0,则 A>B ;若 CF=1, 则 A<B 2)A、B均为带符号数: A>0,B>0 OF=0,若SF=0,则A>B;SF=1,则A<B
例:
JMP SHORT NEXT NEXT: MOV AL, 4
存储器
…
EB
代码段 0120H 0121H 0122H (IP)
根据JMP指令的操作 JMP指令 转移目的地址为: (IP)+D=0122H+30H= 0152H (IP)
下一条要执行的指令
D=3 0H
30
…
B0
0152H 0153H
A<0,B<0 OF=0,若SF=0,则A>B;SF=1,则A<B
A>0,B<0 A<0,B>0 OF ⊕ SF=0 时 ,A>B OF ⊕ SF=1 时 ,A<B
③A>0,B<0
③A=+50,B=-34 (+50)补 00110010 11011110 01010 SHORT OPR 例如
操作:IP (IP)+8位偏移量 段内 直接 转移
2)段内直接近转移
格式:JMP NEAR PTR OPR
操作:IP (IP)+16位偏移量 例: 段内直接近转移举例 JMP NEAR PTR EXIT EXIT: POP AX 两种转移指令都可以写成简化形式(省略SHORT和NEAR) JMP 标号
•(3) 有符号数条件转移指令
•(3) 有符号数条件转移指令
1) JL(Jump if less,or not greater or equal)小于则转移 若SF + OF=1且ZF=0,则符合转移条件 和JL指令等价的指令还有JNGE(不小于或等于转移) 2) JLE ( Jump if less or equal)小于或等于则转移 若SF + OF=1或ZF=1,则符合转移条件 和JLE指令等价的指令还有JNG(不大于转移) 3) JG (Jump if greater)大于则转移 若SF + OF = 0 且ZF=0,则符合转移条件 和JG指令等价的指令还有JNLE(不小于或不等于转移) 4) JGE (Jump if greater or equal)大于或等于则转移 若SF + OF=0或ZF=1,则符合转移条件。 和JGE指令等价的指令还有JNL(不小于转移)
0101 0100 1011 0111 0000 1010 0001 1111
所以,CF=1,OF=0 第二步:JNO L1 ;OF=0,满足条件,转去L1执行
例题(续上页)
解:第一步:ADD AX, BX
AX=42C8H
BX=608DH AX=A355H
0100 0010 1100 1000
例 : 段内间接转移 JMP BX JMP [BX] 注:
可以使用除立即数寻址方式以外的任意一种寻址方式
;(IP)←(BX)=转移地址 ;(IP)←((BX)) =转移地址
除了CS、IP、DS、SS、ES以外的所有16位的寄存器均可
以使用
间接寻址转移指令的特点是指令中没有直接给出标号
返回
【例】 段间直接转移
本章要点
1 2 3 4 5 6
汇编语言概述 汇编语言程序设计基本步骤 顺序程序的基本结构和设计方法
分支程序的结构形式和程序设计
循环程序的结构形式和程序设计
子程序的基本过程和设计方法
控制转移类指令
1)无条件转移指令(JMP) 2)条件转移指令(简单条件转移、无符号数、 有符号数条件转移)
1、无条件转移指令
…
21 00 32
EA 00
操作码 IP CS
JMP指令
CODE2
SEGMENT NEW_SEG: MOV AX,BX CODE2 ENDS
…
CODE2
32000H
执行JMP指令后,程序流 程 控 制 将 从 CODE1 代 码 段 到 NEW_SEG CODE2 代 码 段 , 实 现 段 间 转 移操作。 段间直接转移
结构化程序设计可使编制的程序具有:结构清晰、 易于读懂、易于调试和修改的优点。
汇编语言程序设计的基本内容 顺序程序 包括 子程序 循环程序 分支程序
汇编语言程序设 计的基本步骤:
分析问题 寻找解决问题的 思路、方法、算法 绘制流程图 编写程序实现算法
设计测试数据 和预期计算结果
上机调试程序
流程图画法规定
(1)简单条件转移指令
6) JNO( Jump if not overflow)结果不溢出则转移 若OF=0,则符合转移条件。 7) JP( Jump if parity)结果为偶则转移 若PF=1,则符合转移条件。 8) JNP( Jump if not parity)结果为奇则转移 若PF=0,则符合转移条件。 9) JC( Jump if carry)结果有进位或借位则转移 若CF=1,则符合转移条件。 10)JNC( Jump if not carry)结果没有进位或借位则转移 若CF=0,则符合转移条件。