第四章汇编语言程序格式讲义

合集下载

第四部分汇编语言程序格式教学课件

第四部分汇编语言程序格式教学课件

29
五、表达式赋值伪操作
1. 等值语句
符号 EQU 表达式 ;将表达式的值赋给左边的符号 表达式的形式
1) 常数或数值表达式 CNT EQU 5 NUM EQU 13+5+4
2) 址表达式 ADR1 EQU DS:[BP+14]
3) 变量、标号或指令助记符 W0 EQU WORD PTR DA_BYTE
程序的段结构
段定义 段寻址(指定当前段) 段寄存器的装入
8
二、完整段定义伪操作
段名 SEGMENT 定位 组合 '类别'
……
段名 ENDS
;语句序列
➢ 段 定 义 由 SEGMENT 和 ENDS 这 一 对 伪 指 令 实 现 , SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指 令表示一个段的结束
……
;SP=80H
18
二、完整段定义伪操作 —段寄存器的装入
3. CS的装入 用结束伪指令:每个源程序都必须以END伪指令
END 起始地址
标号 表达式
不一定是指令语句
功能 标志源程序的结束 指定程序运行的起始地址
19
二、完整段定义伪操作 —段寄存器的装入
3. CS的装入
CODE SEGEMNT
ASSUME CS:CODE,SS:STACK1
ASSUME ES:NOTHING ASSUME NOTHING
;删除对ES的设置 ;删除对所有段的设置
15
二、完整段定义伪操作 —段寄存器的装入
ASSUME只说明了哪些段为当前段,具体的段基值并没 有装入
1. DS与ES的装入
用ASSUME将DS/ES与相应的段建立联系后,用数据传 送指令

第4章 汇编语言程序格式

第4章 汇编语言程序格式


2012-12-28
qingyang@
19
例3 (参数是地址表达式)
TABLE1
PAR1偏移地址
PAR2偏移地址
TABLE1 DW PAR1 DW PAR2 TABLE2 DD DATA1 DD DATA2
TABLபைடு நூலகம்2
DATA1偏移地址 DATA1段地址 DATA2偏移地址
2012-12-28 qingyang@ 10
2) 逻辑运算符 • 有NOT、AND、OR、XOR共4个符号,分别表示 非、与、或、异或,可用于对两个(或一个)数据 进行操作。 • 例如, 在进行字操作时 1234H OR 2AFEH = 3AFEH, NOT 0F0H = 0FF0FH; 在字节操作时, NOT 0F0H = 0FH。
例如,因为操作类型不明确,指令 MOV[BX], 5 不能 通过汇编。下列两条指令有不同的执行结果。 MOV BYTE PTR [BX], 5 MOV WORD PTR [BX], 5
2012-12-28 qingyang@ 14
表达式的操作顺序
表达式中常用的伪操作符按以下顺序依次优先处理:
• 代码段的第一个语句一般是 “ASSUME”, ASSUME在段寄存器与段名之间建立了对应关系,例如段 名为 “DATA” 的段是数据段。
• 程序中主要有两类语句:指令语句(助记符指令),指示 性语句(伪指令)。
• 两种程序结构
2012-12-28 qingyang@ 6
4.3 语句类型和语句格式
注意:下列两条指令的功能完全相同。 MOV DX, OFFSET BLOCK LEA DX, BLOCK
2012-12-28 qingyang@ 13

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

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

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 ┆

汇编语言讲义第四章 汇编语言程序格式1

汇编语言讲义第四章 汇编语言程序格式1

目 录
前一页
后一页
退出
3. 指令助记符
硬指令助记符可以是任何一条处理器指令,也可以是一条 宏指令 伪指令助记符将在本章和下章学习。 前一章引入的定义字节数据和字符串的DB就是伪指令。
目 录
前一页
后一页
退出
4. 操作数与参数
处理器指令的操作数可以是立即数、寄存器和存储单元。 伪指令的参数可以是常数、变量名、表达式等,可以有多 个,参数之间用逗号分隔。
目 录
前一页
后一页
退出
2. 建立ASM文件
用编辑程序EDIT在磁盘上建立如下的源程序 EX_MOVS.ASM。 例4.30 把40个字母a的字符串从源缓冲区传送到目的缓冲 区。
目 录
前一页
后一页
退出
汇编语言源程序.ASM ;PROGRAM TITLES GOES HERE-ex_movs ;*************************************************** Data segment ;define data segment source_buffer db 40 dup(‘a’) Data ends ;*************************************************** Extra segment ;define extra segment dest_buffer db 40 dup(?) Extra ends ;*************************************************** Code segment ;define code segment ;----------------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第四章 汇编语言程序格式

