




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8086汇编指令8086/8088 寄存器组一、通用寄存器二、段寄存器三、指令指针四、标志寄存器8086/8088 寻址方式0.固定寻址一、立即数寻址1.立即寻址二、寄存器操作数寻址2.寄存器寻址三、存储器操作数寻址3.直接寻址4.寄存器间接寻址5.寄存器相对寻址6.基址变址寻址7.相对基址变址寻址四、I/O端口寻址8086/8088 指令系统一、数据传送二、算术运算三、逻辑运算四、串操作五、控制传送六、处理器控制符号说明含义符号备注操作数OPRD 包括存储器、寄存器、立即数,可接8,16,32指明位数存储器Mem 可接8,16,32表明操作数位数,如Mem32表示字操作数累加器AReg可接8, 16表明累加器的位数,AReg8即AL、AReg16即AX寄存器Reg 可接8,16,32表明寄存器位数,如Reg16表示16位寄存器段寄存器Seg 代码段CS,数据段DS,堆栈段SS,附加段ES标志位Flags O D I TS Z A P C立即数Im有效地址EAEffective Address,即偏移量,其值不超过FFFFH物理地址PAPhysical Address传送至交换 可选 取内容( ) (Reg)表示寄存器Reg的内容取地址 Mem表示存储单元Mem的有效地址8086/8088 寄存器组 8086/8088包括四个16位数据寄存器,两个16位指针寄存器,两个16位变址寄存器,一个16位指令指针,四个16位段寄存器,一个16位标志寄存器。 这14个16位寄存器分成四组,它们的名称和分组情况如下:AHALAX BHBLBX 数据 CHCLCX 寄存器 DHDLDX 通用寄存器 BP 基址指针 指针 SP 堆栈指针 寄存器 SI 源地址 变址 DI 目的地址 寄存器 IP 指令指针 控制 FLAG 标志寄存器 寄存器 CS 代码段 DS 数据段 段 SS 堆栈段 寄存器 ES 附加段一、通用寄存器(General Register)通用寄存器的专门用途寄存器用途AX字乘法,字除法,字I/OAH字节乘法,字节除法AL字节乘法,字节除法,字节I/O,十进制算术运算BX存储器指针CX串操作或循环控制中的计数器CL移位计数器DX字乘法,字除法,间接I/OBP存储器指针(存取堆栈的指针)SP堆栈指针SI存储器指针(串操作中的源指针)DI存储器指针(串操作中的目的指针)1.数据寄存器 数据寄存器主要用于保存操作数或运算结果等信息,它们的存在节省了为存取操作数所需占用总线和访问存储器的时间。 四个16位的数据寄存器可分解成八个独立的8位寄存器,这八个8位的寄存器有各自的名称,均可独立存取。AX, AL累加器(Accumulator) 通过它进行操作所花时间可能最少BX 基(Base)地址寄存器 唯一可作为存储器指针的数据寄存器CX 计数(Count)寄存器 用来控重复制循环次数或移位位数DX 数据(Data)寄存器 存放被除数高16位或余数,还有I/O地址2.指针和变址寄存器 指针和变址寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器(短)指针使用。作为通用寄存器,它们也可以保存16位算术逻辑运算中的操作数和运算结果,有时运算结果就是所需要的存储单元地址的偏移。 利用指针和变址寄存器不仅能够有效地缩短机器指令的长度,而且能够实现多种存储器操作数的寻址,从而方便地实现对多种类型数据的操作。BP和SPBP基指针(Base Pointer),SP堆栈指针(Stack Pointer) BP主要用于给出堆栈中数据区基址的偏移,便于直接存取堆栈数据 SP只保存堆栈栈顶地址的偏移SI和DISI源变址(Source Index),DI目的变址(Destination Index) 在字符串操作中,规定由SI给出源指针,DI给出目的指针二、段寄存器(Segment Register) 8086/8088 CPU 依赖其内部的四个段寄存器实现寻址1M字节物理地址空间。8086/8088把1M字节地址空间分成若干逻辑段,当前使用段的段值存放在段寄存器中,由段值和段内偏移形成20位地址:物理地址段值16偏移。 8086/8088 CPU 的四个段寄存器均是16位的,分别称为: 代码段(Code Segment) 寄存器CS 数据段(Data Segment) 寄存器DS 堆栈段(Stack Segment)寄存器SS 附加段(Extra Segment)寄存器ES三、指令指针(Instruction Pointer) 8086/8088 CPU 中的指令指针IP(Instruction Pointer)也是16位的,它类似于8080/8085中的程序计数器PC(Program Counter)。指令指针IP给出接着要执行指针在代码段中的偏移。四、标志寄存器(Flag Register) 8086/8088 CPU 中有一个16位的标志寄存器,包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征。各标志在标志寄存器中的位置如下: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OFDFIFTFSFZF AF PF CF进位标志 奇偶标志 辅助进位标志 零标志 符号标志 追踪标志 中断标志 方向标志 溢出标志 有些指令的执行会影响部分标志,而有些指令的执行不会影响标志;反之,有些指令的执行受某些标志的影响,而有些指令的执行不受标志的影响。1.运算结果标志(1) 进位标志CF(Carry Flag) 主要用于反映运算是否产生进位或借位。如果运算结果的最高位产生一个进位或借位,则CF=1,否则CF=0。 移位指令也把操作数的最高位或最低位移入CF。(2) 零标志ZF(Zero Flag) 用于反映运算结果是否为0。如果运算结果为0,则ZF=1,否则ZF=0。(3) 符号标志SF(Sign Flag) 用于反映运算结果的符号位。SF与运算结果的最高位相同。(4) 溢出标志OF(Overflow Flag) 用于反映有符号数加减运算是否引起溢出。如果运算结果超出了8位或16位有符号数的表示范围(字节运算时大于127或小于-128,字运算时大于32767或小于-32768),则OF=1,否则OF=0。(5) 奇偶标志PF(Parity Flag) 用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则PF=1,否则PF=0。(6) 辅助进位标志AF(Auxiliary Carry Flag) 在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字节进位或借位,则AF=1,否则AF=0。2.状态控制标志(1) 方向标志DF(Direction Flag) 决定串操作指令执行时有关指针寄存器调整方向。 当DF=1时,串操作指令按减方式改变有关存储器指针值; 当DF=0时,串操作指针按加方式改变有关存储器指针值。(2) 中断允许标志IF(Interrupt-enable Flag) 决定CPU是否响应外部可屏蔽中断请求。 当IF=1时,CPU能够响应外部的可屏蔽中断请求; 当IF=0时,CPU则不响应外部的可屏蔽中断请求。(3) 追踪标志TF(Trap Flag) 当追踪标志TF被置1后,CPU进入单步方式,即在一条指令执行后,产生一个单步中断。这主要用于程序的调试。8086/8088 的寻址方式“高高低低”原则、逻辑地址的表示“段值:偏移”、物理地址段值16偏移段寄存器的引用规定访问存储器涉及的方式 约定段寄存器 可选段寄存器 偏移取指令CS无 IP堆栈操作SS无 SP一般数据存取DSCS, ES, SS有效地址源数据串DSCS, ES, SS SI目的数据串ES无 DIBP作为指针寄存器SSCS, DS, ES有效地址注:可选段寄存器指可作为段超越前缀改变的段寄存器,有效地址指段内偏移 8086/8088 接受三种类型的操作数:一、立即操作数: 数据作为指令的一部分,紧跟在操作码的后面二、寄存器操作数:数据存在CPU的某个寄存器中三、存储器操作数:数据存在存储器中,操作数用来指出数据在存储器中的位置 针对前两种操作数的寻址方式是立即寻址和寄存器寻址,其余5种方式都是指针存储器操作数的。0.固定寻址 固定寻址又称为隐含寻址,即指令中不指明操作数,但隐含在操作码中。如字扩展指令CBW,仅有操作码,无操作数,但指令扩展AL中字节的符号,把它送至AH中,这里的操作数AL是隐含在操作码中的。又如乘法指令MUL,是单操作数指令形式(MUL OPRD),只指示了一个操作数OPRD,另一操作数未指明,也是隐含的,为AL或AX,同样乘积的存放地址也是隐含的,为AX或DX,AX。【特点】不需要计算有效地址,执行速度快,多为单字节指令一、立即数寻址1.立即寻址:操作数直接包含在指令中,紧跟在操作码之后存放在代码段,执行时直接从指令队列中取出,不必执行总线周期访问存储器,操作数称为立即数【特点】执行速度快,只能用于源操作数,主要用来对寄存器赋值例MOV AX, 1234H 这条指令的机器码为:B8 34 12,占3字节,含义是将立即数1234H送到寄存器AX中,存放按“高高低低”原则,即高位字节存入高地址,低位字节存入低地址。示意图如下: AHAL B8 34 12 二、寄存器操作数寻址2.寄存器寻址:操作数包含在CPU内部的寄存器中,指令中直接给出该寄存器名 对于16位操作数,寄存器可以是:AX,BX,CX,DX,BP,SP,SI,DI等 对于 8位操作数,寄存器可以是:AH,AL,BH,BL,CH,CL,DH,DL等【特点】指令编码短,无需从存储器取数,执行速度快例INC CX ; 目的操作数为寄存器寻址MOV SI, AX ; 源操作数和目的操作数均是寄存器器寻址MOV AL, 5AH ; 源操作数为立即寻址,目的操作为寄存器寻址 8086/8088规定,除串操作指令外,在一条指令中只能有一个操作数为存储器操作数,或为源操作数,或为目的操作数三、存储器操作数寻址3.直接寻址:操作数在存储器中的16位有效地址由指令中直接给出 如果指令中没有用段超越前缀指明操作数在哪个段,则默认在数据段。例MOV AX, 1234H 这条指令的机器码为:A1 34 12,占3字节,含义是将DS段中偏移地址为1234H的字单元中的内容送到AX中。【注意】(1)在直接寻址中,若指令中有效地址是一个16位数, 为不与立即寻址相混淆,应用方括号括起来,如上例; 若有效地址是一个符号地址,如MOV AX, DATA,则不用加方括号。(2)若操作数不在数据段,则可用段超越前缀在有效地址前指明,如: MOV ES:2500H, BL 该指令表示目的操作数不在数据段,而在附加段,PA=(ES*16)+2500H4.寄存器间接寻址:操作数的有效地址在BX、BP、SI、DI这4个寄存器之一中 不使用段超载前缀时:(1)当指定BX、SI或DI为间址寄存器,则操作数在数据段中,DS的内容为段基址 (BX)EA = (SI) PA = (DS16)+EA (DI)(2)当指定BP为间址寄存器,则操作数在堆栈段中,SS寄存器中的内容为段基址EA = (BP) PA = (SS16)+EA例MOV AX, DI ;源操作数为寄存器间接寻址,引用的段寄存器是DSMOV BP, CX ;目的操作数为寄存器间接寻址,引用的段寄存器是SSMOV DL, CS:BX ;源操作数为寄存器间接寻址,引用的段寄存器指定为CS【特点】可以用于表格处理,处理完表中的一项后,只要修改指针寄存器的内容就可方便地处理表中的另一项5.寄存器相对寻址:操作的有效地址是一个基址寄存器或变址寄存器的内容加上指令中给定的8位/16位的位移量 (BX) (BP) 8位EA = + 位移量 (SI) 16位 (DI) 寄存器相对寻址和寄存器间接寻址很相似,只是多了一个位移量。例MOV AL, 53HBX ;或写成 MOV AL, BX+53H设 (DS)=3000H, (BX)=8000H, (38053H)=7FH,则源操作数的PA为:PA = (3000H)*16 + 8000H + 53H = 38053H指令执行后,将存储器38053H单元的内容7FH送入AL。【特点】可以用于表格处理,表格的首地址可设置为指令中的位移量,利用修改基址或变址寄存器的内容来存取表格中的项值6.基址变址寻址:操作数有效地址是一个基址寄存器和一个变址寄存器内容之和 (BX) (SI)EA = + (BP) (DI)例MOV AX, BXDI ;或写成 MOV AX, BX+DI设 (DS)=2000H, (BX)=0256H, (DI)=6694H, (268EAH)=68H, (268EBH)=01H,则EA = 0256H + 6694H = 68EAHPA = (DS)*16 + EA = 2000H*16 + 68EAH = 268EAH指令执行后,把268EAH和268EBH两相邻单元的内容送到AX中,(AH)=01H,(AL)=68H【特点】适用于数组或表格处理,用基址寄存器存放数组首地址,用变址寄存器来定位数组中的各元素,或反之,由于两个寄存器都可改变,所以操作更灵活7.相对基址变址寻址:操作数有效地址是一个基址寄存器和一个变址寄存器内容再加上一个8位/16位的位移量之和 (BX) (SI) 8位EA = + + 位移量 (BP) (DI) 16位例以下三条指令等价,源操作数为相对基址变址寻址,引用的段寄存器是DSMOV AX, MASKBXSIMOV AX, MASKBX+SIMOV AX, MASK+BX+SI四、I/O端口寻址 在以Intel的80x86家族处理器为CPU的系统中,I/O端口地址和存储单元的地址是各自独立的,分占两个不同的地址空间。8086/8088提供的I/O端口地址空间达64K,因而可接64K个8位端口。I/O地址空间也可以定义16位和32位的端口。 I/O端口可以用立即操作数或DX寄存器寻址:直接端口寻址端口地址为8位立即数,值范围0255间接端口寻址端口地址为DX寄存器内容,值范围065535例IN AL, 7 ;源操作数为直接端口寻址IN AX, DX ;源操作数为间接端口寻址OUT 40H, AX ;目的操作数为直接端口寻址OUT DX, AL ;目的操作数为间接端口寻址8086/8088 指令系统 8086/8088 的指令系统可分为如下六个功能组:一、数据传送(Data Transfer)二、算术运算(Arithmetic)三、逻辑运算(Logic)四、串操作 (String Manipulation)五、控制传送(Control Transfer)六、处理器控制(Processor Control)【规则】(1)只有通用传送指令中的MOV, PUSH, POP是允许以段寄存器为操作数的指令(2)源和目的不能同时是段寄存器(3)代码段寄存器CS不能作为目的,指令指针IP既不能作为源,也不能作为目的(4)立即数永远不能作为目的操作数(5)源操作数和目的操作类型要一致,即同时为字节或字,但LDS, LES例外(6)除了串操作指令外,源操作数和目的操作数不能同时是存储器操作数一、数据传送指令(Data Transfer)1.通用传送(General Purpose Transfer)MOV OPRD1, OPRD2 数值传送,OPRD1 - OPRD2,操作数可为段寄存器PUSH OPRD16 进栈指令,把16位数据压入堆栈顶,OPRD16可为段寄存器POP OPRD16 出栈指令,从堆栈顶弹出16位数据,OPRD16不可为CSXCHG OPRD1, OPRD2 交换指令,把一个字节或一个字的源与目的操作互换2.累加器专用传送(Accumulator Special Purpose Transfer)IN AReg, OPRD 输入指令,累加器 - 输入端口,OPRD为0255或DXOUT OPRD, AReg 输出指令,输出端口 - 累加器,OPRD为0255或DXXLAT SRC_TABLE 查表转换,表的基地址在寄存器BX,以AL为表的下标, 在表SRC_TABLE中查找相应数据,并把结果存放到AL中3.地址目的传送(Address Object Transfer)LEA Reg16, Mem 传送有效地址指令,Reg16 DS,Mem32偏移部分-Reg16LES Reg16, Mem32 传送32位地址指针到附加段寄存器ES和通用寄存器Reg16 Mem32段值部分-ES,Mem32偏移部分-Reg164.标志寄存器传送(Flag Register Transfer)LAHF 把标志寄存器低8位(包括SZAPC标志)传送到寄存器AH的 指定位(7,6,4,2,0),其他位(5,3,1)的内容无定义SAHF 把寄存器AH指定位(7,6,4,2,0)传送至标志寄存器低8位 的标志位SZAPC,但不影响高8位的ODIT标志PUSHF 把标志寄存器的内容压入堆栈顶POPF 把堆栈顶的一个字传送到标志寄存器二、算术运算指令(Arithmetic)1.加法(Addition)ADD OPRD1, OPRD2 普通加法,OPRD1 - OPRD1 + OPRD2ADC OPRD1, OPRD2 带进位加,OPRD1 - OPRD1 + OPRD2 + CFAAA 对AL中的由两个未组合BCD码相加后的结果进行校正DAA 对AL中的由两个组合BCD码相加后的结果进行校正INC OPRD 加1指令,OPRD - OPRD + 12.减法(Subtraction)SUB OPRD1, OPRD2 普通减法,OPRD1 - OPRD1 - OPRD2SBB OPRD1, OPRD2 带借位减,OPRD1 - OPRD1 - OPRD2 - CFAAS 对AL中的由两个未组合BCD码相减后的结果进行校正DAS 对AL中的由两个组合BCD码相减后的结果进行校正DES OPRD 减1指令,OPRD - OPRD - 1NEG OPRD 取补指令,OPRD - 0 - OPRDCMP OPRD1, OPRD2 比较指令,完成OPRD1 - OPRD2,结果反映在标志位上, 但并不送回OPRD13.乘法(Multiplication)MUL OPRD 无符号数乘法,字节操作 AX - AL * OPRD8 或 字操作 DX,AX - AX * OPRD16IMUL OPRD 有符号数乘法,字操作 AX - AL * OPRD8 或 字操作 DX,AX AL,余-AH 或 字操作 DX,AX/OPRD16 商-AX,余-DXIDIV OPRD 有符号数除法,字节操作 AX/OPRD8 商-AL,余-AH 或 字操作 DX,AX/OPRD16 商-AX,余-DXAAD 对AX中的两位未组合BCD码在两数相除以前进行校正5.符号扩展(Sign Extension)CBW 字节转换为字,把AL中字节的符号扩展到AHCWD 字转换为双字,把AX中节的符号扩展到DX三、逻辑运算指令(Logic)1.逻辑运算(Logic)NOT OPRD 非操作,把操作数OPRD取反,然后送回OPRDAND OPRD1, OPRD2 与操作, OPRD1 - OPRD1 OPRD2 (按位进行)OR OPRD1, OPRD2 或操作, OPRD1 - OPRD1 OPRD2 (按位进行)XOR OPRD1, OPRD2 异或操作,OPRD1 CF、右补0SHR 逻辑右移,右移、最低位-CF、左补0SAL 算术左移,左移、最高位-CF、右补0SAR 算术右移,右移、最低位-CF、符号位不变、左补符号指令图示: CF MSB 操作数 LSB 0SHL, SAL CF MSB 操作数 LSB 0 SHR CF MSB 操作数 LSB SAR3.循环(Rotation)ROL 循环左移,左移、高位-低位ROR 循环右移,右移、低位-高位RCL 带进位循环左移,左移、高位-CF-低位RCR 带进位循环右移,右移、低位-CF-高位指令图示: CF MSB 操作数 LSB ROL CF MSB 操作数 LSB ROR CF MSB 操作数 LSB RCL CF MSB 操作数 LSB RCR四、串操作指令(String Manipulation)MOVS 字符串传送,DI 高于转移 无符号数JAE / JNB CF = 0 = 高于等于转移 JB / JNAE CF = 1 低于转移 JBE / JNA CF + ZF = 1 大于转移 有符号数JGE / JNL SFOF = 0 = 大于等于转移 JL /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年核燃料元件及组件合作协议书
- 2025年月桂醇聚醚磷酸钾合作协议书
- 线上线下智慧购物商城合作框架协议
- 供应链金融服务协议及相关风险控制条款说明
- 员工薪资及奖金详细收入证明(6篇)
- 保险服务协议书
- 行政管理本科试题及答案指南
- 个人电脑硬件维修维护服务协议
- 餐厅卫生与服务协议书
- 社区农村环境综合治理合同书
- 企业区块链技术及反洗钱合规策略分析
- 井下电钳工题库(含答案)
- 2025年随州国有资本投资运营集团有限公司招聘笔试参考题库附带答案详解
- 吉林伟良矿业有限公司吉林省和龙市和安河金矿矿山地质环境保护与土地复垦方案
- 低血糖休克护理
- 湖北省武汉市2025届高中毕业生四月调研考试语文试卷及答案(武汉四调)
- 2022水利工程建设项目档案管理规程
- 白内障患者的护理查房
- 辅导员考试的重点知识与试题
- 润滑油委托加工合同
- 杭州市萧山区招录高学历事业人员笔试真题2024
评论
0/150
提交评论