汇编语言--第四章-简述.

合集下载

第四章 汇编语言

第四章 汇编语言

DATA_BYTE
0A 05 10 DATA_WORD 00 01 64 00 FC FF 3C DATA_DW 00 00 00 FB FF 00 00
10 5 10H 100H 100 -4
60
0FFFBH
2.?表达式: ?表达式预置任何内容, 只分配存储单元,无确切的初值 AB1 DB ? AB2 DW ? 3.Dup表达式:定义重复数据 初值(确定或不确定)初始化n个存储单元,n表示要重复的次数, 以是n>0的数值表达式或常数; 初值必须以圆括号括起来,表示要重复的内容 ARRAY2 ARRAY1 ARRAY3 例: 与 DO-2 DO-2 DW 100 DUP(?) DB 2 DUP(0,1,?) DB 20 DUP(0,1,4 DUP(2),5) DB DB 2 DUP(0,1,2,?) 0,1,2,?,0,1,2,? 等价
1.一个简单程序实例
;THE FORM OF AN ASSEMBLY LANGUAGE PROGRAM STACK SEGMENT DB 64 DUP(?) 段定义伪指令 STACK ENDS ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SEGMENT/ENDS ---------DATA SEGMENT DATA1 DB 36H DATA2 DB 4BH SUM DB ? DATA ENDS ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MAIN PROC FAR CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

汇编语言设计实践:第4部分 基本汇编语言

汇编语言设计实践:第4部分 基本汇编语言
第四章 基本汇编语言
4.1 汇编语言语句种类及其格式
汇编语言的程序格式
• 完整的汇编语言源程序由段组成,段由指令语句与 伪指令语句构成
• 一个汇编语言源程序可以包含若干个代码段、数据 段、附加段或堆栈段,段与段之间的顺序可随意排 列
• 需独立运行的程序必须包含一个代码段,并指示程 序执行的起始点,一个程序只有一个起始点
• 所有的指令语句必须位于某一个代码段内,伪指令 语句可根据需要位于任一段内或段外
汇编语言的语句可以分为指令语句和伪指令语句
•指令语句——产生使CPU产生动作、可供机器
执行的机器目标代码
•伪指令语句——不产生CPU动作、在程序执行
前由汇编程序处理的说明性语句,例如,数据说明、 变量定义等等
2
一、指令语句
每一条指令语句在汇编时都要产生一个可供CPU执 行的机器目标代码,它又叫可执行语句。
指令语句的一般格式为: 标号 : 操作码
, 操作数
; 注释
一条指令语句最多可以包含4个字段 例 L1:MOV AH,0A0H ;将0A0H放入AH
3
1.标号字段
标号是可选字段,它后面必须有“:”。标号是一条 指令的符号地址,代表了该指令的第一个字节存放 地址。
注释字段可以是一条指令的后面部分,也可以是 整个语句行。
例:
LABEL1: ADD AX,BX; 功能为AX<=(AX)+(BX)
;后面的程序段将完成两次对存储器的访问
MOV AX, W_VAR1
MOV W_VAR2, AX
7
二、伪指令语句
伪指令语句又叫命令语句。 伪指令本身并不产生对应的机器目标代码。它仅 仅是告诉汇编程序对其后面的指令语句和伪指令 语句的操作数应该如何处理。

汇编语言 第四章 汇编语言

汇编语言 第四章 汇编语言

4.1.4 特殊运算符
1.属性替换运算符
(3)短取代运算符SHORT 告诉汇编程序,目标标号在本条指令的 -128~+127 个字节的范 围内,生成节省一个字节的机器指令。一般情况下可以不用。 例如: JMP SHORT NEXTBRACH … NEXTBRACH: MOV EAX,ECX

4.1.4 特殊运算符

4.1.4 特殊运算符
1.属性替换运算符
(2)段地址取代运算符“:” 又称为段地址运算或者跨段前缀。用于临时给定变量,标号或 者地址表达式指定一个段属性,地址表达式EA和类型保持不变。在 指令中替代默认的段以形成物理地址。 例如: MOV DX,ES:[BX + DI];EA = BX +DI,PA =ES ;*16 + EA,临时替换默认的DS

4.1.4 特殊运算符
2.属性分离运算符
TYPE运算符 格式:TYPE 变量或标号 功能:分离出其后变量或标号的类型。如果是变量,将返回该变 量的类型对应字节数;如果是标号,则返回代表标号类型的数值。 MOV CL,TYPE ARRAYW ;若变量ARRAYW为字类型,则CL=2
4.1.4 特殊运算符
(1)LENGTH运算符 功能:当变量由数据定义伪指令定义,并且表达式带有一个DUP项 时,LENGTH取DUP项前面的重复系数;如果表达式有多个DUP项 嵌套时,仍然取第一个DUP项前的数字,LENGTH变量的取值为1. DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2DUP(2)) C DB 4,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX

