第四章宏汇编语言程序设计

合集下载

第4章 汇编语言程序设计

第4章 汇编语言程序设计

二、宏汇编语言程序的语句格式
[标号:] 操作符 操作数[,操作数] [;注释] NEXT: ADD AX,BX ;AX(AX)+(BX) 标号: 符号化的代码地址。 操作符:可以是指令、伪指令或宏指令的助记符。 操作数:可以是以下形式: ①常数 ②寄存器名 ③标号、变量名(符号化的数据地址) ④表达式(由常数、地址常量和运算符组合而成)
本章小结
4.1 伪指令及宏汇编基本语法 4.2 顺序程序设计 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计 4.6 系统功能调用 4.7 BIOS调用 4.8 实用程序设计
汇编语言程序中标识符的命名规则 ①字母:A ~ Z 或 a ~ z 注:汇编源程 序中不区分大小写字符 ②数字:0 ~ 9 注:数字不用于标 识符的第一位 ③特殊符号:?、/、_、%等 注:标 识符中谨慎使用特殊符号 ④不能使用汇编语言程序中的保留字
汇编语言程序中的运算符 ①算术运算符: +、-、*、/、MOD ② 逻辑运算符: AND、OR、XOR、NOT 、 SHL、SHR ③ 关系运算符: EQ、NE、LT、GT、LE、 GE ④ 分析运算符: SEG、OFFSET、TYPE、 SIZE、LENGTH ⑤ 综合运算符: PTR、段超越前缀、THIS、 SHORT、HIGH、LOW
4.2 顺序程序设计
顺序程序是从第一条指令开 始,按其自然顺序一条一条 地执行,直到最后一条指令 为止。
4.3 分支结构
N Y
e?
e1 ?
Y
N
e2 ? Y
N e3 ? Y N
switch case1 case2
……
casen
4.4 循环程序设计
e? N
Y

宏汇编第4章

宏汇编第4章

4.3.1 转移指令
示例:设 X 、 Y 均为字变量, X 中存放着有符号数 x 。 程序运行后,Y中的内容是什么?
4.3.1 转移指令
MOV Y,-1 ;Y=-1 MOV AX,X ;AX=X CMP AX,0 ;AX与0比较 JE EXIT1 ;是0,转EXIT1 ADD AX,1000H ;不是0,AX=AX+1000H JO OVERFLOW ;溢出,转OVERFLOW JNS EXIT1 ;未溢出:为正,转EXIT1 NEG AX ;为负,对AX求补 EXIT1:MOV Y,AX ;Y=AX MOV AH,4CH 程序运行结果: INT 21H 0 X=0 时 OVERFLOW: …… ;溢出处理 Y= 溢出 6FFFH<X<7FFFH MOV AH,4CH INT 21H X<7000H |X+1000H|
4.3.1 转移指令
一、条件转移 3.有符号条件转移指令 例如有程序段: MOV AL,-40H CMP AL,50H JG L1 …… L1: …… 由于-40H<50H,不满足JG的条件,顺序执行 如将JG改为JA,由于(-40H)补=0C0H>50H,满足JA 条件,转L1
4.3.1 转移指令
4.2 顺序程序设计
程序: STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT INPUT DB ‘请输入X(0-9):$’;提示输入TAB TAB DW 0,1,8,27,64,125,216 DW 343,512,729;立方表 X DB ? ; 数X XXX DW ? ;立方结果XXX DATA ENDS
4.3.1 转移指令
一、条件转移 3.有符号条件转移指令 例如有程序段: CMP AL,8 JG L1 …… L1: …… 1)设AL=15H,则大于8,满足JG的条件,转L1 2)设AL=8,则等于8,不满足JG的条件,顺序执行 3)设AL=0FFH,则(-1)小于8,不满足JG的条件, 顺序执行。

第四章 汇编语言程序设计[4-1]

