徽理工大骨计算机科学与技术系歌兆《汇编语言》 第4章汇编语言程序格式 汇编程序功能 伪操作 汇编语言程序格式 汇编语言程序的上机过程
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 • 汇编程序功能 • 伪操作 • 汇编语言程序格式 • 汇编语言程序的上机过程 第4章 汇编语言程序格式 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》
徽理工大骨计算机科学与技术系歌兆《汇编语言》 4.1汇编程序功能 汇编语言程序的建立及执行过程: 编辑程序 文件汇编程序OBJ ASM 连接程序 EXE 文件 文件 Edit等 MASM LINK 在计算机上运行汇编语言程序的步骤是: 用编辑程序(任何一种文本编辑程序)建立ASM文件 用MASM程序把ASM文件转换成OB文件 用LINK程序把OBJ文件转换成EXE文件; 用DOS命令直接键入文件名就可执行该程序
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 编辑程序 . ASM 文件 汇编程序 . OBJ 文件 连接程序 . EXE 文件 Edit 等 MASM LINK 汇编语言程序的建立及执行过程: 在计算机上运行汇编语言程序的步骤是: •用编辑程序(任何一种文本编辑程序)建立ASM文件; •用MASM程序把ASM文件转换成OBJ文件; •用LINK程序把OBJ文件转换成EXE文件; •用DOS命令直接键入文件名就可执行该程序; 4.1 汇编程序功能
徽理工大骨计算机科学与技术系歌兆《汇编语言》 汇编程序功能 汇编程序的主要功能 检查源程序,给出出错信息。 产生目标文件(obj)和列表文件(1st) 展开宏指令
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 汇编程序功能 汇编程序的主要功能: • 检查源程序,给出出错信息。 • 产生目标文件(.obj)和列表文件(.lst)。 • 展开宏指令。 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》
徽理工大骨计算机科学与技术系歌兆《汇编语言》 42伪操作(伪指令) 伪操作是汇编程序对源程序进行汇编时处理的 操作,(不像机器指令那样是程序运行期间由计算机来执 行的)完成处理器选择、存储模式定义、数据定义、 存储器分配、指示程序开始结束等功能。 处理器选择伪操作 段定义伪操作 程序开始和结束伪操作 数据定义及存储器分配伪操作 表达式赋值伪操作 地址计数器与对准伪操作 ·基数控制伪操作
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 4.2 伪操作(伪指令) 伪操作是汇编程序对源程序进行汇编时处理的 操作,(不像机器指令那样是程序运行期间由计算机来执 行的)完成处理器选择、存储模式定义、数据定义、 存储器分配、指示程序开始结束等功能。 • 处理器选择伪操作 • 段定义伪操作 • 程序开始和结束伪操作 • 数据定义及存储器分配伪操作 • 表达式赋值伪操作 • 地址计数器与对准伪操作 • 基数控制伪操作 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》
徽理工大骨计算机科学与技术系歌兆《汇编语言》 421处理器选择伪操作 这类伪操作一般放在程序的最前面,如不给出,则汇编程 序默认值为.8086。 8086选择8086指令系统 286选择80286指令系统 286P选择保护模式下的80286指令系统 386选择80386指令系统 386P选择保护模式下的80386指令系统 .486选择80486指令系统 486P选择保护模式下的80486指令系统 586选择 Pentium指令系统 .586P选择保护模式下的 Pentium指令系统
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 .8086 选择 8086 指令系统 .286 选择 80286 指令系统 .286P 选择保护模式下的80286 指令系统 .386 选择 80386 指令系统 .386P 选择保护模式下的 80386 指令系统 .486 选择 80486 指令系统 .486P 选择保护模式下的 80486 指令系统 .586 选择 Pentium 指令系统 .586P 选择保护模式下的 Pentium 指令系统 4.2.1 处理器选择伪操作: 这类伪操作一般放在程序的最前面,如不给出,则汇编程 序默认值为 .8086。 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》
徽理工大骨计算机科学与技术系歌兆《汇编语言》 422段定义伪操作 1.完整的段定义伪指令 段定义伪操作的格式: 段名 SEGMENT[定位类型]组合类型]使用类型]「类别 ;语句序列 段名ENDS 1)段名 段名是为该段起的名字,用来指出汇编程序为 该段分配的存储区起始位置
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 4.2.2 段定义伪操作: 段定义伪操作的格式: 段名 SEGMENT [定位类型] [组合类型] [使用类型] [‘类别 ’] …… …… ; 语句序列 段名 ENDS 1) 段名 段名是为该段起的名字,用来指出汇编程序为 该段分配的存储区起始位置。 1. 完整的段定义伪指令
徽理工大骨计算机科学与技术系歌兆《汇编语言》 2)定位方式 (1)PARA:表示本段必须从能被16整除的地址处开始存 放,即段起始地址最低四位必须是0。 (2)WoRD:表示本段要从一个偶数地址处开始存放,即 段起始地址的最低一位必须是0 (3)BYTE:表示本段起始地址可以从任一地址处开始存放。 (4)PAGE:表示本段要从能被256整除的地址处开始存放 即起始地址的最低八位必须是0。 默认为PARA
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 2) 定位方式 (1)PARA:表示本段必须从能被16整除的地址处开始存 放,即段起始地址最低四位必须是0。 (2)WORD:表示本段要从一个偶数地址处开始存放,即 段起始地址的最低一位必须是0。 (3)BYTE:表示本段起始地址可以从任一地址处开始存放。 (4)PAGE:表示本段要从能被256整除的地址处开始存放, 即起始地址的最低八位必须是0。 默认为 PARA
徽理工大骨计算机科学与技术系歌兆《汇编语言》 3)组合方式 组合方式有六种类型可供选择。 (1) PRIVATE该段为私有段,在连接时将不与其他同名段合并 (2) PUBLIC该段在连接时可以把不同模块的同名段相连接而形 成一个段。每一段从小段的边界开始,所以各段之间有小于16个字 节的间隙。 (3) COMMON该段在连接时可以把不同模块中的同名段重叠 而形成一个段,由于各同名段有相同的起始地址,所以会产生 覆盖。 (4) STACK把不同模块的同名段组合而成一个堆栈段。各段之 间没有间隙。 (5) MEMORY同 PUBLIO (6)AT表达式使段地址是表达式所计算出来的16位值,CS除外
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 3) 组合方式 组合方式有六种类型可供选择。 (1)PRIVATE 该段为私有段,在连接时将不与其他同名段合并 (2)PUBLIC该段在连接时可以把不同模块的同名段相连接而形 成一个段。 每一段从小段的边界开始,所以各段之间有小于16个字 节的间隙。 (3)COMMON 该段在连接时可以把不同模块中的同名段重叠 而形 成一个段,由于各同名段有相同的起始地址,所以会产生 覆盖。 (4)STACK 把不同模块的同名段组合而成一个堆栈段。各段之 间没有间隙。 (5) MEMORY 同PUBLIC (6)AT 表达式 使段地址是表达式所计算出来的16位值,CS除外。 默认为 PRIVATE
徽理工大骨计算机科学与技术系歌兆《汇编语言》 【例】有两个模块,各模块段定义如下 模块2 模块1: DATA1 SEGMENT PARA PUBLIC ' DATAl DATAL SEGMENT PARA PUBLIC DATA1' M2 DB 104H DUP (11H) M1 DB 45H DUP(0) DATAl ENDS DATAl ENDS DATAZ SEGMENT PARA COMMON ' DATA2 DATAZ SEGMENT PARA COMMON ' DATA2 N2 DB 105H DUP (0) N1 DB 102H DUP(O) DATAZ ENDS DATA2 ENDS END DATA3 SEGMENT DB 50 DUP (20H) DATA3 ENDS END
安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》 【例】有两个模块,各模块段定义如下 模块1: ┆ DATA1 SEGMENT PARA PUBLIC ‘DATA1’ M1 DB 45H DUP(0) DATA1 ENDS DATA2 SEGMENT PARA COMMON ‘DATA2’ N1 DB 102H DUP(0) DATA2 ENDS END 模块2: ┆ DATA1 SEGMENT PARA PUBLIC ‘DATA1’ M2 DB 104H DUP(11H) DATA1 ENDS DATA2 SEGMENT PARA COMMON ‘DATA2’ N2 DB 105H DUP(0) DATA2 ENDS DATA3 SEGMENT T1 DB 50 DUP(20H) DATA3 ENDS END