第四章 汇编语言程序设计

第四章 汇编语言程序设计

一、算术运算符
包括:+,-,*,/(取商),MOD(取余),SHL,SHR 特点:①运算对象及结果均为整数 ②地址只能加减 例: DA1 DA2 MOV MOV MOV MOV DB 1,2,3,4 DB 20 AX,30*5 汇编时 AL,31MOD5 AL,31/5 AL,DA2-DA1
MOV MOV MOV MOV
如:加法:1001、1D、2B……
特点:计算机能够直接识别,执行速度快;
但不方便记忆和编程
2、汇编语言(Assembly Language) 用助记符来表示指令,如:加法:ADD…… 特点:机器不能识别,需翻译;但仍然面向硬件, 执行速度较快;多用于编制系统程序、实时控制和通 信程序。 3、高级语言(High-level Language) 用数学语言和自然语言编程; 如:加法:+,输出:Printf… 特点:编程方便简单,无需了解机器硬件;但机器 不能识别,需要庞大的翻译系统,速度较慢。
类型 返回值 1 2 4 类型 返回值 -1 [FFH] -2 [FEH] DB DW DD
变量
标号
NEAR FAR
数值返回运算符(续)
LENGTH:
•对于一般变量,返回1; •对于DUP定义的变量,返回单元数(直接返回第一
个DUP前的N值); 说明:DUP为复制操作符,格式:N DUP(表达式); N表示复制次数,表达式为复制内容 例:2 DUP(1,2) 等价于 1,2,1,2
则:COUNT的值为5
COUNT表示:DA1,DA2占的字节总数(长度之和) 七、优先级(P136 表4-3)
4.3 伪指令语句
在汇编时进行处理,主要完成变量定义,段定义,
段分配,指示程序开始和结束等功能。

汇编 第四章伪指令及汇编语言源程序结构

汇编 第四章伪指令及汇编语言源程序结构

MOV AL, BUF1
ADD AL, BUF2 MOV SUM, AL
;取第一个加数
;两数加 ;和放入SUM单元
3
伪指令(指 示性)语句: 提供相关辅 助信息。
指令性语句: 完成一定功 能,能翻译 成机器码。
伪指令语句
DATA SEGMENT ;DATA段定义开始 BUF1 DB 34H BUF2 DB 27H SUM DB ? DATA ENDS ;DATA段定义结束 CODE SEGMENT ;CODE段定义开始 ASSUME CS:CODE ASSUME DS:DATA ;段性质规定 START: MOV AX,DATA MOV DS,AX ;给DS赋值 MOV AL, BUF1 ;取第一个加数 ADD AL, BUF2 ;两数加 MOV SUM, AL ;和放入SUM单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;CODE段定义结束 END START ;源程序结束
14
二、= 等号伪指令
格式:符号名 = 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号 名,并能对所定义的符号多次重复定义,且以最后一次定义 的值为准。 例:COST = 20 M = MOV LOST = COST+10 ;30→LOST M = ADD ;M=ADD 注 : “ = ” 伪 指 令 的 格 式 和 功 能 与 EQU 类 似 。 二者区别:在同一程序中,“=”可以对一个符号重 复定义,EQU不能对同一符号重复定义。
26
三、变量、标号的分析运算和合成运算
例:DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2DUP(2)) C DB 3,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX ┆

第四章 汇编语言程