第四章 汇编语言程序设计[4-1]
微型计算机原理与接口技术
第五讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done before. —DONANLD E. KNUTH
21
§4.1 汇编语言程序格式——数据项
三、数据项
汇编语言中的操作数,可以是常数、寄存器、存储器、变量、标号或表
达式。其中,常数、变量、标号是三种基本数据项。
1、常数
是固定值,没有属性,是确定的数据。 八进制:字母“Q”或“O”结尾,例1037O、2370Q; 十进制:字母“D”结尾或省略,或科学表示法,例1234D、5678、2.735E-2; 十六进制:字母“H”结尾,“A~F”开头时,前面加0,例56H、0A7F2H;
16
;注释
;注释
操作数, 操作数
第四章 宏汇编语言程序设计 ——概述 由以上实例可知:
2、分段结构: 指定代码段、数据段、堆栈段 段定义的格式:XX SEGMENT
…… XX ENDS
3、如果程序已经定义了数据段、堆栈段、附加段,则主程序的 开始就要设置这些段的地址。 代码段的地址不能人为设置,由计算机分配。 4、全部源程序用END语句结束。
15
第四章 宏汇编语言程序设计 ——概述
由以上实例可知:
1、程序语句的类型和组成: (1)指令性语句 标号: 操作码 操作数, 操作数 (2)伪指令语句 名字 伪操作 空格作为间隔 标号和名字的规定: (1)英文字母、数字及专用字符 (2)最大长度不能超过 31 个 (3)不能由数字打头 (4)不能用保留字(如寄存器名,指令助记符,伪指令)

第四章 宏汇编语言程序设计

第四章 宏汇编语言程序设计
例4-5 IN AL,PORT AND DX,PORT AND 0FEH OUT DX,AX 前一个AND是指令助记符,而后一个AND是 逻辑运算符。
三、关系运算符 有:EQ(相等)、NE(不等)、LT (小于)、GT(大于),LE(小于或等于)、 GE(大于或等于)。 关系运算符的两个操作数必须是数据, 例4-6 MOV AX,10H GT 16 或是同一段内的两个存储单元的地址。进行 MOV BL,6 EQ 0110B 关系运算的比较操作后,结果是一个数值, MOV CX, 12H GE 12 若结果为真,输出全1,即FFH(8位)或 由于表达式12H GE 12 为真所以汇编成: 由于表达式6 EQ 0110B为真所以汇编成: FFFFH(16位)。若结果为假,输出全0。 由于表达式10H GT CX,0FFFFH 16为假所以汇编成: MOV BL,0FFH MOV CX,1 AX,0 注意: MOV BL,1 × ×
4-2 汇编语言中的表达式
表达式由运算对象和运算符组成,在汇编时由 汇编程序对它进行运算,运算结果作为一个语句中 的操作数来使用。 ※运算对象:常数、标号或变量
※运算符:
①算术运算符 ②逻辑运算符 ③关系运算符 ④数值返回运算符 ⑤修改属性运算符 ⑥其它运算符
一、算术运算符 有:+、-、*、/、MOD(模,即取除法运算结 果之余数)、SHL(左移,左移1位相当于乘2)、 SHR(右移,右移1位相当于除以2)。 例4-2 数组ARRAY的定义如下: 所有的算术运算符均可以对数据进行运算,运 ARRAY DB 1,2,3,4,5,6,7,8 算对象与运算结果都是整数。若对地址运算,通常 TRY DB 20 两变量偏移地址之差 是在标号上加/减某一个值,例DA1+2、K2-4各表示 指令为: 一个存储单元的地址,对地址乘是没有意义的。 MOV AX,30*5 MOV CX,(TRY-ARRAY);数组长度→CX 汇编时,计算表达式形成指令为: MOV AX,150 MOV CX,8

第四章宏汇编语言程序设计

第四章宏汇编语言程序设计

*.ASM
*.Oห้องสมุดไป่ตู้J
(3)链接得到可执行文件(解决定位错误,link.exe) *.EXE (4)调试得到功能正确的应用软件(解决逻辑错误) (以上第2~4步任何一步有错都应返回到第1步重来)
2.宏汇编源程序 汇编源程序组成 “指令”和 “伪指令”共同构成。 “指令”由8086CPU规定的;
“伪指令”说明与硬件有关的信息;
MOV DS,AX LEA SI,D1
; DS初始化为DATA
指令
;预置源数据的指针
微机原理与接口技术
MOV CX,CC+1
LODS BYTE PTR [SI] DEC CX
;预置次数
;取一个数并修改指针 ;修改次数
MOV AH,0
CLC AGAN:ADC SUM,AX LODS BYTE PTR [SI] LOOP AGAN MOV AH,4CH INT 21H CODE ENDS END BEGIN

1.汇编语言程序设计的特点
计算机语言优化