第四章 汇编语言程序格式

.model small .data …… .code start: mov ax, @data mov ds, ax …… mov ax, 4c00h int 21h end start
9
段组定义伪操作
dseg1 dseg1 dseg2 dseg2 segment …… ends segment …… ends word public ‘data’
DATA_BYTE DATA_WORD
DB DW
10,4,10H,? 100,100H,-5,?
14
ARRAY
DB DB DW
‘HELLO’ ‘AB’ ‘AB’
ARRAY
48H 45H 4CH
4CH
4FH 41H 42H 42H 41H
PAR1 PAR2 ADDR_TABLE
DW DW DW
100,200 300,400 PAR1,PAR2
.STARTUP .EXIT [ return_value ]
13
数据定义及存储器分配伪操作:
[变量] 助记符 操作数 [ , 操作数 , … ] [ ; 注释] 助记符:DB DW DD DF DQ DT
DATA_BYTE 0AH 04H
10H
DATA_WORD 64H 00H 00H 01H FBH FFH -
12 ; (bx)=0 ; (bx)=2 ; (bx)=2
?
datagroup group data1,data2
code segment assume cs:code, ds:datagroup
; (bx)=0
程序开始和结束伪操作:
TITLE text
NAME module_name

汇编语言第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

第4章汇编语言程序设计知识PPT课件

第4章汇编语言程序设计知识PPT课件


(1500H)=72H, (1501H)=34H, (1502H)=00H,
(1503H)=8AH,(1504H)=00H, (1505H)=10H。
(1506H)=00H,(1507H)=48H (H的ASCII值)
第24页/共61页
§4.2 伪指令
7、DS 定义存储空间命 令
格式:DS 表达式 功能:在汇编时,从指定地址开始保留DS之后表达式的值所
第15页/共61页
§4.2 伪指令
1、ORG 汇编起始地址命令
格式:ORG 16位地址
功能:规定该伪指令后面程序的汇编地址,即汇编后生成目
标程序存放的起始地址。
例如:
ORG 2000H
START:MOV A,#64H

规定了START的地址是2000H,又规定了汇编后的第一条指令 码从2000H开始存放。
§4.2 伪指令
例如:
ORG 2000H DB 0A3H
LIST:DB 26H,03H STR: DB ‘ABC’