第四章  汇编语言程
J X G
微机原理及应用
第四章 汇编语言程序设计
在这一章中将介绍汇编语言的语句分类(指令语句、 在这一章中将介绍汇编语言的语句分类(指令语句、 伪指令语句和宏指令语句),汇编语言源程序的结构, ),汇编语言源程序的结构 伪指令语句和宏指令语句),汇编语言源程序的结构, 汇编语言程序设计。并能进行简单的程序设计。 汇编语言程序设计。并能进行简单的程序设计。
微机原理及应用 4.2 8086/8088汇编语言 8086/8088汇编语言
如果变量A1在它段内的偏移量为0100H, 如果变量A1在它段内的偏移量为0100H,则 A1在它段内的偏移量为0100H MOV MOV BX, BX,OFFSET BX, BX, 0100H A1等价于 A1等价于
J X G
J X G
J X G
微机原理及应用 4.1 程序设计语言概述
汇编语言是用指令的助记符、符号地址、 汇编语言是用指令的助记符、符号地址、标号等来表 示指令的程序语言。 示指令的程序语言。用汇编语言编写的程序称为汇编语 言源程序。 言源程序。把汇编语言源程序翻译成机器语言的目标程 序的过程称为汇编, 序的过程称为汇编,完成这个翻译任务的程序称为汇编 程序。 程序。 以上两种都是低级语言。 以上两种都是低级语言。尽管汇编语言具有执行速度 快和易于实现对硬件的控制等优点, 快和易于实现对硬件的控制等优点,但它仍然存在着机 器语言的某些缺点: CPU的硬件结构紧密相关 的硬件结构紧密相关, 器语言的某些缺点:①与CPU的硬件结构紧密相关,移植 性差; 要用汇编语言进行程序设计, 性差;②要用汇编语言进行程序设计,必须了解所使用 的CPU硬件的结构和功能。 CPU硬件的结构和功能。 硬件的结构和功能
4.2
J X G

第四章-汇编语言程序的设计

第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。