机器语言
时间,空间均优化;只有计算机才懂 • 汇编语言 时间,空间均优化;但源程序复杂 • 高级语言 时间,空间均较差;但源程序简单
1.汇编语言程序设计的特点
从计算机语言到计算机机器码

机器语言
直译 汇编程序 编译程序 解释程序

汇编语言
高级语言
机器码
• 偏移量属性
汇编后,AG 对应确定的 IP 值
• 类型属性
若标号在段内为 NEAR 类型、在段间为 FAR 类型
微机原理与接口技术
标识符
段名的属性 段基址
过程名的属性
过程的入口地址

四章汇编语言程序设计ppt课件

四章汇编语言程序设计ppt课件
指令助记符:MOV,ADD,…. 指示性(伪指令)操作符:DB,DW,SEGMENT,
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段

第4章 宏汇编语言

第4章 宏汇编语言

(4)分析运算符 分析运算符有SEG、 OFFSET、TYPE、LENGTH和 SIZE。分析运算符可以把一个存储单元的地址分解为 相应的段地址和偏移量。 ①SEG运算符
格式:SEG段名
功能:计算某个逻辑段的段基址。
②OFFSET运算符
格式:OFFSET变量名或标号名
功能:算出变量名(或标号名)的地址偏移量。
2.变量、变量定义伪指令
1)变量和标号 变量代表内存操作数的存储地址,或者说变量名 就代表某个存储单元。标号代表指令地址,它为 转移指令提供了转移目标。由于标号和变量是用 一串字符命名的,从这个意义上讲,标号和变量 又称为符号地址。标号和变量的命名规则是:以 字母或者下划线开头,后跟字母、数字、下划线, 长度不超过31个字符,并且系统中保留字不能作 为标号和变量名。保留字是系统中已经专用的有 特殊意义的名字,例如,指令的操作码助记符、 运算符、寄存器名称、伪指令助记符等等。
标号被定义在代码段,变量通常被定义在数据 段、附加段或堆栈段。 标号和变量都有共同的3个属性。即: a.段属性。即标号或变量所在段的段基址,用 SEG运算符可以计算得到。 b.偏移属性。即标号或变量所代表的存储单元, 相对于段首址之间的地址偏移量(又称有效地 址),用OFFSET运算符可以计算得到。
⑤ SIZE运算符 格式:SIZE 变量名
功能:计算一个存储区域所占用的字节数。
(5)综合运算符
ASM中,综合运算符有PTR和THIS。
THIS综合运算符的功能是改变存储区的类型,THIS 运算符也被称为类型指定运算符。THIS运算符的运 算对象是数据类型(BYTE、WORD、DWORD)或 者距离类型(NEAR、FAR),用于规定所指变量或 者标号类型属性或者距离属性。

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

第4章-汇编语言程序设计
第4章 汇编语言程序设计
*
目标文件中的段与目标存储器之间的关系:
目标文件
目标存储器
.bss
.data
.text
RAM
E2PROM
ROM
第4章 汇编语言程序设计
*
3. 段定义伪指令
汇编器对段的处理是通过段伪指令来区别各个段的,并将段名相同的语句汇编在一起。 汇编器有5条伪指令可识别汇编语言程序的各个部分:
;初始化数据段 ;3组数据放入.data段 ;在.bss段保留10个单元 ;0123h放入.data段 ;初始化文本段 ;1字指令 ;2字指令 ;2字指令
;初始化数据段 ;3组数据放入.data段
第4章 汇编语言程序设计
*
汇编语言源程序:
链接器能够读/写所有类型的COFF文件,默认时链接器生成的是COFF2文件,采用-vn链接选项可以选择不同类型的COFF文件。
第4章 汇编语言程序设计
*
4.2.1分段结构 所谓“段”就是在存储器映像中占据连续空间的一段独立的代码或数据。每个目标文件都分成若干段。
COFF目标文件包含以下三个默认的段: .text 段:通常内含可执行代码; .data段:通常内含已初始化数据; .bss段:是为没有初始化的数据保留空间的。
第4章 汇编语言程序设计
*
C源文件
C编译器
汇编 源文件
汇编器
汇编 源文件
COFF 目标文件
链接器
可执行的 COFF文件
宏源文件
存档器
宏库
存档器
目标 文件库
建库工具
运行时 支持库
EPROM 编程器
交叉引用 列表器
调试工具
绝对地址 列表器

