




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章指令系统 2.1寻址方式2.1.1指令格式及操作数类型1指令格式 一般汇编指令格式如下: 指令助记符 操作数1 ,操作数2;注释2操作数类型 8086/8088系统中的操作数可以分为:(1)立即数操作数(2)寄存器操作数(3)存储器操作数,2.1.28086/8088的寻址方式1立即寻址 当需要的操作数为常数时,操作数可以在指令中直接给出,这种寻址方式称为立即寻址方式。2寄存器寻址 当指令所需要的操作数在寄存器中时,在指令中指出需访问的寄存器名字即可,这种寻址方式称为寄存器寻址。其寻址方式如图2-1所示。3直接寻址 在这种寻址方式中,操作数在内存单元中,并且在指令中直接给出这一单元的逻辑地址。例:MOVAX,DS:100H设DS2000H,寻址过程如图2-2所示。,图2-1 寄存器寻址,5变址寻址 变址寻址基本上同寄存器间接寻址,只是逻辑地址中偏移量的给出方式不同:,且在指令中按如下方式给出这一单元的逻辑地址:,图2-2 直接寻址,4寄存器间接寻址,在这种寻址方式中,操作数在内存单元中,并,段基址:段基址的给出同直接寻址。偏称量:以寄存器SI、DI、BP、BX之一的内容作为偏称量。,偏移量表达式由寄存器BX、BP、SI、DI之一和一常数共同构成。以这二者之和作为被寻址内存单元的偏移量。6基址加变址寻址,基址加变址寻址中,操作数在内存中,且按以下方式给出其逻辑地址:,段基址:同直接寻址。偏移量:由一个常数 “BX、BP之一的内容”“SI、DI之一的,内容”三者之和作为偏移量。,例:MOVAL,ES:10HBXSI设ES3000H,BX1000H,SI200H,寻址过程如图2-3所示。,图2-3 基址加变址寻址,2.28086/8088指令系统2.2.1数据传送指令1通用数据传送指令MOV 格式:MOVOPD,OPS 功能:OPD是目的操作数,OPS是源操作数,该指令的功能是 将源操作数送至目的操作数中,即OPSOPD。 允许的操作数组合:OPS可为:立即数、通用寄存器、存储器、段寄存器。 OPD可为:通用寄存器、存储器、段寄存器 OPS和OPD可以有9种组合,如图2-4所示:,(1)通用寄存器到通用寄存器 如:MOVAX,BX ;(2)立即数到通用寄存器 如:MOVAX,03H;(3)立即数到存储单元 如:MOVBYTE PTR 2000H,12H(4)存储单元到通用寄存器 如:MOVAX,2000H ;(5)通用寄存器到存储单元 如:MOV 2000H,AX ; 图2-4 MOV指令传送示意图(6)通用寄存器到除CS外的段寄存器 如:MOVDS,AX ;。(7)段寄存器到通用寄存器 如:MOVAX,DS ;,(8)存储器到除CS外的段寄存器 如:MOVES,2000H;(9)段寄存器到存储器 如:MOV2000H,DS;2堆栈及堆栈操作指令(1)堆栈的概念 堆栈是内存的一个逻辑段,当这个段被指定为堆栈后,可用堆栈操作指令对它进行特殊规则的访问,这个规则就是: 不论入栈还是出栈,都只能从栈顶处进行,堆栈内数据遵循先进后出,后进先出的原则。(2)堆栈的设置 8086/8088中专门有2个寄存器用于堆栈操作:堆栈段寄存器SS和堆栈指针寄存器SP。,SS用来存放堆栈段的段基址,SP用于指示堆栈的顶部单元的段内偏移量,开始时堆栈内没有数据,栈顶就是栈底,故开始时要将栈底单元的偏移量赋给它,以指明栈低位置。(3)堆栈操作指令 入栈指令PUSH 格式:PUSHOPS 功能:将操作数OPS的内容压入堆栈中。 允许的操作数:OPS可以是通用寄存器,段寄存器或存储 器,必须为字操作数。 操作过程:SPSP1,OPS的高字节栈顶单元; 再次SPSP1,OPS的低字节栈顶单元。 例如:PUSHAX 执行前:AX1234H,SP2000H。堆栈情况如图2-5(a), 执行后:(1FFEH)1B5DH,AX的内容不变。堆栈情况如图2 5(b)所示。,出栈指令POP 格式:POPOPS 功能:将堆栈栈顶内容弹出到操作数OPS中。 允许的操作数组合:OPS可以是通用寄存器,段寄存器(CS除外)或存储器,必须为字操作数。,操作过程:OPS的低字节栈顶单元,SPSP1; OPS的高字节栈顶单元,再次SPSP1。例如:POPAX执行前:AX1234H,堆栈情况如图25(b)所示。执行后:AX1B5DH,堆栈情况如图25(a)所示。,图2-5堆栈操作命令示意图,3交换指令XCHG格式:XCHGOPD,OPS 功能:将两个操作数OPD与OPS的内容互换. 允许的操作数组合:交换可以在通用寄存器之间或通用寄存器与存储器之间进行,OPD与OPS可以同时是字节或字操作数。 4有效地址传送指令LEA 格式:LEAOPD,OPS 功能:该指令把源操作数的偏移地址送到目的操作数中。 允许的操作数组合:OPD可以为任一16位通用寄存器,OPS 可以是地址表达式。,2.2.2算术运算指令1加法指令(1)二进制加法指令ADD 格式:ADDOPD,OPS 功能:OPDOPDOPS,ADD指令可以实现8位数或16位数 的加法,允许OPD与OPS同时为字节或字操作数。 允许的操作数组合:源操作数可以是通用寄存器、存储器中或立即数;目的操作数可以是:通用寄存器或存储器。OPD与OPS允许的组合有5种,如图2-7所示。(2)带进位加法指令ADC 格式:ADCOPD,OPS 功能:OPDOPDOPSCF,图2-7ADD指令操作数组合,(3)加1指令INC 格式:INCOPD 功能:OPDOPD1。 允许的操作数:OPD可以是通用寄存器,存储器,字,字节操 作数.,2减法指令(1)二进制减法指令SUB 格式:SUBOPD,OPS 功能:OPDOPDOPS。 SUB指令可以实现8位数或16位数的减法,允许OPD与OPS同时为字节或字操作数。(2)带借位减法指令SBB 格式:SBBOPD,OPS功能:OPDOPDOPSCF。(3)减1指令DEC 格式:DECOPD 功能:OPDOPD1.,(4)比较指令CMP 格式:CMPOPD,OPS 功能:OPDOPS,但不保存运算的结果只是根据结果设置 状态标志位。(5)求补指令NEG 格式:NEGOPD 功能:OPD0OPD. 允许的操作数:同INC指令3乘法指令(1)无符号数乘法指令MUL 格式:MULOPS 功能:实现二个无符号数的二进制乘法,可以为字或字节 乘法,由乘数OPS决定。,若OPS为字节操作数,则为字节乘法,被乘数隐含为AL,乘积为16位数,放在AX中,即实现的操作为:AXALOPS。 若OPS为字操作数,则为字乘法,被乘数隐含为AX,乘积为32位数,高16位放在DX中,低16位放在AX中,即实现的操作为:DX:AXAXOPS。允许的操作数:OPS可以是通用寄存器或存储器但不能是立即数.OPS以及隐含的被乘数都必须是无符号数。(2)有符号数乘法指令IMUL 格式:IMULOPS 功能:字节操作:AXALOPS字操作:DX:AXAXOPS4除法指令(1)无符号数除法指令DIV 格式:DIVOPS,功能:实现两个无符号数二进制数除法,可以为字或字节除 法,由除数OPS决定。 若OPS为字节操作数,则实现操作为: ALAX/(OPS)的商; AHAX/(OPS)的余数若OPS为字操作数,则实现操作为: AX(DX:AX)/(OPS)的商; DX(DX:AX)/(OPS)的余数 允许的操作数:可是通用寄存器或存储器,但不能是立即数。 OPS以及隐含的被除数都必须是无符号数。(2)有符号数除法指令IDIV 格式:IDIVOPS 功能:字节操作:ALAX/(OPS)的商, AHAX/(OPS)的余数 字操作:AX(DX:AX)/(OPS)的商, DX(DX:AX)/(OPS)的余数,5符号扩展指令 由于字节除法要求被除数为16位,字除法要求被除数为32位,当被除数为8位或16位时,必须将其变为等值的16位或32位形式.8086/8088中专门提供了符号扩展指令以方便这种操作。(1)字节扩展为字指令CBW 格式:CBW 功能:把AL中的符号位扩展到AH。即如果AL的最高位为0, 则AH00H;如AL的最高位为1,则AHFFH。(2)字扩展为双字指令CWD 格式:CWD 功能:把AX的符号位扩展到DX。即如果AX的最高位为0,则 DX0000H;如AX的最高位为1,则DXFFFFH。,2.2.3逻辑运算及移位指令1逻辑运算指令(1)逻辑与指令AND 格式:AND 功能:OPDOPDOPS. 允许的操作数组合:OPD与OPS的组合情况完全等同于ADD指 令,参图27所示。 应用:与指令可使一个操作数在其它位不变情况下将某些位 置0.要保持不变的位应与1相与要置0的位应与0相与。(2)逻辑或指令OR 格式:OROPD,OPS 功能:OPDOPDOPS. 注意:除了完成的是按位“或”而不是按位“与”外,其它情 况OR同AND一样。,应用:或指令可以使一个操作数在其它位不变的情况下,将 某些位置1.要保持不变的位应与0相或,要置1的位应 与1相或。(3)逻辑非指令NOT 格式:NOTOPD 功能:OPDOPD. 允许的操作数:OPD可以是通用寄存器或存储器,字或字节 操作数均可.(4)异或指令XOR 格式:XOROPD,OPS 功能:OPDOPD V OPS.,应用:异或指令可以使一个操作数在其它位不变的情况下, 将某些位取反。要保持不变的位应与0相异或,要取 反的位应与1相异或。(5)测试指令TEST 格式:TESTOPD,OPS 功能:OPDOPS,即OPD与OPS按位相“与”,结果不保存, 但影响标志位。2一般移位指令 一般移位指令包括4条指令,由于逻辑左移指令SHL与算术左移指令SAL实质上是一条指令二个名字,因而实际只有3条指令。这3条指令具有相同格式和相同的操作数要求,如下:格式:SALOPD,COUNT SHLOPD,COUNT SAROPD,COUNT SHROPD,COUNT,允许的操作数:OPD可以是通用寄存器或存储器操作数,字或字节操作数。COUNT可以是1或CL,当移位次数大于1时,需先将移位次数放入CL中,然后以CL作为第二个操作数。(1)算术左移指令SAL与逻辑左移指令SHL 功能:这二条指令功能相同。均将操作数OPD的每一位向左 移动COUNT参数指定的位数,最高位移出后进入CF, 而最低位补入相应个数的0。 执行操作:如图213(a)所示(见下页)。应用:SAL和SHL常常用来做乘以2n的运算,用这种方法来 实现简单乘法比用乘法指令执行速度快得多。(2)逻辑右移指令SHR 功能:将操作数OPD的每一位向右移动COUNT参数指定的位 数,最低位移出后进入CF,最高位填0。,图2-13 一般移位指令,执行操作:如图213(b)所示。应用:对无符号数而言,逻辑右移一位相当于原数除以2之商。(3)算术右移指令SAR 功能:将操作数OPD的每一位向右移动COUNT参数指定的位 数,最低位移出后进入CF,最高位移出后的空缺再用 它自身值填入,对有符号数而言,该操作可保证符号 位不变。 执行操作:如图213(c)所示 应用:对于有符号数而言,算术右移一位相当于原数除以2 之商。,3循环移位指令 这类指令共有4条,其格式、允许的操作数、对标志位的影响均同一般移位指令。格式:ROLOPD,COUNT ROROPD,COUNT RCLOPD,COUNT RCROPD,COUNT (1)循环左移指令ROL 功能:每执行一次,把OPD的每一位向左移动一位,最高位一 方面移入标志位CF,一方面返回到操作数的最低位.总共移位由COUNT指定的次数.CF的内容为最后移入位的值。 执行操作:如图214(a)所示(见下页)。(2)循环右移指令ROR 功能:每执行一次,把OPD的每一位均向右移动一位,最低位 一方面移入标志位CF,一方面返回到操作数的最高位.总共移位由COUNT指定的次数。CF的内容为最后移入位的值。 执行操作:如图214(b)所示(见下页)。,图2-14 循环移位指令,(3)带进位循环左移RCL 功能:每执行一次,把OPD的每一位均向左移动一位,最高位 移入标志位CF,CF原来的值移入操作数的最低位.总共 移位由COUNT操作指定的次数。CF的内容为最后移入 位的值。 执行操作:如图214(c)所示(见上页)。(4)带进位循环右移指令RCR 功能:每执行一次,把操作数OPD的每一位均向右移动一位, 最低位移入标志位CF,CF原来的值移入操作数的最高 位。总共移位由COUNT操作数指定的次数。CF的内容 为最后移入位的值。 执行操作:如图214(d)所示(见上页) 。,2.2.4转移控制指令1标号 标号是一条指令的符号地址。在一条指令的前面写上标号名,再加上分隔符冒号,就定义了标号,以后就可以用这一标号来代表这条指令在内存中的起始地址。标号通常用来作转移、循环指令的参数。2无条件转移指令JMP 格式:JMPOPD 功能:控制CPU转到由OPD指定的地址处执行指令。 随OPD的不同,JMP指令有如下几种主要用法:(1)JMP标号(2)JMP通用寄存器(3)JMP存储器(字或双字),3条件转移指令(1)基于单个标志位的条件转移指令 JZ(或JE)结果为零(或相等)则转移 格式:JE(或JZ)标号 转移条件:ZF1 JNZ(或JNE)结果不为零(或不相等)则转移 格式:JNZ(或JNE)标号 转移条件:ZF0 JS结果为负则转移格式:JS标号 转移条件:SF1 JNS结果为正则转移 格式:JNS标号 转移条件:SF0 JO溢出则转移 格式:JO标号 转移条件:OF1 JNO不溢出则转移 格式:JNO标号 转移条件:OF0, JP(或JPE)奇偶位为1则转移 格式:JP(或JPE)标号 转移条件:PF1 JNP(或JPO)奇偶位为0则转移 格式:JNP(或JPO)标号 转移条件:PF0 JC有进/借位则转移 格式:JC标号 转移条件:CF1 JNC无进/借位则转移 格式:JNC标号 转移条件:CF0(2)适用于无符号数的条件转移指令这组指令有4条,其格式都一样,使用这组指令前提必须满足以下条件: 设有二个无符号数A与B,已做了AB运算。 JB(或JNAE)低于(或不高于且不等于)则转移 格式:JB(或JNAE)标号 转移条件:AB, JNB(或JAE)不低于(或高于或等于)则转移 格式:JNB(或JAE)标号 转移条件:AB JBE(或JNA)低于或等于(或不高于)则转移 格式:JBE(或JNA)标号 转移条件:AB JNBE(或JA)不低于或不等于(或高于)则转移 格式:JNBE(或JA)标号 转移条件:AB(3)适用于有符号数的条件转移指令 这组指令有4条,其格式都一样,使用这组指令前必须满足以下条件: 设有二个有符号数A与B,已做了AB运算. JL(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平凉崆峒区中烟工业2025秋招笔试烟草特色知识题专练及答案
- 2025年度民间抵押借贷协议书合同范本(增强现实)
- 小学校园消防突发应急预案
- 金融咨询策划方案
- 南干一级站施工组织设计方案
- 中国邮政2025九江市秋招金融业务类岗位面试模拟题及答案
- 三门峡市烟草公司2025秋招笔试公基题专练及答案
- 中式室内绿化施工方案
- 分切机考试题及答案
- 法务专员考试题及答案
- 2025至2030年中国成都市酒店行业市场发展调研及投资方向分析报告
- 工程造价培训用课件
- GB/T 19348.2-2025无损检测工业射线照相胶片第2部分:用参考值方法控制胶片处理
- 黑龙江学位英语考试试题及答案
- AI大模型驱动的智慧供应链ISC+IT蓝图规划设计方案
- (2025)语文单招考试试题与答案
- 安踏ai面试题库大全及答案
- T/CATCM 001.1-2017保健类眼贴第1部分:通用要求
- 儿童周期性呕吐综合征治疗指南
- 道观庙宇托管协议书
- 早期阿尔茨海默病疾病修饰治疗专家共识(2025年版)解读
评论
0/150
提交评论