清华大学 微机原理03.ppt_第1页
清华大学 微机原理03.ppt_第2页
清华大学 微机原理03.ppt_第3页
清华大学 微机原理03.ppt_第4页
清华大学 微机原理03.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1 第三章寻址方式与指令系统 3 1概述3 2寻址方式3 3数据传送指令3 4算术运算指令3 5逻辑运算指令3 6串操作指令3 7程序控制指令 2 3 1概述 指令是微处理器执行某种操作的命令 微处理器全部指令的集合称为指令系统 指令集 指令有两种书写格式 机器指令和符号指令 机器指令 指令的二进制数描述硬件只能识别机器指令 用机器指令书写的程序可以直接运行符号指令 用规定的助记符和规定的书写格式书写的指令与机器指令一一对应 需要翻译成机器指令才能运行1011000000000001MOVAL 1 1 指令 3 2 程序 程序是为解决某一问题而编写在一起的指令序列机器语言程序 由机器指令书写的程序汇编语言程序 由符号指令书写的程序高级语言程序 由高级语言书写的程序 高级语言的基础是语句 而不是处理器的指令系统 汇编语言程序和高级语言程序必须先翻译成机器语言程序才能执行 这一翻译过程对汇编语言程序叫做汇编 assemble 对高级语言程序叫做编译 compilation 或解释 interpretation 4 符号指令的书写格式为 标号 操作码助记符操作数助记符 注释 标号代表该指令在存储器中的地址 为分支 循环提供转移目标 可选操作码助记符如ADD MOV等 指出指令要实现的功能操作数是指令操作的对象 当一条指令需要一个以上的操作数时 操作数间用逗号分隔 逗号前为目标操作数 逗号后为源操作数 注释可增强可读性 可选 5 3 X86系列微处理器指令系统的发展 基本指令集 8086 8088116条指令 基本指令集 增 强 指 令 集 系 统 控 制 指 令 集 保护模式 实模式 Pentium306条指令 6 3 2寻址方式 寻址方式 寻找指令中操作数地址的方式 操作数有三种可能的存放方式 直接包含在指令中立即数立即寻址包含在某个寄存器中寄存器操作数寄存器寻址在内存中存储器操作数 内存操作数 存储器寻址 7 1 立即寻址操作数作为立即数直接存在指令中 可为字节 字 双字MOVEAX 12345678H 低地址 高地址 CS段 操作码 78H 56H 34H 12H 78H 56H 34H 12H EAX 8 2 寄存器寻址操作数包含在指令规定的8位 16位 32位寄存器中MOVECX EDX 78H 56H 34H 12H ECX 78H 56H 34H 12H EDX 寄存器寻址由于无需从存储器中取操作数 故执行速度快 9 实模式下 X86系列处理器对内存采用分段式管理 程序员在指令中使用的是逻辑地址 逻辑地址由两部分组成 存储单元所在段的基地址 段内偏移地址 偏移量 段的基地址一般由操作系统将程序装入内存时设置 程序员在编程时主要使用段内偏移地址 段内偏移地址也称为有效地址 EA MOVES 3000H ALES 称为段超越前缀 可选 指示处理器访问哪个逻辑段3000H为段内偏移地址 有效地址 3 存储器寻址 内存寻址 10 段内偏移地址 有效地址 可以由如下四个部分组成 称为偏移地址四元素 基址寄存器内容变址寄存器内容比例因子位移量EA 基址寄存器 变址寄存器 比例因子 位移量16位寻址 基址寄存器 BX BP变址寄存器 SI DI比例因子 0 1位移量 0 8 16位 32位寻址 基址寄存器 任何32位通用寄存器变址寄存器 除ESP外的任何32位通用寄存器比例因子 1 2 4 8位移量 0 8 16 32位 11 直接寻址指令中的操作数部分直接给出操作数的有效地址EA 操作数可以是16位或32位整数 操作数默认在DS段中MOVAX 3000H 低地址 高地址 CS段 操作码 00H 30H 34H 12H 34H 12H AX DS段 50000 53000 DS 5000 0 3000 53000 由偏移地址四元素可组合出5种存储器寻址方式 12 如果操作数在DS以外的其他段 CS SS ES FS GS 中 指令中必须包含段超越前缀MOVAX FS 3000H 低地址 高地址 CS段 操作码 00H 30H 34H 12H 34H 12H AX FS段 20000 23000 FS 2000 0 3000 23000 13 寄存器间接寻址操作数地址的偏移量 有效地址EA 存放在寄存器中16位寻址 偏移地址放在SI DI BP BX中以SI DI BX间接寻址 默认操作数在DS段中MOVAX SI 访问数据段以BP间接寻址 默认操作数在SS段中MOVAX BP 访问堆栈段32位寻址 偏移地址放在8个32位通用寄存器中除ESP EBP默认段寄存器为SS外 其余均默认段寄存器为DSMOVEAX ESP 访问堆栈段 14 低地址 高地址 CS段 操作码 34H 12H 34H 12H AX SS段 70000 73000 SS 7000 0 3000 73000 MOVAX BP BP 15 基址寻址EA 基址寄存器 位移量16位寻址 BP BX为基址寄存器BX DS为默认段寄存器BP SS为默认段寄存器32位寻址 8个32位通用寄存器均可作为基址寄存器 除ESP EBP默认段寄存器为SS外 其余均默认段寄存器为DS MOVAX BX 24 MOVDX BP 1500 16 低地址 高地址 CS段 操作码 00H 15H 34H 12H 34H 12H DX DS段 70000 73500 BX 1500 73500 MOVDX BX 1500 DS 7000 0 2000 17 数据结构的基址寻址方式 字段0 字段n 1 字段2 字段1 基址寄存器 位移量 MOVAX BX 100H 字段k 18 变址寻址变址寻址适用于对一维数组的元素进行操作 无比例因子EA 变址寄存器 位移量16位寻址 SI DI为变址寄存器 DS为默认段寄存器32位寻址 除ESP外其余7个32位通用寄存器均可作为变址寄存器 EBP默认SS为段寄存器 其余均默认段寄存器为DS MOVAH SI 5 MOVAH 5 SI 19 位移量表示数组起始地址 不变 变址寄存器为数组下标 可变 位移量 数组的变址寻址方式 单元0 单元n 1 单元2 单元1 变址寄存器 MOVAX SI 100H 20 EA 变址寄存器 比例因子 位移量只适用于32位寻址MOVEAX ESI 4 50 比例变址寻址适用于一维数组操作 当数组元素大小为2 4 8字节时 它更方便 有效 变址寻址 有无比例因子 21 基址加变址寻址基址加变址寻址主要用于二维数组操作和二重循环 无比例因子EA 基址寄存器 变址寄存器 位移量适用于16位和32位寻址MOVAX BX SI 1000 MOVEAX EDX EBP 200 22 单元 0 0 单元 0 1 单元 0 n 位移量 二维数组的基址加变址寻址方式 基址寄存器 MOVAX BX SI 100H 单元 m n 变址寄存器 23 有比例因子EA 基址寄存器 变址寄存器 比例因子 位移量只适用于32位寻址MOVEAX EDX 8 EAX 适用于数组元素大小为2 4 8字节时二维数组操作 24 总结 寻址方式既针对源操作数 也针对目标操作数实模式下段的最大长度为64KB 因此必须保证有效地址不超过FFFFH 25 调试程序DEBUG 装入DEBUG在命令提示符下键入DEBUG 调试一个可执行程序在命令提示符下键入DEBUGFoo exe 退出DEBUG在DEBUG的命令提示符下执行Q命令 26 调试程序DEBUG R 寄存器命令 功能 检查或修改寄存器的值R 寄存器名 27 调试程序DEBUG D 转储命令 功能 检查存储器的内容D 内存地址 28 调试程序DEBUG E 输入命令 功能 检查或修改存储器的内容E 内存地址 回车 结束输入命令空格 不修改存储器内容 显示下一个存储单元的内容输入新值 后回车或空格 29 调试程序DEBUG A 汇编命令 功能 汇编程序指令A 起始地址 U 反汇编命令 功能 反汇编程序指令U 起始地址 30 调试程序DEBUG T 跟踪命令 功能 跟踪程序执行T 起始地址 指令条数 P 跟踪命令 功能 跟踪程序执行P 起始地址 指令条数 Stepin Stepover 31 调试程序DEBUG G 运行命令 功能 运行程序G 起始地址 断点地址列表 32 3 3数据传送指令 执行后不影响标志位 源操作数不变1 通用数据传送指令MOV目标操作数 源操作数1 源操作数可以是8 16 32位的立即数 寄存器操作数 内存操作数 目标操作数不允许为立即数 其余同源操作数 源 目不能同时为内存操作数 2 源 目操作数类型必须匹配MOVBYTEPTR BX 12H3 不能向段寄存器写立即数MOVAX 2000MOVDS AX4 以CS为目标的一切传送指令都是非法的 33 XCHG目标操作数 源操作数交换指令 源 目不能同为内存操作数XCHGAX SI 0400H 34 XLAT表头变量名查表指令 用来取表中某指定数的值TABLEDB30H 31H 32H 33H 34H 35H 36H 37H 38H 39HMOVBX OFFSETTABLEMOVAL 5XLATTABLE 执行后AL 35H 什么功能 35 2 堆栈操作指令PUSH源操作数进栈指令 先调整堆栈指针 再把源操作数压栈PUSHAXPUSHDWORDPTR SI 5 POP目标操作数出栈指令 先将栈顶2 4字节送目标操作数 再调整堆栈指针POPAXPOPDWORDPTR SI 5 36 PUSHFPOPF16位标志寄存器进栈 出栈指令PUSHFDPOPFD32位标志寄存器进栈 出栈指令PUSHAPOPA16位通用寄存器进栈 出栈指令PUSHADPOPAD32位通用寄存器进栈 出栈指令 37 3 目标地址传送指令LEA目标寄存器 源操作数有效地址传送指令 源操作数为内存操作数 将内存单元的有效地址 而不是内容 传送到目标寄存器LEAAX SI 5 LDS LES LFS LGS LSS目标寄存器 源操作数指针传送指令源操作数为32位内存操作数 其高16位 段寄存器 低16位 目标寄存器ADDRDD1A2B3C4DHLDSSI ADDR 38 4 I O数据传送指令完成累加器和I O端口之间的数据传送IN累加器 端口号端口号为8位时 直接寻址 最多可访问256个端口INAX 92H端口地址为16位时 间接寻址 端口地址必须放在DX寄存器中 最多可访问65536个端口INAL DXOUT端口号 累加器 39 3 4算术运算指令 加 减 乘 除 运算对象8 16 32位有符号 无符号整数 以及BCD码影响标志位1 加法指令ADD目标操作数 源操作数源操作数 目标操作数 目标操作数ADC目标操作数 源操作数源操作数 目标操作数 CF 目标操作数影响A C O P S Z6个标志位INC目标操作数目标操作数 1 目标操作数影响A O P S Z5个标志位 40 2 减法指令 SUB目标操作数 源操作数目标操作数 源操作数 目标操作数SBB目标操作数 源操作数目标操作数 源操作数 CF 目标操作数DEC目标操作数目标操作数 1 目标操作数NEG目标操作数0 目标操作数 目标操作数影响A C O P S Z6个标志位 41 CMP目标操作数 源操作数比较指令 只影响标志位 不改变目标操作数 42 3 乘法指令 MUL乘数 无符号乘法字节相乘 被乘数默认在AL中 乘积存入AX字相乘 被乘数默认在AX中 乘积存入DX AX双字相乘 被乘数默认在EAX中 乘积存入EDX EAXIMUL乘数 有符号乘法 43 4 除法指令 DIV除数 无符号除法字节除法 被除数默认在AX中 商存入AL 余数存入AH字除法 被除数默认在DX AX中 商存入AX 余数存入DX双字除法 被除数默认在EDX EAX中 商存入EAX 余数存入EDX计算1024 64 16 400H 40H 10H MOVAX 400HMOVBX 40HDIVBX有无问题隐患 IDIV除数有符号除法 当商超出范围时 即除法溢出 将自动产生0型中断 44 5 十进制调整指令十进制运算方法 先进行二进制运算 再进行十进制调整DAA加法的压缩BDC码调整指令AAA加法的非压缩BDC码调整指令DAS减法的压缩BDC码调整指令AAS减法的非压缩BDC码调整指令 45 十进制算术运算的例子1 设两个十进制数1234和5678分别存放在数据段中从1000H和2000H开始的单元中 计算这两个数的和 结果存放在3000H开始的单元中 MOVAL 1000 ADDAL 2000 低字节相加DAA 十进制调整MOV 3000 AL 存低字节和MOVAL 1001 ADCAL 2001 高字节带进位相加DAA 十进制调整MOV 3001 AL 存高字节和 46 AAM乘法的非压缩BDC码调整指令AAD除法的非压缩BDC码调整指令 47 实现十进制数乘法6 8 48的程序 MOVAL 06MOVBL 08MULBL AAM AX AL BL 十进制调整 使 AX 0408 十进制算术运算的例子2 48 实现十进制数除法48 2 24的程序 MOVAX 0408HMOVBL 02HAAD DIVBL AAM 将商转换成非压缩BCD码 十进制调整 使AX转换成等值的二进制数 进行二进制除法 十进制算术运算的例子3 49 3 5逻辑运算指令 位操作 AND目标操作数 源操作数OR目标操作数 源操作数XOR目标操作数 源操作数NOT目标操作数 50 位操作 AND主要用于将二进制数的某些位清0 ANDBL 0FH xxxxxxxx BL 000011110F0000 xxxx结果 AND 51 位操作 OR主要用于将二进制数的某些位置1 ORBL 0FH xxxxxxxx BL 000011110Fxxxx1111结果 OR 52 位操作 XOR主要用于将二进制数的某些位求反 XORBL 0FH xxxxxxxx BL 000011110Fxxxxxxxx结果 XOR 53 移位操作 指令格式 SHL目标操作数 计数 移1位时 计数值可以为立即数1移多位时 计数值必须先存入CL寄存器 MOVCL 3SHLAX CL Pentium处理器增强指令集支持移位计数值为立

温馨提示

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

最新文档

评论

0/150

提交评论