宏汇编语言

宏汇编语言
例如:
BUF1 DB N1,N2,N3,…N10
BUF2 DB 10 DUP(0)
BUF3 DW 10 DUP(?)
OFFSET BUF1=0000H OFFSET BUF2=000AH OFFSET BUF3=0014H
TYPE BUF1=1
TYPE BUF2=1
TYPE BUF3=2
LENGTH BUF1=1
INC BUFW MOV
BYTE PTR [DI],12H [DI], 12H WORD PTR [BX] BYTE PTR [BX]
[BX]
DW
1234H
AH,BYTE PTR BUFW
AH=34H
;将[DI]定义为字节类型。 ;非法指令 ;字加1 ;字节加1,当([BX])=1FFH时结 ;不相同 ;非法指令
• 指示性语句(伪指令)
• 符号定义伪指令:EQU (=)
格式:符号名 例如:
EQU(=) 表达式
COUNT EQU 20 ABC=21H+4 MOV AL,COUNT MOV AL,ABC
;将20送AL ;将25H送AL
EQU不能重复定义,=可任意重复定义。
如: A=3 B EQU 5 A=10
;定义B=5 ;重定义A为10
4.1汇编语言的基本语法
•常量、变量和标号
•变量定义
变量名 存贮伪指令
表达式1,表达式2,……
例如:
X DB 0AH
AA EQU 1ABCH
Y DW AA STR DB ‘ABCD1234’,12H,0ACH
重复子句表达式:
N 例如:
DUP (表达式)
AA DB 10 DUP(0) BB DW 5 DUP(21*5),0DH,0AH

宏汇编语言程序设计 .ppt

宏汇编语言程序设计 .ppt

ENDS
END START
§4-4 程序设计方法
【 分支结构】
2.多分支
依次测试多个条件是否满足:若满足转入相应分支入口;不满足继续向下
测试,直到全部测试完。
此方法编程简单直观,但速度慢。
判定条件
例 有8个加工子程序,入口地址分别为
P1 ,P2 ,…P8 。编程实现检测键盘输入
命令,使系统分别转向8个加工子程序。
概述
一个好的程序,应该具备的特点:
程序结构模块化,程序易读,易调试及维护。 执行速度快。 占用内存空间小。
§4-4 程序设计方法
【概述】
设计汇编语言源程序的基本步骤:
⑴ 分析问题 抽象数学模型,确定实现算法。
⑵ 绘制程序流程图 粗框图 细框图。
⑶ 分配存储空间、工作单元 分配数据段、堆栈段、程序段 的位置,确定寄存器主:
§4-4 程序设计方法
P1: P2: P3:
P8: ST :
MOV INT CMP JE CMP JE … CMP JE JMP … … … … … HLT
AH, 1 21H AL, ‘1’ P1 AL, ‘2’ P2
AL, ‘8’ P8 ST
【 分支结构】
;1号功能键调用,键盘接收 ;键值为1,转1号加工子程序 ;键值为2,转2号加工子程序
MOV AH, 0
DEC AL MOV BL, AL
; AL为键值
ADD ADD MOV ADD JMP
AL, AL AL, BL BX, OFFSET BASE BX, AX BX
;偏移量=键值×3 ;基地址 ;表地址 ;转入转移指令
§4-4 程序设计方法
【 分支结构】
⑶根据关键字分支

微机原理课件第四章宏汇编语言程序设计

微机原理课件第四章宏汇编语言程序设计

