版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 编译.ASM文件 汇 编.OBJ文件 调汇编程序如:TASM.EXE 链接 链 接.OBJ文件 库文件可执行文件.EXE .COM调链接程序如:TLINK.EXE第1页/共32页2.源程序中的语句类型 一个完整的源程序应包含2类语句: 符号指令、汇编伪指令(伪语句) 标号 : 符号指令符号指令 变量名 伪指令伪指令标号名、变量名、段名、过程名命名规则:以字母开头,后跟字母、数字长度31个字符H符号指令:经汇编后,其目标指令通知CPU进行什么操作H伪指令:为汇编程序,链接程序提供汇编链接信息此处无冒号第2页/共32页二.常用的伪指令1.字节字义伪指令 变量名 DB 一串用逗号间隔的单字节数 说
2、明:v DB Define Byte 的缩写,“定义字节”。v ? 随机数, Dup Duplicate(重复)v 3 Dup(?) 代表3个用逗号间隔的随机数v 5 Dup(A)代表5个用逗号间隔的A的ASC码如: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLO N2 DB ?,?,? ;与下条等价 N2 DB 3 DUP(?)第3页/共32页功能:H通知汇编程序把DB后跟的单字 节数,依次存入从变量(如N1) 开始的单元,负数用补码表示, 单引号中的字符翻译成ASC码。 如: N1 DB 12H,64,-1,3*3 DB 010
3、10101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;与下条等价N2 DB 3 DUP(?)汇编后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:第4页/共32页如: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;与下条等价N2 DB 3 DUP(?)功能:H用DB定义的这些内存单元(N1 N1+12, N2 N2+2)的属性均为“字节型”。汇编后12 H40 HFF H09 H55 H41
4、H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:N1+12:N2+2:第5页/共32页2.字定义伪指令 变量名 DW 一串用逗号间隔的双字节数如:WNUM DW 1234H,12, AB, C DW ?,? DW 2 DUP(?)说明: H DW Define Word “字定义” H ? 双字节随机数 H 单引号中只能是一个或两个字符 功能: H通知汇编程序把DW后跟的双字节数, 依次存入从变量名开始的单元,每一个数 占2个字节,低位字节低址单元, 高位字节相邻的高址单元。功能:H用DW定义的这些单元的属性都是“字型”, 如上例, WNUM WNUM
5、+11这12个单元的属性都是“字型”。 汇编后WNUM:34 H 12 H 0CH0 042 H41 H43 H0 0X X X X X XX XWNUM+11:第6页/共32页功能:H通知汇编程序把DD后跟的数存入变量名开始的单元, 每一个数占4个字节,低位字节低址单元,高位字节高址单元。 H用DD定义的这些单元的属性都是“双字型”,上例DNUM DNUM+3单元,这些单元都是双字型单元3. 双字定义伪指令 变量名 DD 一串用逗号间隔的4字节数 如: DNUM DD 12345678H 汇编后DNUM: 34H78H 56 H 12H第7页/共32页5. 等值伪指令 符号常数 EQU 表达
6、式 如: NUM EQU 33 功能: 定义符号常数NUM的值为33 6. 等号伪指令 符号常数=表达式 如: NUM = 33 功能:定义符号常数NUM的值为33 4. 多字节定义伪指令 变量名 DF 一串用逗号间隔的6字节数 变量名 DQ 一串用逗号间隔的8字节数 变量名 DT 一串用逗号间隔的10字节数功能: 通知汇编程序为DF/DQ/DT后跟的每一个数,分配 6/8/10个单元。 第8页/共32页三. 常用运算符 1. 算术运算符: +, -, *, / 2. 关系运算符: EQ(等于), NE(不等于), GT(大于),LT(小于), GE(大于或等于)例如: NUM EQU 33
7、MOV AL, NUM;该指令与下条指令等价 MOV AL , 33区别:H用EQU定义的符号常数,其值在后继语句中不能更改;用“=”定义的符号常数,其值在后继语句中可以重新定义 第9页/共32页 应用: H$运算符紧跟在 DB、DW、DD伪指令之后,统计字符串的长度。 例如数据段有: BUF DB THE QUICK BROWN FOX ;字符串长度19 LLL EQU $-BUF 汇编后 符号常数LLL的值即为193. $运算符 H汇编程序对源程序是逐行汇编的,$运算符可以返回 汇编计数器的当前值。第10页/共32页如: MOV AX, SEG DATA MOV DS, AX设“DATA”
8、是数据段的段名,上述两条指令算出数据段的段基址,先赋给AX,再转赋DS。 5.OFFSET运算符 H格式:OFFSET 变量名或标号名 H功能:算出某个变量或标号名所在单元的偏移地址(有效地址)。4. SEG运算符 H格式: SEG 段名或变量名或标号名 H功能: 计算某一逻辑段的段基址 第11页/共32页设以“DATA”为段名的数据段中,存在 BUF DB 12 ,34 ,56代码段: MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET BUF MOV AL,BX ;AL=12以下两条指令等价的: MOV BX,OFFSET BUF LEA BX,BUF第12页/
9、共32页6. PTR运算符 格式: 类型说明符 PTR 地址表达式 功能: 在本条指令中临时修改地址表达式的属性 内存单元5种寻址方式子程序的名称 BYTE(字节) WORD(字) DWORD(双字) FAR(远) NEAR(近)第13页/共32页举例:设数据段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 代码段: MOV AX,BUF MOV AL,BUF MOV AX,WORD PTR BUF ; AH=22, AL=11 MOV BUF,12H MOV B
10、UF,1234H MOV WORD PTR BUF,1234H ; BUF单元为34H,BUF+1单元为12H 汇编后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第14页/共32页举例:设数据段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV BX,OFFSET XX MOV SI,OFFSET YY MOV DI,OFFSET ZZ MOV BX,12H MOV BYTE PTR BX,12H ;XX单元为12H
11、 MOV WORD PTR BX,12H ;XX单元为12H, XX+1单元为0 汇编后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第15页/共32页举例:设数据段有: BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV SI,1234H MOV WORD PTR SI,1234H MOV AX,BX MOV AL,SI MOV DI,AX INC BX INC SI INC DI INC BYTE PTR BX ;XX单
12、元=0 INC WORD PTR SI ;YY,YY+1单元=0 INC DWORD PTR DI ;ZZ ZZ+2单元=0,ZZ+3=1 汇编后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:第16页/共32页7.方括号用方括号括起来的地址表达式是访问内存操作数常用的寻址方式,方括号的另一用途是标注数组元素的下标,下标从0开始。 数组下标变量名就是数组名代码段: MOV AL,BUF3;AL=44 BUF DB 11,22,33,44 WBUF DW ?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FF
13、H,0FFH,0 如上例数据段:第17页/共32页一 . 源程序的结构 一个完整的源程序,在结构上必须: H用段定义语句定义每一个逻辑段 H用过程定义语句定义每一个过程 H用ASSUME语句说明段约定 H用汇编结束语句说明源程序结束 H程序结束应能安全返回DOS把控制权还给操 作系统4.2 宏汇编的基本语句 第18页/共32页二. 基本语句 1. 方式选择伪语句 格式之一: 486 H功能:通知汇编程序将以下指令汇编成486的 机器指令。 H 应用:源程序第一条指令。2. 段定义语句 段名 SEGMENT 定位参数 链接参数 分类名 段长度 段体 段名 ENDS第19页/共32页 说明: 段名
14、以字母开头,命名规则同变量名、标号名, 段名不说明段体的性质。 SEGMENT / ENDS是逻辑段的定界语句。 定位参数通知链接程序:逻辑段的目标代码在存 储器中如何存储,有4种描述: H BYTE 可以从任意地址存放 H WORD 从偶地址开始存放 H PARA(或缺省) 从能被16整除的地址开始存放 H PAGE 从能被256整除的地址开始存放第20页/共32页链接参数有6种描述: H PUBLIC 通知链接程序,把不同模块中,具有 PUBLIC属性的同名段,在满足定位参数的要求 下,按指定的链接顺序链接成一个逻辑段。 H MEMORY 与PBULIC类似。 H COMMON 通知链接程
15、序把不同模块中都具有 COMMON属性的同名段,根据指定的链接顺序, 按照“覆盖” 方式,组合成一个逻辑段。 组合之后的逻辑段体积等于链接之前具有COMMON 属性的同名段中的最大的段体。 H STACK 具有STACK属性的段是堆栈段,链接程 序将把同名堆栈段组合成一个大的堆栈段。 第21页/共32页H AT表达式 如: DATA SEGMENT AT 40H ORG 17H KEYFLAG DB ? DATA ENDS 表明逻辑段段基址为40H,KEYFLAG的偏移地址 为17H。 注意: 因为程序在内存中的位置是由操作系统分配的,用户程序不能指定逻辑段的段基址。 严格地讲,“AT表达式”
16、这一属性是供操作系统程序使用的。H 缺省 表明该段是独立的,链接程序对于具有缺省链接参数的同名段,不进行组合。 第22页/共32页H 不同模块同名段链接参数的功能示意图A段 (PUBLIC) 段体A1主模块子模块C PSPUBLIC COMMONSTACK C段 (STACK) 段体C1A段 (PUBLIC) 段体A2C段 (STACK) 段体C2B段 (COMMON)段体B1B段 (COMMON)段体B2 段体A1 段体A2段体B2段体C1段体C2第23页/共32页 分类名 分类名的名字由程序员命名,通常数据段分类名为 DATA,代码段分类名为CODE,通知链接程序, 把分类名相同的同名逻辑
17、段放在邻近的内存区。 段长度: USE16 表示该段体积最大64K,单元偏移地址为16 位,采用16位寻址。 USE32 表示该段体积最大4G,单元偏移地址为32 位,采用32位寻址。 在实模式下运行, 应选用USE16。第24页/共32页 逻辑段有4类属性参数,每一参数又有多种选择,怎样使用? H 在实模式环境下,各逻辑段应采用16位寻址,所以段长度选用USE16。 H 堆栈段选用 STACK 为链接参数,STACK为分类名,由于选用 STACK 为链接参数,汇编后DOS将自动给SS:SP赋值。 H 只有在模块化程序中,才有必要考虑链接参数的选择。 在单一模块程序中,定位参数,链接参数,分类
18、名均 选用“缺省”表示即可。段参数应用小结第25页/共32页3. 段约定语句 ASSUME 段寄存器:段名,段寄存器:段名 如: ASSUME CS:CODE, DS:DATA 功能: 通知汇编程序 以CODE为段名的是代码段,对CODE段寻址:CS* 24 以DATA为段名的是数据段,对DATA段寻址:DS* 24 说明: H ASSUME语句通常是放在代码段的第一条语句。 H ASSUME语句不能完成对段寄存器的赋值(没有赋 值功能)。 第26页/共32页 对段寄存器赋值有2种方法: H 用SEG运算符 如: MOV AX, SEG DATA MOV DS, AX H 把段名赋给段寄存器 如: MOV AX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 学龄前自闭症教师认知课件
- 自动化测试实践与经验
- 她是我的朋友1
- 2026 学龄前自闭症感统干预课件
- 女生节活动总结集合15篇
- 家长会代表发言稿(合集15篇)
- 寝室活动总结15篇
- 2025工程(瓷砖维修)合同
- 2026年销售人员大客户管理培训计划
- 薪酬福利管理管理办法
- 国家义务教育质量监测模拟测试(四年级)心理健康
- JC T 49-2017 工业原料云母
- 混凝土梁式桥梁损伤健康监测与预警
- 北京玉渊潭中学新初一语文分班测试题(包含答案)5套
- 免疫疾病的诊断与免疫治疗技术
- 裕能思源高端圆柱锂离子电池项目环评报告
- 机房建设施工培训
- ISO9001质量管理体系通用文件培训
- 对外投资风险的防范与规避
- 2023年慈利县人力资源与社会保障系统事业单位招聘《人力资源与社保保障专业知识》题库及答案解析
- GB/T 5193-2020钛及钛合金加工产品超声检验方法
评论
0/150
提交评论