(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。

在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。

(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。

汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。

①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

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

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

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

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

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

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

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

汇编语言第4章PPT课件

汇编语言第4章PPT课件
3
2. 汇编语言程序设计与执行过程
输入汇编语言源程序(EDIT) 汇编(MASM) 链接(LINK) 调试(TD)
源文件 . ASM 目标文件 .OBJ 可执行文件.EXE 最终程序
4
3. 汇编语言源程序结构
由多个逻辑段组成,包含: 代码段:存放源程序的所有
数据段名 SEGMENT …
数据段名 ENDS
26
一、数据定义伪指令
用途:定义变量类型,给存储器赋初值,或仅给变量分配存储单 元,而不赋予特定的值。
格式: [变量名] DB 操作数;定义字节 [变量名] DW 操作数;定义字 [变量名] DD 操作数;定义双字 [变量名] DQ 操作数;定义8个字节 [变量名] DT 操作数;定义10个字节
操作数——是赋给变量的初始值,可以有一个,也可以有多个, 但不能超出数据类型范围。操作数可以是数值、字 符串、?、或者DUP。
CLC
;CF=0
LPER:MOV AL,DATA2[SI]
ADC DATA1[SI],AL
INC SI
DEC CX
JNZ LPER
MOV AH,4CH
INT 21H
;返回DOS
CODE ENDS
END START
7
二、汇编语言语句类型及格式
1. 汇编语言语句分类
指令性语句
CPU执行的语句, 能够生成目标代码
段 值 变量所在段的段地址 偏移量 变量单元地址与段首地址之
间的位移量。 类 型 字节型、字型和双字型
14
3)表达式
组成:操作数:常量、寄存器名字、存储器操作数 运算符:
算术运算 逻辑运算 关系运算 取值运算和属性运算 其它运算
15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1 汇编语言的特点
采用汇编语言进行程序设计的优点:
• 可充分利用机器的硬件功能和结构特点,加快程序的 执行速度,减少目标程序所占用的存储空间。 • 常用来编写实时控制程序、实时通信程序,有时也用 来编制某些系统软件程序。
汇编语言的缺点:
1. 编程效率低(与人们描述计算过程的需要差距大); 2. 与机器硬件的具体结构联系过于紧密 ——在一种结构的机器上开发的程序极难移植到另 一种不同结构的机器上去。
常数表达式的名字称为常量。
(程序员给出的一个名或助记名作为一个确定值的标 识, 其值在程序执行过程中保持不变。) 常量可用伪指令说明符“EQU”或“=”定义。 例如,A EQU 7或 A = 7都可将常量A的值定义为常 数7。 两者区别:伪指令说明符EQU左边的符号名不允许重 复定义,而“=”左边的符号名可以重复定义。 即,A EQU 7 可以:A=7 A EQU 8 (不允许) A=8
1. 汇编语言的标识符 类似于其它语言,由字母、数字构成,以字母开头。 在汇编中,指常量、变量、标号、段名、过程、 结构等的名字。 2. 汇编语言的操作对象( 数据类型) (1) 常数、常量 编程时已经确定其值,程序运行期间不会改变其值 的数据对象称为常数。 8086/8088CPU允许定义四种形式的常数: 整数、 字符串、“组合BCD码数”和实数(浮点数),但只 能处理整数、字符串、“组合BCD码数”,不能处 理实数(浮点数)。
第四章 汇编语言简述
Assemble Language
• 汇编语言是一种面向机器的程序设计语言,是一种用符号表示 的低级程序设计语言(机器语言的符号化描述),通常是为特 定计算机或计算机系列专门设计的。 • 用汇编语言编写的程序不能由机器直接执行,而必须经汇编程 序翻译成机器语言程序。汇编语言指令与翻译成的机器语言指 令之间基本是一一对应的关系。 • 汇编过程示意:
汇编程序示例
DATA SEGMENT NOTES DB ‘The result is :’ , ’$’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: PUSH DX XOR AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV DX,OFFSET NOTES MOV AH,9H INT 21H MOV AH,4C INT 21H CODE ENDS END BEGIN ;数据段 ;定义字符串变量NOTES ;代码段 ;必须用ASSUME告诉汇编程序段地址和 ;段寄存器的对应关系 ;这3条指令表明程序结束时可用RET ;直接返回DOS,也可以省去。 ;DOS装入程序会自动初始化CS和SS ;需要我们对DS、ES初始化。 ;调用DOS中断,显示提示信息字符串
MOV MOV AX,DATA DS,AX

在DOS环境下,通常采用DOS的4CH号中断功能调用使汇编程序返回 DOS,即: MOV AH,4CH INT 21H
4.3.1 汇编语言的语句格式
伪指令语句和指令语句
汇编语言源程序中除了包含真正的指令外,还应包
含说明性的“指令”。这些说明性的“指令”是面向 汇编程序和连接程序的,称为伪指令。 宏汇编程序5.0版(MASM V5.0)规定,汇编语言源程 序的每行只能写一个语句: 指令语句或伪指令语句。 行长不能超过128个字符。每个语句最多可由四个字 段组成: 名字字段、操作字段、操作数字段和注释字 段。
BEGIN和 END BEGIN构成了汇编程序的主模块部分, 由下面的几个部分组成:
汇编主模块部分的组成

必须用ASSUME伪指令告诉汇编程序,某一段地址应该放入哪一个段 寄存器。这样对源程序模块进行汇编时,才能确定段中各项的偏移量。 DOS的装入程序在执行时,将把CS初始化为正确的代码段地址,把SS 初始化为正确的堆栈段地址,在源程序中不需要再对CS、SS进行初始 化。但是在源程序中需要对DS、ES进行初始化:
(2) 变量
• 编程时只能确定其初始值,程序运行期间可修改其值的数据对 象称为变量。变量是存储单元中的数据,通常都定义在数据段 (DS)和附加段(ES)。 • 变量由伪指令说明符DB、DW、DD等定义。需要时可给变量 的地址取名字,变量名就是变量地址的名字,可称为变量的符 号地址。 • 例如, 在下列伪指令语句中, A DB 50,60,70,80 B DW 50,60,70,80 C DD 50,60,70,80 • 用DB、DW、DD说明符各定义了4个变量,并给出了每个变量 的初始值。
汇编程序负责计算伪指令语句中表达式的值,解释
伪指令语句的含义并遵照“执行”,但并不产生机器 代码。 汇编程序负责计算指令语句中表达式的值,并将汇 编指令翻译成机器指令代码。 指令语句经汇编后,在可执行程序运行期间由CPU解 释,并由CPU按指令的要求完成各种运算与操作。ຫໍສະໝຸດ 4.3.2 汇编语言的标识符
指令语句是可执行语句,其格式为:
[名字:]指令操作助记符[操作数表达式1[,操作数表达式2]][; 注释]
其中,指令操作助记符(指令名)是指令语句中不可缺 少的主体,其余部分(方括号中的内容)有时可省略。 指令语句中的名字只能是标号。 注释以分号开头,分号右边的内容将被汇编程序忽 略。例 : L: ADD AX,BX ;注释
;返回DOS
;代码段结束 ;模块结束
4.2 汇编语言的程序结构
从前面的例子中可以看到汇编语言源程序的结构特点: 汇编语言是分段结构的形式。
各个逻辑段以SEGMENT语句开始,以ENDS语句结束。通常会 由数据段、堆栈段、代码段构成. 1.数据段用以存放常数、变量等程序需要对其进行操作的数据。 2.堆栈段用来在内存中开辟堆栈区,以便在中断、子程序调用时 使用。 3.代码段包含了程序要执行的指令。
伪指令语句是说明性语句,其格式为: [名字]伪指令说明符[参数表达式1[,参数表达式2
[,…… ]]][;注释]
其中,伪指令说明符(伪指令名)是伪指令语句中不可 缺少的主体,其余部分(方括号中的内容)有时可省略。 名字可为段名、过程名、变量名、符号名(或常量名)、 宏名、结构名、记录名等。 例: A DB 20H,30H ; 注释
相关文档
最新文档