数据结构和算法实现
了解宏汇编如何实现常用的数 据结构和算法。
汇编优化技巧
1 汇编代码优化的原则
掌握汇编代码优化的基本原则,提高程序的性能。
2 循环展开和代码复用
学习如何通过循环展开和代码复用来提高程序的效率。
3 利用宏定义和宏指令提高编程效率
发挥宏定义和宏指令的威力,提高编程效率。
汇编程序的调试
微机原理课件第四章宏汇 编语言程序设计
让我们一起探索微机原理课件的第四章,了解宏汇编语言程序设计的精髓。
宏汇编语言概述
宏的概念
了解宏的定义和作用,扩展汇编语言的功能。
宏指令和宏函数
掌握使用宏指令和宏函数来提高代码的重用性和效率。
宏语言的特点
了解宏语言的独特特点,如代码的可读性和可维护性。
宏程序设计
1
调试工具的使用
了解常用的汇编调试工具,如调试器和模拟器。
2
断点调试和单步执行
掌握断点调试和单步执行的技巧,逐行分析程序的执行过程。
3
支持汇编调试的集成开发环境
了解集成开发环境如何支持汇编调何定义和调用宏,并掌握宏参
宏展开和宏替换
2
数和返回值的使用。
深入了解宏的展开过程以及宏替换的
作用。
3
宏指令使用和宏调试
掌握宏指令的使用方法和调试技巧, 确保程序的正确性。
实际应用
编写宏汇编程序实例
通过实例学习如何编写宏汇编 程序,并且理解其应用场景。
宏汇编和C语言混合编程
探索宏汇编和C语言混合编程, 发挥两种语言的优势。

第4章 8086-8088的宏汇编程序设计

第4章 8086-8088的宏汇编程序设计

第4章8086/8088的汇编程序设计汇编语言是用意义明确的助记符来表示指令的操作码、操作数。

汇编语言是面向机器的语言,不同的机器有不同的汇编语言。

用汇编语言编写的程序具有执行速度快、占用存储空间小、实时性能好等特点。

汇编语言被大量用于编写计算机系统程序、实时控制程序等。

本章是在掌握了8086/8088 CPU指令的基础上,重点学习如何设计汇编程序,以及构成汇编程序所需要的伪指令。

4-1 汇编语言的基本概念1.机器语言(Machine Language)机器语言是一种用二进制表示指令和数据,能被机器直接识别的计算机语言。

它的缺点是不直观,不易理解和记忆,因此编写、阅读和修改机器语言程序都比较繁琐。

但机器语言程序是计算机惟一能够直接理解和执行的程序,具有执行速度快、占用内存少等特点。

2.高级语言(High Level Language)如果说机器语言是面向机器的,那么高级语言(如BASIC,FORTRAN等)则是“面向过程”的语言。

利用这些语言编程,程序员可以完全不考虑机器的结构特点,不必了解和熟记机器的指令系统,仅使用一些接近人们书写习惯的英语和数学表达式形式的语句去编制程序。

这样编写的程序与问题本身的数学模型之间有着良好的对应关系,可在各种机器上通用(不同机器之间仅做少量修改)。

但是,这种用高级语言编写的源程序并不能在机器上直接执行,需要被翻译成对应的目标程序(即机器语言程序),机器才能运行。

把具有这种翻译作用的程序称为解释程序或编译程序,见图4-1。

图4-1 编译程序的功能示意图由于高级语言程序是在未考虑机器的结构特点的条件下编写的,因而它就不能充分利用某种具体CPU所具有的某些特性,而通过编译或解释程序生成的目标程序往往比较冗长,占有较多的内存空间,执行时间也比较长,这就限制了它在某些场合下的运用。

例如,实时的数据采集、检测和在线的实时控制等,往往要求程序的目标代码尽可能少占内存并有尽可能快的执行速度,在这些场合下,使用高级语言编写的程序常常不能满足要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个例子程序
Page 124,例4-1 程序由段的描述组成 指令语句/伪指令语句构成
§4-1 汇编语言程序格式
指令性语句 伪指令语句 数据项
汇编语言程序格式——指令语句
对象
CPU 与机器码相对应,要求CPU执行的操作
格式
[标号:] 指令助记符 [[操作数],操作数][ ;注释]
EQ、NE、LT、GT、LE、GE 对象
数据 同段内的偏移地址
结果
真:全1 假:全0
表达式——关系运算
例:
abc
equ 10h
mov ax,abc eq 10 mov ax,abc lt 10 mov ax,abc gt 10
表达式——数值返回运算
Offset、seg、type、length、size 对象
汇编语言程序格式——伪指令语句
对象
汇编程序 通知编译器,如何生成目标码。本身不产生
机器目标吗
格式
[名字] 伪指令助记符 [[操作数],操作数...][ ;注释]
汇编语言程序格式——数据项
常数
确定的数据,有固定值,没有属性
变量
存放在存储单元中的值 在程序中以变量名的形式出现,代表存放数
据的存储单元的符号地址 三属性
段属性/段内偏移量属性/类型属性
汇编语言程序格式——数据项
标号
可执行指令语句的首字节地址的符号表示 被JMP/CALL/LOOP等所使用 三属性
段属性/段内偏移量属性/类型(距离)属性
§4-2 MASM中的表达式
指令操作数形式
常数、变量、标号、表达式、关键字
…… 段名 ends
定义组合类型 NONE PUBLIC COMMON AT STACK
伪指令语句——段定义
段名 segment 定位类型 组合类型 ‘分类名’ ……
段名 ends
定义该段的分类名,分 类名相同,被组合成同 一个段
伪指令语句——数据定义
dseg segment at 0055h one db 0 two dw two three dd two four equ 10h five dw four six db 5 - four
§4-3 伪指令语句
不生成机器码,帮助解释、生成指令的 机器码
变量定义、存储器分配、段定义……
伪指令语句——数据定义
定义/分配变量的存储器单元,并初始化 存储器单元
格式
变量名 助记符 操作数,操作数… ;注释
DB
符号地址
DW
DD
伪指令语句——数据定义
DUP的使用
定义重复数据 例 abc db 10 dup(0)ቤተ መጻሕፍቲ ባይዱab db 100 dup(1,2,34 dup(0))
变量、标号
结果