A3H 26H 03H 41H 42H 43H
2000H 2001H 2002H 2003H 2004H 2005H
经汇编后:(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H,
第31页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序 2、分支程序 3、循环程序
第32页/共61页
§4.4 汇编语言程序的基本结构
1、顺序程序
顺序程序是最简单的程序结构,也称直线程序。 程序按顺序一条一条地执行指令。这类程序是所有复杂程序的基础。 要写出高质量的程序还是需要掌握一定的技巧,需要熟悉指令系统,正确地选择 指令,最大限度地优化程序。

汇编语言程序设计第四章 汇编语言程序格式

汇编语言程序设计第四章   汇编语言程序格式
标号:
标号在代码段中定义,后面跟冒号:。标号有三 种属性:段,偏移及类型。
11
数据定义伪操作:把数据存入存储单元;分配空间; DW和DD可存储偏移地址或完整的地址。 下面举例说明:
例: 操作数可以是常数,或者 表达式(根据表达式可以求得一 个常数),如 DATA_BYTE DB 10,4,10H DATA_WORD DW 100,100H,-5 DATA_DW DD 3*20,0FFFDH 汇编程序在汇编期间在存储器中 存入数据,如图所示


26
code_seg segment; define code segment
assume cs:code_seg,ds:data_seg1,es:data_seg2
start: ;set DS register to current data segment mov ax,data_seg1 ;data segment addr mov ds,ax ;into DS register
;set ES register to current extra segment mov ax,data_seg2 ;extra segment addr mov es,ax ;into ES register code_seg ends end start
27

;end of segment
返回DOS
25
段寄存器:是CS,DS,ES和SS中的一个; 段名:是由SEGMENT定义的段名.
程序格式举例说明如下: data_seg1 segment ;define data segment
data_seg1 ends data_seg2 segment ;define extra segment

第四章_汇编语言格式.ppt

第四章_汇编语言格式.ppt
4
硬指令和伪指令 硬指令
汇编语言基础
标号、名字与标识符
标号 例 : next: inc si 反映硬指令位置(逻辑地址)的标识符,后跟一个冒号分隔 string db 1,2,3,4 名字 x反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表 dw 1 符分隔,没有一个冒号 y dw 2 常见名字的表现方式有:变量名、段名、过程名等 标识符(Identifier)
逻辑运算符
AND、OR、XOR、NOT 实现按位相与、相或、异或、求反的逻辑运算 例:or al,03h AND 45h;等价于 or al,01h
10
运算符
逻辑移位运算符SHL/SHR
实现左移、右移的逻辑操作;移入低位或高位的是0 格式为:数值表达式 SHL/SHR 移位次数 例:mov al,0101b SHL (2*2)
FBH 64H
64H ? 41H 42H 43H
17
变量定义及存储器分配
例3:DUP的嵌套 DATA1 DB 3 DUP (2 DUP (1,2),?) 例4:字单元定义 data segment ;数据段 count dw 8000h,?,'AB' maxint equ 64h number dw maxint array dw maxint dup (0) data ends
8
说明:二者间的区别在于=定义的常量可重复赋值, 而EQU不允许
数值表达式
数值表达式
一般是指由运算符连接的各种常数所构成的表达式 汇编程序在汇编过程中计算表达式,最终得到一个数 值 表达式在程序运行之前,就已经计算结果;所以,程 序运行速度没有变慢,但增强程序的可读性 MASM对除伪指令外各种汇编时处理的指令统称为操作 符(Operator)

第四章1-2讲 汇编语言程序设计ppt课件

第四章1-2讲 汇编语言程序设计ppt课件

精选ppt课件2021
25
天津工业大学
(4)带DUP的表达式
• 在表达式中使用重复数据操作符DUP,可以为连 续的存储单元提供重复数据,其格式为:
• N DUP(表达式)
• 其中N为重复因子,只能取正整数,表示定义了N 个重复数据存储单元,其类型由它前面的数据定 义伪指令确定,而每个数据存储单元中的初值由 DUP后面圆括号中的表达式给定。
随机数
DB 3 DUP(22H,11H,?)
精选ppt课件2021
27
天津工业大学
09FF:0000 22 11 ? 22 11 ? 22 11
09FF:0008 ?
0F99:000B
精选ppt课件2021
28
天津工业大学
用?预留存储空间
• MEM1 DB 34H,’A’,?,?,?

DW 20 DUP(?)
• LENGTH 变量 * TYPE 变量
精选ppt课件2021
40
天津工业大学
– LENGTH和SIZE运算符的具体运算规则是:如果变量是用重复操 作符DUP定义的,那么运算符LENGTH的运算结果是外层DUP的 给定值 (即外层重复次数),如果没有用DUP定义的变量,运算 结果总是1。
而运算符SIZE是LENGTH和TYPE两个运算结果的乘积。
天津工业大学
第4章 汇编语言程序设计
4.1 汇编语言源程序 4.2 伪指令 4.3 DOS系统功能调用 4.4 汇编语言程序设计基础 4.5 综合举例
精选ppt课件2021
1
天津工业大学
4.1 汇编语言源程序
了解:
• 计算机的三种语言 • 源程序的结构 • 汇编语言语句格式
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
assume cs:code, ds:data, es:extra
start: mov ax, data mov ds, ax ; 段地址 段寄存器 …
code ends end start 第四章汇编语言程序格式
讲义
…… code segment main proc far
DATA1 SEGMENT
A
DB 1,2,3
DATA1 ENDS
CODE
SEGMENT ASSUME DS:DATA1,CS:CODE

其中段寄存器名必须是CS ,DS,ES 和SS(对于386 及后继机
型还有FS 和GS)中的一个。段名必须是由SEGMENT定义的段
中的段名。
第四章汇编语言程序格式
默认为 PARA
第四章汇编语言程序格式 讲义
3) 组合方式
组合方式有六种类型可供选择。
(1)PRIVATE 该段为私有段,在连接时将不与其他同名段合并
(2)PUBLIC 该段在连接时可以把不同模块的同名段相连接而形 成一个段。 每一段从小段的边界开始,所以各段之间有小于16个字
节的间隙。
(3)COMMON 该段在连接时可以把不同模块中的同名段重叠 而形 成一个段,由于各同名段有相同的起始地址,所以会产生
2) 定位方式
(1)PARA:表示本段必须从能被16整除的地址处开始存 放,即段起始地址最低四位必须是0。
(2)WORD:表示本段要从一个偶数地址处开始存放,即 段起始地址的最低一位必须是0。
(3)BYTE:表示本段起始地址可以从任一地址处开始存放。
(4)PAGE:表示本段要从能被256整除的地址处开始存放, 即起始地址的最低八位必须是0。
N2 DATA2
DB 105H DUP(0) ENDS
DA3 T1
SEGMENT DB 50 DUP(20H)
DATA3 ENDS
END
第四章汇编语言程序格式 讲义
该段的定位组合方式示意图如图所示。
第四章汇编语言程序格式 讲义
4) 使用类型 USE16 使用16位寻址方式 USE32 使用32位寻址方式
讲义
◆ 段定义伪操作: 完整的段定义格式举例
data segment ; 定义数据段 …
data ends ;---------------------------------------extra segment ; 定义附加段
… extra ends ;---------------------------------------code segment ; 定义代码段
段长≤64K 段长≤4G
5) 类别 在引号中给出连接时组成的段组的类型名。在连
接后形成的装入模块中,可使相同类别的段位置靠 在一起。
第四章汇编语言程序格式 讲义
◆假定伪指令ASSUME
格式:ASSUME 段寄存器:段名 [,段寄存器:段名]
功能:建立段寄存器与段之间的对应关系。该伪指令一般 出现在代码段中。
第四章汇编语言程序格式 讲义
4.2 伪操作(伪指令)
伪操作是汇编程序对源程序进行汇编时处理的操作, (不像机器指令那样是程序运行期间由计算机来执行的)
完成处理器选择、存储模式定义、数据定义、存储器 分配、指示程序开始结束等功能。
• 处理器选择伪操作 • 段定义伪操作 • 程序开始和结束伪操作 • 数据定义及存储器分配伪操作 • 表达式赋值伪操作 • 地址计数器与对准伪操作 • 基数控制伪操作
•用编辑程序(任何一种文本编辑程序)建立ASM文件;
•用MASM程序把ASM文件转换成OBJ文件;
•用LINK程序把OBJ文件转换成EXE文件;
•用DOS命令直接键入文件名就可执行该程序; •用调试程序DEBUG第讲(或四义章C汇O编D语E言VI程E序W格)式跟踪调试程序。
汇编程序功能
汇编程序的主要功能: • 检查源程序,给出出错信息; • 处理伪操作(伪指令); • 展开宏指令; • 产生目标文件(.obj)和列表文件(.lst)。
M1
DB 45H DUP(0)
模块2:

DATA1 SEGMENT PARA PUBLIC ‘DATA1’
M2
DB 104H DUP(11H)
DATA1 ENDS
DATA1 ENDS
DATA2 SEGMENT PARA COMMON ‘DATA2’
DATA2 N1
SEGMENT PARA COMMON ‘DATA2’ DB 102H DUP(0)
第四章汇编语言程序格式 讲义
4.2.2 段定义伪操作:
1. 完整的段定义伪指令 段定义伪操作的格式:
段名 SEGMENT [定位类型] [组合类型] [使用类型] [‘类别
’]
……
……
; 语句序列
段名 ENDS
1) 段名
段名是为该段起的名字,用来指出汇编程序为 该段分配的存储区起始位置。
第四章汇编语言程序格式 讲义
第四章汇编语言程序格式 讲义
4.2.1 处理器选择伪操作:
这类伪操作一般放在程序的最前面,如不给出,则汇编程 序默认值为 .8086。
.8086 选择 8086 指令系统 .286 选择 80286 指令系统 .286P 选择保护模式下的 80286 指令系统 .386 选择 80386 指令系统 .386P 选择保护模式下的 80386 指令系统 .486 选择 80486 指令系统 .486P 选择保护模式下的 80486 指令系统 .586 选择 Pentium 指令系统 .586P 选择保护模式下的 Pentium 指令系统
第3章 汇编语言程序结构
• 汇编程序功能 • 伪操作 • 汇编语言程序格式 • 汇编语言程序的上机过程
第四章汇编语言程序格式 讲义
4.1 汇编程序功能 汇编语言程序的建立及执行过程:
编辑程序
. ASM 文件
汇编程序
. OBJ 文件
连接程序
. EXE 文件
文本编 辑器
MASM
LINK
在计算机上运行汇编语言程序的步骤是:
覆盖。
(4)STACK 把不同模块的同名段组合而成一个堆栈段。各段
之间没有间隙。
(5) MEMORY 同PUBLIC
(6)AT 表达式 使段地第四址章是汇表编达语式言程所序计格算式出来的16位值,CS除外。
讲义
【例】有两个模块,各模块段定义如下
模块1:

DATA1 SEGMENT PARA PUBLIC ‘DATA1’
相关文档
最新文档