汇编语言与汇编程序.ppt_第1页
汇编语言与汇编程序.ppt_第2页
汇编语言与汇编程序.ppt_第3页
汇编语言与汇编程序.ppt_第4页
汇编语言与汇编程序.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第二章 汇编语言与汇编程序 2 二 汇编语言与汇编程序 2 1符号指令中的表达式 2 2符号指令的寻址方式 2 3常用指令 2 4伪指令 2 5常用系统功能调用与BIOS 3 2 1符号指令中的表达式 1 常量和数值表达式 2 变量和地址表达式 3 标号 4 标量和标号类型的变更 4 1 常量和数值表达式 1 常量 指在汇编时已经有确定数值 程序执行期间不变的量 1 汇编语言使用的常量 2进制 10110110B 8进制 1234Q 10进制 123D 16进制 01A8H ASCII码字符 welcome 1234 2 应用 用于伪指令给变量赋值 或机器指令语句中的操作数 寻址方式中的位移量等 5 3 分类 数值常量 直接以数值出现 如0B7H符号常量 由 括起来的一串字符 最长225个字符 如 12345678 hello 4 符号常量的定义 伪指令EQU或 eg PEQU314 P 3142 数值表达式 是由常量和算术 逻辑 关系等运算符组成的有意义的式子 6 2 变量和地址表达式 变量 存储器中的数据或数据区的符号表示 变量名 是数据的地址或数据区的首地址 地址表达式 由变量 常量 寄存器 SI DI BX BP 的内容和运算符组成的有意义的式子 变量或地址表达式可给出指令中的存储器的地址 由于存储器是分段使用的 因此变量或地址表达式都具有3重属性 段地址 偏移地址和类型 7 变量的段地址 变量所在段的段首地址除以10H之商 当要访问某变量时 其段地址一定要在相应的段寄存器中 变量的偏移地址 变量所在段的段首址到该变量所在存储单元的字节距离 即EA 变量的段地址和偏移地址分别用SEG或OFFSET两个算符来指定 例如 变量W的段地址和偏移地址分别表示为SEGW和OFFSETW 变量的类型 存取某变量的字节数 Byte Word Dword Qword Tbyte 8 变量的定义 变量名 数据定义伪指令表达式 变量名 数据的地址或数据区的首地址数据定义伪指令 DB 定义字节 DW 定义字 DD 定义双字 DQ 定义4字 DT 定义10字节 根据定义的字节数自动给变量分配存储单元 表达式 数值表达式 ASCII码字符串 地址表达式 及nDUP 表达式 9 数值表达式 A1DB 1 3 15 3 ASCII码字符串 B2DB 1234 ABCD DB给每个字节分配一个单元 字符从左至右按地址递增顺序排列 地址表达式 只能用于DW或DD 表达式为一变量或标号 DW定义 取其偏移地址初始化变量 egADWVALUE 取VALUE偏移地址初始化A DD定义 取其段地址和偏移地址初始化变量 egADDVALUE 取VALUE段地址和偏移地址初始化A 髙位字为VALUE段地址 低位字为其偏移地址 变量无确定的值 用于预留若干字节存储单元以存放结果 nDUP DUP为重复字句 n为重复因子 egADB2DUP 0 3DUP 1 01110111 10 例如 在数据段DATAl中定义的变量如下 WlDWB3 B1DB AB W2DW 5 1994H B2DB4DUP DDDEB B3DB2DUP 1 DBlDUP 10 E DB 13 1 3在附加数据段DATA2中定义的变量如下 EBDB8DUP EWDW AB CD 11 3 标号 标号是指令地址的符号表示 也可以是过程名 过程名是过程入口地址的符号表示 即过程的第一条指令的地址 标号的定义方式有两种 1 用 定义 直接写在指令助记符前 如CYCLE MOVAL SI 2 用PROC和ENDP伪指令定义过程 标号代表指令的地址 因而它也有3个属性 段地址 偏移地址和类型 标号的段地址 定义该标号所在段的段地址 标号的偏移地址 标号所在段的段首址到该标号定义指令的字节距离 标号的类型有NEAR和FAR两种 12 4 变量和标号类型的变更 格式 类型PTR地址表达式 PTR算符用来明确指出某个变量 标号或地址表达式的类型属性 或者使它们临时兼有与原定义所不同的类型属性 但仍保持它们原来的段地址和偏移地址属性不变 如 BYTEPTRW1WORDPTRB3BYTEPTR BX 3 13 指令 Instruction 让计算机完成某种操作的命令 指令系统 InstructionSystem 指令的集合 2 2符号指令的寻址方式一 概述 指令 控制计算机完成指定操作的命令机器指令 指令的二进制代码形式 例如 CD21H汇编指令 助记符形式的指令 例如 INT21H指令系统 CPU所有指令及其使用规则的集合 14 8086汇编语言指令的语句格式 标号 指令助记符 操作数 注释 1 标号 指令所在地址的符号 符合以下规则 由字母 a z A Z 数字 0 9 或某些特殊字符 等组成 首字符是字母或某些特殊字符 但 不能单独作标识符 有效长度为1 31个字符 15 2 指令助记符 指出指令的操作类型 3 操作数 参加本指令运算的数据 4 注释 指令功能的说明 16 有效地址EA EffectiveAddress 17 指令包含的信息 1 做什么操作 2 操作数的来源 3 操作结果的存数 4 下一条指令的位置 18 指令的基本构成 操作码 操作数 操作数 说明要执行的是什么操作 操作对象 可以有0个 1个或2个 目的 源 19 指令举例 ADDAX SI 6 MOVAX BX 操作码操作数 INC BX HLT 20 双操作数指令ADDAX BX大多数运算型指令都是双操作数指令 对这种指令 有的机器 大中型 使用 三地址 指令 除给出参加运算的两个操作数外 还要指出运算结果的存放地址 现代微型计算机中多采用二地址指令 两个操作数分别称为 源操作数 和 目的操作数 指令执行后 把运算结果放到目的操作数的地址之中 21 指令系统设计 一个指令系统能够提供哪些寻址方式 能否为编制程序提供方便 这是指令系统设计的关键 需要说明的是 在不同的计算机系统中 寻址方式的名称和分类并不统一 但基本可以归结为以下几种方式或它们的变型或组合 22 二 8088 8086的操作数分为3类 1 立即数 常数 取值范围如下表 立即数只能用作源操作数 如 MOVAX 0FA00H 正确MOV8000H DX 错误 23 2 寄存器操作数 放在8个通用寄存器或4个段寄存器中的操作数 24 只能存放字操作数 段寄存器存放当前操作数的段基地址 不允许将立即数传送到段寄存器 SI DI BP SP CS DS ES SS 25 3 存储器操作数 存储器操作数 字节字双字 124 类型 存储单元个数 一般不允许两个操作数同时为存储器操作数 26 存储单元的物理地址 段基地址 16 偏移地址 若指令中没有指明所涉及的段寄存器 CPU就采用默认的段寄存器来确定操作数所在的段 存储器操作数的偏移地址 也称有效地址 可以通过不同的寻址方式由指令给出 例如 若 BX 2000H SI 0A00H DI 2A00H 则以下指令的结果是一样的 MOVAL 2A00H MOVAL BX 0A00H MOVAL BX SI MOVAL DI 27 一条指令的执行时间 指令的执行时间 取指令取操作数执行指令传送结果 单位用时钟周期数表示 结论 1 尽量使用寄存器作为操作数2 若有可能 用移位代替乘除法3 尽量使用简单的寻址方式 28 寻址方式 寻找操作数的方法寻找操作数的地址在8086指令系统中 说明操作数所在地址的寻址方式可分为8种 立即寻址 寄存器相对寻址 寄存器寻址 基址 变址寻址 直接寻址 相对的基址 变址寻址 间接寻址 隐含寻址 三 8086的寻址方式 29 操作数 为一常数 直接由指令给出 此操作数称为立即数 立即寻址只能用于源操作数 用于寄存器或存储器赋初值 与寄存器或存储器操作数进行算术逻辑运算例 MOVAX 1C8FHMOVAL 8FHADDAX 100H错误例 MOV2A00H AX 1 立即寻址 30 立即数 操作码 低8位 高8位 存储器 MOV操作码 02H 31H AH AL 代码段 代码段 立即寻址指令在存储器中的存放形式 AX 指令操作例 MOVAX 3102H AX3102H执行后 AH 31H AL 02H 31 2 寄存器寻址 操作数放在某个寄存器中源操作数与目的操作数字长要相同寄存器寻址与段地址无关例 MOVAX BXMOV 3F00H AXMOVCL AL错误例 MOVAX BL 字长不同 MOVES AX DX 寄存器与段无关 32 AX SI 2233H 2233H 指令操作例 MOVSI AX SI AX 指令执行前 AX 2233H指令执行后 AX 2233H SI 2233H AX是累加器 结果存放在AX的话 执行时间要短些 通用寄存器是处理器的一部分 采用寄存器寻址方式可以提高效率 33 3 直接寻址 指令中直接给出操作数的16位偏移地址偏移地址也称为有效地址 EA EffectiveAddress 默认的段寄存器为DS 但也可以显式地指定其他段寄存器 称为段超越前缀偏移地址也可用符号地址来表示 如ADDR VAR例 MOVAX 2A00H MOVDX ES 2A00H MOVES 2A00H DXMOVSI TABLE PTR 34 指令操作例 MOVAX 3102H AL 3102H AH 3103H 如果 DS 2000H 23102H CDH 23103H ABH则操作数的物理地址为 20000H 3102H 23102H指令执行后 AX ABCDH MOV操作码 02H 31H AH AL 23102H CDH ABH 存储器 代码段 数据段 35 4 寄存器间接寻址 操作数的偏移地址 有效地址EA 放在寄存器中只有SI DI BX和BP可作间址寄存器例 MOVAX BX MOVCL CS DI 错误例 MOVAX DX MOVCL AX EA BX BP SI DI 36 37 指令操作例 MOVAX SI 若 DS 6000H SI 1200H 61200H 44H 61201H 33H则指令执行后 AX 3344H 38 5 寄存器相对寻址 包括基址寻址和变址寻址 EA 间址寄存器的内容加上一个8或16位的位移量 寄存器相对寻址常用于存取表格或一维数组中的元素 把表格的起始地址作为位移量 元素的下标值放在间址寄存器中 或反之 EA BX BP SI DI 8位16位 位移量 39 1 若EA BX SI DI 8位或16位偏移量 则操作数地址DS EA 2 若EA BP 8位或16位偏移量 则操作数地址 SS EA 40 例 MOVAX BX 8 MOVCX TABLE SI MOVAX BP 默认段寄存器为SS指令操作例 MOVAX DATA BX 若 DS 6000H BX 1000H DATA 2A00H 63A00H 66H 63A01H 55H则物理地址 60000H 1000H 2A00H 63A00H指令执行后 AX 5566H 见下页图示 41 操作码 00偏移量低 2A偏移量高 DS6000 BX1000 DATA2A00 63A00 63A00H AH AL AX 代码段 数据段 66H 55H MOVAX DATA BX 42 6 基址 变址寻址 若操作数的偏移地址 由基址寄存器 BX或BP 给出 基址寻址方式由变址寄存器 SI或DI 给出 变址寻址方式 由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址 称为基址 变址寻址 EA BX BP SI DI 同一组内的寄存器不能同时出现 43 例 MOVAX BX SI MOVAX BX SI MOVAX DS BP DI 错误例 MOVAX BX BP MOVAX DI SI 44 83000 操作码 DS8000 BX2000 SI1000 83000H AH AL AX 代码段 数据段 YY XX 指令操作例 MOVAX BX SI 假定 DS 8000H BX 2000H SI 1000H则物理地址 80000H 2000H 1000H 83000H指令执行后 AL 83000H AH 83001H 45 7 相对的基址 变址寻址 在基址 变址寻址的基础上再加上一个相对位移量注意事项同基址 变址寻址 EA BX BP SI DI 8位16位 位移量 例 MOVAX BASE SI BX MOVAX BX BASE SI MOVAX BX SI BASE MOVAX BX BASE SI MOVAX BX SI BASE 46 指令操作例 MOVAX DATA DI BX 若 DS 8000H BX 2000H DI 1000H DATA 200H则指令执行后 AH 83201H AL 83200H 83200 83200H AH AL AX DATA0200 操作码 代码段 数据段 YY XX DS8000 BX2000 DI1000 47 使用相对的基址 变址寻址方式可以很方便地访问二维数组 基址寄存器 数组首地址 变址寄存器 数组元素行址 位移量 数组元素列址 偏移地址 48 8 隐含寻址 指令操作数是隐含的 在指令中未显式地指明 例 MULBL指令隐含了被乘数AL及乘积AX类似的指令还有 DIV CBW MOVS等 AL BL AX 49 分别指出下列指令中源操作数的寻址方式 1 MOVBX 1000H 2 ADDAX SI 4 3 MOV DI 1000H 4 SUBAX BP DI 5 5 MOVAX BX 50 指出下列指令中源操作数的寻址方式 并计算源操作数的物理地址 设 DS 2000H E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论