表达式——数值返回运算
Offset
变量、标号的段内偏移地址 与 LEA 的差异???
Seg
变量、标号的段地址
表达式——数值返回运算
Type
变量、标号的类型属性
Length
外层DUP的单元个数 无DUP则返回1
表达式——数值返回运算
Size
size = length * type
dseg ends
伪指令语句——段分配语句
ASSUME
说明当前段是哪些段,帮助汇编程序产生段前缀 必须放在第一句指令之前 不得短缺
Assume cs:cseg,ds:dseg,ss:sseg,es:eseg
Assume nothing
伪指令语句——过程定义
子程序 格式
过程名 PROC …… Ret
表达式——属性修改运算
Ptr
临时改变变量、标号的类型属性 mov word ptr [bx],0 jmp far ptr sub1
This
给变量、标号赋予类型 first equ this byte table dw 2000h
表达式——属性修改运算
High/Low
字节分离 常数、常数表达式 mov al,low (offset da1)
段名 segment 定位类型 组合类型 ‘分类名’ ……
段名 ends
伪指令语句——段定义
段名 segment 定位类型 组合类型 ‘分类名’
…… 段名 ends
定义该段起始地址定 位 Para Byte Word Page
伪指令语句——段定义
段名 segment 定位类型 组合类型 ‘分类名’
表达式——逻辑运算
与、或、非、异或——按位运算 运算对象、结果
常数
禁忌
变量名
表达式——逻辑运算
例:
abc abc1 v1 mov mov mov
= 10h equ 2ah db 3ah ax,abc and 0fh ax,abc or abc1 ax,v1 and abc
表达式——关系运算
第四章 宏汇编语言程序设计
本章内容
汇编语言程序格式 MASM中的表达式 伪指令语句 DOS系统功能调用 BIOS中断调用
概述
汇编语言
利用指令的助记符、符号地址、标号来编 写的语句
汇编语言源原程序
用汇编语言编写的程序

源 程 序
汇 编 语 言

汇编程序



连接程序
执 行 程 序
过程名 ENDP
属性
伪指令语句——END
结束语句 标识程序的首指令 格式
END 标号
伪指令语句——段寄存器的初始化
DS/ES
指令装入 mov ax,dseg mov ds,ax mov ax,eseg mov es,ax
伪指令语句——段寄存器的初始化
表达式的构成
运算符 运算对象:常数、变量、标号 结果为常数、地址
在汇编时求值 六大类运算
表达式——算术运算
加、减、乘、除、模、左移、右移 运算对象、结果
整数
禁忌
地址相加 无法求值
表达式——算术运算
例:
abc var1 var2 mov mov mov mov
equ 35h db 10h db 0ah ax,abc shr 4 ax,abc shl 4 cx,var2 - var1 bx,abc - 5
伪指令语句——数据定义
字符串的定义 DB/DW/DD?
DB按正常的顺序排列 DW/DD只能以两个一组作定义,顺序不同
伪指令语句——数据定义
符号地址的使用 DW? DD? DB??
伪指令语句——赋值
不分配存储器空间 常数 EQU
不可重复赋值
=
可重复赋值
伪指令语句——段定义
相关文档
最新文档