书签 分享 收藏 举报 版权申诉 / 173
上传文档赚钱

类型80x86的指令系统和寻址方式课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5193360
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:173
  • 大小:2.03MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《80x86的指令系统和寻址方式课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    80 x86 指令系统 寻址 方式 课件
    资源描述:

    1、第第3章章 80 x86的指令系统和寻址方式的指令系统和寻址方式 3.180 x86的寻址方式 3.2 80 x86的指令系统 3.3 80 x86的机器语言指令概况基本概念指令的构成w 指令由操作码和操作数两部分组成w 操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分w 操作数是指令执行的参与者,即各种操作的对象w 有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数基本概念与数据有关的寻址方式w 在指令中为了取得操作数地址所使用的方式w 寻找操作数的过程就是操作数的寻址w 不同的指令系统都规定一些寻址方式供编程时

    2、选用w 操作数采取哪一种寻址方式,会影响机器运行的速度和效率一个简单的汇编指令w 传送指令 格式:MOV DST,SRC 操作:(DST)(SRC)例:MOV AX,BX 执行指令前:(AX)=1234H,(BX)=4321H 执行指令后:(AX)=4321H,(BX)=4321H操作数的类型w 寄存器(R):字节、字、双字w 存储单元(M):字节、字、双字w 立即数(imm):字节、字、双字 3.1 80 x86的寻址方式的寻址方式一、与数据有关的寻址方式一、与数据有关的寻址方式二、与转移地址有关的寻址方式二、与转移地址有关的寻址方式1.立即(数)寻址2.寄存器寻址3.直接寻址4.寄存器间接

    3、寻址5.寄存器相对寻址6.基址变址寻址7.相对基址变址寻址8.比例变址寻址方式9.基址比例变址寻址方式10.相对基址比例变址寻址方式1.立即(数)寻址w 操作数直接包含在指令中,紧跟在操作码之后的寻址方式,称为立即寻址方式,这种操作数被称为立即数(imm)n它可以是8位数值i8(00HFFH)n也可以是16位数值i16(0000HFFFFH)w 立即数寻址方式常用来给R/M赋值w 立即数只能用于源操作数立即寻址例3.1 MOV AL,9 ;(AL)=09H例3.2 MOV AX,3064H;(AX)=3064H 立即数寻址的执行2.寄存器寻址w 操作数存放在CPU的内部寄存器(reg)中,这些

    4、寄存器可以是:n8位寄存器:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器:AX、BX、CX、DX、SI、DI、BP、SPn4个段寄存器seg:CS、DS、SS、ES寄存器寻址w MOV AX,BX ;如指令执行前(AX)=1234H,(BX)=5678H ;则指令执行后(AX)=5678H,(BX)保持不变。注意:注意:源寄存器和目的寄存器的位数必须一致。MOV AX,BL ()w 这里先引入有效地址EA(Effective Address)的概念:在8086里,把操作数的偏移地址称为有效地址,下面五种计算EA的方法体现了五种寻址方式。3、直接寻址方式(Direct addre

    5、ssing)w 在这种寻址方式中,操作数存放在存储单元中,而这个存储单元的有效地址就在指令的操作码之后 直接寻址方式w MOV AX,2000H 如果(DS)=3000H,则执行情况如下图所示,最后的执行结果为(AX)=3050H。直接寻址方式w 跨越段前缀 MOV AX,2000h MOV AX,ES:2000hw 符号地址 MOV AX,VALUE MOV AX,VALUE MOV AX,ES:VALUE MOV AX,ES:VALUE4.寄存器间接寻址w 有效地址存放在基址寄存器BX,BP中或变址寄存器SI、DI中w 所使用的寄存器相当于地址指针,当修改其内容后可指向不同的存储单元w 书

    6、写时用括住寄存器名,以区别于寄存器寻址w 若以BX、SI、DI间接寻址,操作数默认在数据段;若以BP间接寻址,操作数默认在堆栈段;寄存器间接寻址w MOV AX,BX 如果(DS)=2000H,(BX)=1000H,则物理地址=20000H+1000H=21000H执行情况如下图所示,最后的执行结果为(AX)=50A0H。寄存器间接寻址w使用跨越段前缀改变段 MOV AX,SI MOV AX,DS:SI MOV CL,BX MOV CL,DS:BX MOV BL,BP MOV BL,SS:BP MOV AX,ES:SI MOV CL,SS:BX MOV BL,DS:BP5.寄存器相对寻址方式w

    7、 有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DIw 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变w 该方式不仅可以修改指针,还可以修改位移量,对数组操作十分方便寄存器相对寻址方式w MOV AX,COUNTSI(也可表示为MOV AX,COUNT+SI)其中COUNT为16位位移量的符号地址。如果(DS)=3000H,(SI)=2000H,COUNT=3000H,则物理地址=30000H+2000H+3000H=35000H。寄存器相对寻址方式MOV AX,10HSI MOV AX,DS:10HSIMOV AX

    8、,ARRAYBX MOV AX,DS:ARRAYBXMOV TABLEDI,AL MOV DS:TABLEDI,ALMOV TABZBP,BL MOV SS:TABZBP,BL 代码段DS数据段操作码24H00H12H34H56H78H9AHMOV AL,0024HSI0024H(SI)=0(AL)=12H(SI)=1(AL)=34H(SI)=2(AL)=56H(SI)=3(AL)=78H(SI)=4(AL)=9AHEA=24H+(SI)(SI)可看作数据起始单元可看作数据起始单元的偏移量的偏移量数组内某元素距数组数组内某元素距数组起始单元的偏移起始单元的偏移通过修改通过修改SI可遍历整个数组

    9、可遍历整个数组6.基址变址寻址方式w 有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:EABX/BPSI/DIw 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用跨越段前缀改变基址变址寻址方式w MOV AX,BXDI(或写为 MOV AX,BX+DI)如(DS)=2100H,(BX)=0158H,(DI)=10A5H则 EA=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDH基址变址寻址方式MOV AX,BXSI MOV AX,DS:BX+SIMOV AX,BPDI MOV AX,SS:BP+DIMOV A

    10、X,DS:BPDI MOV AX,DS:BP+DI7.相对基址变址寻址方式w 有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:EABX/BPSI/DI8/16位位移量w 该方式中,BX/BP选一,SI/DI选一w 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用跨越段前缀改变相对基址变址寻址方式w MOV AX,MASKBXSI(或 MOV AX,MASKBX+SI,或 MOV AX,MASK+BX+SI)如(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H,则物理地址=30000H+2000H

    11、+1000H+0250H=33250H最后的执行结果是(AX)=1234H。相对基址变址寻址方式MOV AX,06HBX+SI MOV AX,DS:BX+SI+06HMOV AL,TABBXDI MOVAL,DS:TABLEBXDI MOV TAB1BPSI,DXMOV SS:TAB1BPSI,DX MOV AX,ARRAYBXBP MOV AX,DASIDI BX、SI分别存放数组的脚标MOV AL,ARRAYBXSIDS数据段ARRAYSIBX二维数组起始单元二维数组起始单元 EA 之间表示相加的关系之间表示相加的关系BXSI BX+SI16位/32位寻址有效地址的组成四种成份四种成份16

    12、位寻址位寻址32位寻址位寻址位移量0,8,16位0,8,32位基址寄存器BX,BP任何32位通用寄存器变址寄存器SI,DI除ESP以外的32位通用寄存器比例因子无1,2,4,88、比例变址寻址方式w 操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量之和 MOV EAX,COUNTESI*4 9、基址比例变址寻址方式w 操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上基址寄存器的内容之和 MOV ECX,EAXEDX*810、相对基址比例变址寻址方式w 操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上基址寄存器的内容和位移量之和 MOV EA

    13、X,TABLEEBPEDI*4二、与转移地址有关的寻址方式 程序代码亦存放在存储器中,如程序代码亦存放在存储器中,如何控制程序的走向(转移位置的地何控制程序的走向(转移位置的地址址CS:IP)是本部分所涉及的内容,是本部分所涉及的内容,由于它们与具体的指令相关,他们由于它们与具体的指令相关,他们的介绍放在指令中讲解。的介绍放在指令中讲解。3.3 80 x86的指令系统的指令系统w 指令分类指令分类n功能功能n格式格式w 数据传送指令数据传送指令w 算术运算指令算术运算指令w 逻辑指令逻辑指令w 串操作指令串操作指令w 程序转移指令程序转移指令w 处理器控制指令处理器控制指令w 双操作数指令(双

    14、操作数指令(DEST,SRC)w 单操作数指令(单操作数指令(DEST)w 无操作数指令(隐含,按约定寻找操作数)无操作数指令(隐含,按约定寻找操作数)一、数据传送指令w 数据传送是计算机中最基本、最重要的一种操作w 传送指令也是最常使用的一类指令w 传送指令把数据从一个位置传送到另一个位置w 除标志寄存器传送指令外,均不影响标志位1.通用数据传送指令w MOV(move)w MOVSX(move with sign-extend)w MOVZX(move with zero-extend)w PUSHw POPw PUSHA/PUSHAD(push all registers)w POPA/

    15、POPAD(pop all registers)w XCHG(exchange)传送指令MOV(move)w 格式:MOVdst,src ;传送指令(move)执行操作:(dst)(src)功能:将源操作数(字节或字)传送到目的地址。w 注意:注意:目的操作数dst和源操作数src不能同时用存储器寻址方式,这个限制适用于所有指令;目的操作数dst不能是CS,也不能用立即数方式;目的操作数dst和源操作数src不允许同时为段寄存器;MOV指令不影响标志位。传送指令MOV数据传送方向示意立即数立即数 段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX

    16、DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器传送指令MOV(move)MOV AL,5MOV AX,BXMOV BP,DSMOV DS,AXMOV BX,AXMOV ES:VAR,12MOV AL,BX MOV DS,1234H MOV CS,AX MOV DS,CS MOV VAR1,VAR2 MOV 12,AL MOVSX带符号扩展w 格式:MOVSX DST,SRC 执行操作:(DST)符号扩展(SRC)MOVSX reg1,reg2 MOVSX reg,mem注:源操作数可以8/16位的寄存器或存储单元,目标操作数则必须是16/32位寄存器。例:M

    17、OVSX EAX,CL MOVSX EDX,EDIMOVZX带零扩展w 格式:MOVZX DST,SRC 操作(DST)零扩展(SRC)MOVSX reg1,reg2 MOVSX reg,mem例:MOVZX DX,AL MOVZX EAX,DATAPUSH进栈w 格式:PUSH SRC 操作:16位指令:(SP)(SP)2 (SP)+1,(SP)(SRC)32位指令:(ESP)(ESP)4 (ESP)+3,(ESP)+2,(ESP)+1,(ESP)(SRC)注:源操作数可为R/MPOP进栈w 格式:POP DST 操作:16位指令:(DST)(SP)+1,(SP)(SP)(SP)+2 32位

    18、指令:(DST)(ESP)+3,(ESP)+2,(ESP)+1,(ESP)(ESP)(ESP)4注:源操作数可为R/M堆栈操作指令应用举例push ax;进入子程序后push bxpush ds.pop ds;返回主程序前pop bxpop axPUSHA/PUSHAD所有寄存器进栈w 格式:PUSHA PUSHAD 操作:所有16位通用寄存器依次进栈 所有32位通用寄存器依次进栈POPA/POPAD所有寄存器出栈w 格式:POPA POPAD 操作:16位通用寄存器依次出栈 32位通用寄存器依次出栈XCHG(exchange)交换指令w 格式:XCHG DST,SRCw 操作:(DST)(S

    19、RC)n寄存器与寄存器之间对换数据n寄存器与存储器之间对换数据注意:注意:不能在存储器与存储器之不能在存储器与存储器之间对换数据间对换数据交换指令交换指令XCHG寄存器间交换寄存器间交换mov ax,1234h;ax=1234hmov bx,5678h;bx=5678hxchg ax,bx;ax=5678h,bx=1234hxchg ah,al;ax=7856hxchg ax,ds:2000h;字交换xchg al,ds:2000h;字节交换交换指令XCHG例题分析w 例例:(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,在

    20、指令在指令 XCHG BX,BP+SI执行后,相关寄存器和执行后,相关寄存器和存储器的内容是什么?存储器的内容是什么?w 分析:源操作数的物理地址=(SS)16+(BP)+(SI)=2F000H+0200H+0046H=2F246Hw 指令的功能:(BX)(2F246H)w 指令执行结果:(BX)=4154H,(2F246H)=6F30H2.累加器专用传送指令w IN(input)输入w OUT(output)输出w XLAT(translate)换码注:这组指令只限于使用累加器EAX,AX或AL传送信息IN输入指令w 长格式:IN AL,PORT(字节)IN AX,PORT(字)IN EAX

    21、,PORT(双字)w 操作:(AL)(PORT)(字节)(AX)(PORT1,PORT(字)(EAX)(PORT3,PORT+2,PORT1,PORT)(双字)IN输入指令w 短格式:IN AL,DX(字节)IN AX,DX(字)IN EAX,DX(双字)w 操作:(AL)(DX)(字节)(AX)(DX)+1,(DX)(字)(EAX)(DX)+3,(DX)+2,(DX)+1,(DX)双字)OUT输出指令w 长格式:OUT PORT,AL(字节)OUT PORT,AX(字)OUT PORT,EAX(双字)w 操作:(AL)(PORT)(字节)(AX)(PORT1,PORT(字)(EAX)(POR

    22、T3,PORT+2,PORT1,PORT)(双字)OUT输出指令w 短格式:OUT DX,AL(字节)OUT DX,AX(字)OUT DX,EAX(双字)w 操作:(AL)(DX)(字节)(AX)(DX)+1,(DX)(字)(EAX)(DX)+3,(DX)+2,(DX)+1,(DX)双字)w 例:在打印机接口中,数据寄存器的端口地址为378H,状态寄存器的端口地址为379H,控制寄存器的端口地址为37AH。获取打印机状态:MOV DX,379H IN AL,DX控制打印机:MOV DX,37AH OUT DX,AL XLAT换码指令w 格式:XLAT OPR 或 XLATw 操作:16位指令:

    23、(AL)(BX)+(AL)32位指令:(AL)(EBX)+(AL)Mov ax,1234H mov cl,4 mov bx,100hloop1:ror ax,4 Xlat ;显示输出 ;跳转至loop1(BX)(AL)DS数据段30H31H32H78H34H33H(AL)=34H换码指令XLAT例题3.地址传送指令w LEA(load effective address)w LDS(load DS with pointer)w LES(load ES with pointer)w LFS(load FS with pointer)w LGS(load GS with pointer)w LSS

    24、(load SS with pointer)LEA有效地址传送指令w 格式:LEA REG,SRCw 操作:(REG)SRC的有效地址n目标操作数可为16位/32位的寄存器,但不能为段寄存器n源操作数可为除立即数和寄存器外的任何一种寻址方式LEA有效地址传送指令w 例:(BX)0400H,(SI)003CH (0403CH)1234H MOV BX,BXSI LEA BX,BX+SILDS指针送寄存器和段寄存器w 格式:LDS REG,SRCw 操作:(REG)(SRC)(DS)(SRC2)或 (DS)(SRC4)n目标寄存器不能为段寄存器n源操作数只能为存储器寻址方式w 例例:(DS)=B0

    25、00H,(BX)=080AH,(0B080AH)=05AEH,(0B80CH)=4000H,(405AEH)=9634H,在在执行指令执行指令LDS DI,BXMOV AX,DI后,后,(AX)=?BX=080AHB0000H0B080AH40000H34H96HAEH05H00H40H405AEH05AEH0B080CH(DI)=05AEHDI)=05AEH(DS)=4000HDS)=4000Hw 结果结果:(DS)=4000H(DI)=05AEH(AX)=9634H标志寄存器传送指令w LAHF(load AH with flags)w SAHF(store AH into flags)w

    26、 PUSHF/PUSHFD(push the flags or eflags)w POPF/POPFD(pop the flags or eflags)w LAHF标志送AH寄存器n格式:LAHFn操作:(AH)(FLAGS的低字节)w SAHF AH送标志寄存器指令n格式:SAHFn操作:(FLAGS的低字节)(AH)w PUSHF/PUSHFD标志进栈n格式:PUSH 或 PUSHFDn操作:(SP)(SP)2(SP)+1,(SP)(FLAGS)n操作:(ESP)(ESP)2(ESP)+3,(ESP+2),(ESP)+1,(ESP)(EFLAGS)AND 0FCFFFFHw POPF/PO

    27、PFD标志出栈指令n格式:POPF 或 POPFDn操作:(FLAGS)(SP)+1,(SP)(SP)(SP)+2 n操作:(EFLAGS)(ESP)+3,(ESP)+2,(ESP)+1,(ESP)(ESP)(ESP)+4 5.类型转换指令w CBW(convert byte to word)w CWD/CWDE(convert word to double word)w CDQ(convert double to quad)w BSWAP(byte swap)w CBW字节转换为字n格式:CBWn操作:(AL)符号扩展到AH,形成AX中的字w CWD/CWDE 字转换为双字n格式:CWD 或

    28、 CWDEnCWD操作:(AX)符号扩展到DX,形成DX:AX双子nCWDE操作:(AX)符号扩展到EAXw CDQ双子转换为4字n格式:CDQn操作:(EAX)符号扩展到EDX,形成EDX:EAX中的4字w BSWAP字节交换指令n格式 BSWAP r32n操作:将指定的32位寄存器的字节次序变反,1,4;2,3互换n例:BSWAP EAX(EAX)11223344H(EAX)44332211H486及以后CPU二、算术运算指令(部分)w四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算w请注意算术运算类指令对标志的影响w双操作数指令除源操作数为立即数的情况

    29、外,必须有一个操作数在寄存器w单操作数不允许使用立即数方式1.加法指令w ADDw ADC(add with carry)w INC(increment)w XADD(exchange and add)加法指令w ADD n格式:ADD DST,SRCn操作:(DST)(SRC)+(DST)w ADCn格式:ADC DST,SRCn操作:(DST)(SRC)+(DST)+CFw INCn格式:INC OPRn操作:(OPR)(OPR)+1w 可作字节、字、双字运算加法指令w XADD 相加并交换n格式:XADD DST,SRCn操作:TEMP(SRC)(DST)(SRC)(DST)(DST)T

    30、EMP486及以后CPU加法指令w 标志位设置nZFnSFnCF 最高有效位向高位有进位nOF 两个操作数符号相同,结果符号与之相反nINC不影响CF位加法指令举例ADD AX,BXADD AL,BLSUB CX,20HADD DL,DA_BYTESUB DA_WORD,DX若若(AL)=0E5H,执行执行ADD AL,0A4H 后,后,AL及各标志位的情及各标志位的情况?况?11110 01011010 01001000 1001+CF=1,ZF=0,SF=1,OF=0w若认为是无符号数,若认为是无符号数,则为则为229+164=393=256+137229+164=393=256+137w

    31、若认为是有符号数,若认为是有符号数,则为则为(-27)+(-92)=-119(-27)+(-92)=-119加法指令举例w 例:实现例:实现2F365H和和2E024H的加法的加法运算运算MOV DX,2MOV AX,0F365HADD AX,0E024HADC DX,52 F3655 E0248 D389+手工计算手工计算2 F3655 E0248 D389+1F365E024D389+CF=1,ZF=0,SF=1,OF=0000200050008+0001CF=0,ZF=0,SF=0,OF=0AXDX2.减法指令w SUB(subtract)w SBB(subtract with borr

    32、ow)w DEC(decrement)w NEG(negate)w CMP(compare)w CMPXCHG(compare and exchange)w CMPXCHG8B(compare and exchange 8 byte)减法指令w SUBn格式:SUB DST,SRCn操作:(DST)(DST)(SRC)w SBBn格式:SBB DST,SRCn操作:(DST)(DST)(SRC)CF减法指令w DECn格式:DEC OPRn操作:(OPR)(OPR)1w NEG 求补n格式:NEG OPRn操作:(OPR)(OPR)减法指令w CMP 比较运算n格式:CMP OPR1,OPR2

    33、n操作:(OPR1)(OPR2)w CMPEXCHG 比较并交换n格式:CMPXCHG DST,SRCn操作:累加器(AC)与DST比较 如:(AC)(DST)则:ZF1,(DST)(SRC)否则:ZF0,(AC)(DST)SRC只能为8,16,32位寄存器,累加器可以是AL,AX,EAX减法指令w CMPXCHG8Bn格式:CMPXCHG8B DST n操作:EDX:EAX与DST比较 如(EDX:EAX)(DST)则:ZF1,(DST)(ECX:EBX)否则:ZF0,(EDX:EAX)(DST)减法指令w 标志位设置nZF nSFnCF 最高有效位向高位产生借位nOF 两个操作数符号相反,

    34、结果与减数符号相同nDEC不影响CFnNEG指令当操作数为0时,CF0,其它均为1 只有128,32768,65536时,OF1,其它均为0。减法指令举例w 例:执行指令例:执行指令MOV AL,-73SUB AL,-87后,后,AL及个标志及个标志位的情况位的情况1011 01111010 10010000 1110CF=0,ZF=0,SF=0,OF=0-73的补码表示的补码表示14-87的补码表示的补码表示AL=0EH减法指令举例例:例:AL=13H,执行指令执行指令NEG AL后后AL的值的值10000 00000001 00111110 1101ALAL=-13H1001 001000

    35、00 00011001 0011+CF=1,ZF=0,SF=1,OF=0CMP指令详解w 根据CMP指令的结果如何判断两个操作数的大小。w 无符号数比较X,YnXY 则CF0nXYn则,有如下三种可能lXY=0 X-Y结果 为:SF=0,OF0l0=XY X-Y结果 为:SF0,OF0lX=0,YYCMP指令详解w 有符号数X,Yn若XYn则,有如下三种可能l0=XY X-Y结果 为:SF=1,OF0lXY=0 X-Y结果 为:SF1,OF0lX=0 X-Y结果 为:SF1,OF0 SF0,OF1n可得如下规则:l若SF OF=1,则XYCMP举例:(CMP AL,BL)AL=-2BL=127

    36、1111 11100111 11110111 1111-SF=0OF=1相异,相异,ALBLAL=-2BL=-111111 11101111 11111111 1111-SF=1OF=0相异,相异,ALBLAL=127BL=-210111 11111111 11101000 0001-SF=1OF=1相同,相同,ALBL3.乘法指令w MUL(unsigned multiple)无符号数乘法w IMUL(signed multiple)带符号数乘法乘法指令w MUL、IMULn格式:MUL/IMUL SRCn操作:字节:(AX)(AL)(SRC)字:(DX,AX)(AX)(SRC)双子:(ED

    37、X,EAX)(EAX)(SRC)注:指令中的源操作数可以使用除立即数方式以外的任何一种寻址方式乘法指令w 标志位设置nCF,OF外的标志位无定义nMUL指令如果乘积的高一半为0,则CF0,OF0否则CF1,OF1nIMUL指令如果乘积的高一半为低一半的符号扩展则CF0,OF0;否则CF1,OF14.除法指令w DIV(unsigned divide)无符号数除法w IDIV(signed divide)带符号数除法除法指令w DIV、IDIVw 格式:DIV/IDIV SRCw 操作:字节 (AL)(AX)/SRC 的商(AH)(AX)/SRC的余数 字 (AX)(DX,AX)/SRC 的商(

    38、DX)(DX,AX)/SRC的余数 双字:(EAX)(EDX,EAX)/SRC 的商 (EDX)(EDX,EAX)/SRC的余数w 对条件码均无定义5.十进制调整指令w 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果w 分成压缩BCD码和非压缩BCD码调整三、逻辑指令(逻辑逻辑)位操作类指令以二进制位为基本单位操作类指令以二进制位为基本单位进行数据的操作;这是一类常用的指位进行数据的操作;这是一类常用的指令,都应该特别掌握令,都应该特别掌握w 逻辑运算指令w 位测试指令w 位扫描指令w 移位指令1.逻辑运算指令w格式:AND DST,SRCOR DST,SRCXOR

    39、DST,SRCNOT DST TEST OPR1,OPR2w操作:(DST)(DST)(SRC)(DST)(DST)(SRC)(DST)(DST)(SRC)(DST)(DST)(OPR1)(OPR2)wNOT不影响标志位,CF0,OF0,SF,ZF根据结果设置 逻辑运算指令例:要求屏蔽AL的0,1两位 MOV AL,0BFHAND AL,0FCH 1011 1111 AND 1111 1100 1011 1100(AL)=0BCH逻辑运算指令MOV AL,43HOR AL,20H 0100 0010 OR 0010 0000 0110 0000 (AL)=63H例:要求使AL的第5位置1 逻辑

    40、运算指令例:要求将AL的第0,1位取反MOV AL,11HXOR AL,03H 0001 0001 XOR 0000 0011 0001 0010 (AL)=12H4.移位指令w逻辑移位指令w算术移位指令w循环移位指令逻辑移位指令w 格式:SHL OPR,CNT SHR OPR,CNTw 操作:将OPR按 CNT 指定的次数左/右移位,移出的位 CF,空出的位补0,结果 DSTw 受影响标志:OF(CNT=1时),CF,ZF,SF,PFw 说明:nOPR 可以是R、MnCNT为1或CLn该指令可用于无符号数/2的操作算术移位指令w 格式:SAL OPR,CNT SAR OPR,CNTw 操作:

    41、nSAL与SHL完全相同nSAR每右移1位,最低位 CF,最高位保持不变(用于带符号数的除法),结果 OPRw 受影响标志:OF(CNT=1时),CF,ZF,SF,PFw 说明:nDST 可以是R、MnCNT为1或CL移位指令应用举例MOV CL,4MOV AL,0F0H;AL=F0HSHL AL,1;AL=E0H;CF=1,SF=1、ZF=0、PF=0,OF=0SHR AL,1;AL=70H;CF=0,SF=0、ZF=0、PF=0、OF=1SAR AL,CL;AL=03H;CF=1,SF=0、ZF=0、PF=1SAR AL,1;AL=38H;CF=0,SF=0、ZF=0、PF=0、OF=0循

    42、环移位指令w ROL(rotate left)w ROR(rotate right)w RCL(rotate left through carry)w RCR(rotate right through carry)循环移位指令w ROLw 格式:ROL OPR,CNTw 操作:w RORw 格式:ROR OPR,CNTw 操作:循环移位指令w RCLw 格式:RCL OPR,CNTw 操作:w RCRw 格式:RCR OPR,CNTw 操作:循环移位指令 将DX.AX中32位数值左移一位SHL AX,1SHL AX,1RCL DX,1RCL DX,1DXAXCF0循环移位指令位传送;把AL最低

    43、位送BL最低位,保持AL不变ROR AL,1RCL BL,1ROL AL,1 ALCFBLCFALCFAL之之D0四、串操作指令w 串操作指令是8086指令系统中比较独特的一类指令,采用比较特殊的数据串寻址方式,在操作主存连续区域的数据时,特别好用、因而常用w 串操作指令的操作数是主存中连续存放的数据串(String)即在连续的主存区域中,字节或字的序列w 串操作指令的操作对象是以双字或字(W)为单位的字串,或是以字节(B)为单位的字节串四、串操作指令w MOVS(move string)w CMPS(compare string)w SCAS(sacn string)w LODS(load

    44、from string)w STOS(store in to string)w INS(input from port to string)w OUTS(output string to prot)四、串操作指令w 与REP相配合工作的MOVS,STOS,LODS,INS和OUTS指令nREP重复串操作直到计数寄存器Count Reg的内容为0为止n格式:REP string primitiven操作:l如(Count Reg)=0,则退出REP,否则往下执行l(Count Reg)(Count Reg)-1l执行其后的串指令l重复13四、串操作指令w MOVS串传送指令n格式:可有四种lMO

    45、VS DEST,SRClMOVSBlMOVSWlMOVSD四、串操作指令w MOVS ES:BYTE PTRDI,DS:SIw 执行的操作:n(Destination-index)(Source-index)n字节操作:l(Source-index)(Source-index)1l(Destination-index)(Destination-index)1n字操作l(Source-index)(Source-index)2l(Destination-index)(Destination-index)2n双字操作l(Source-index)(Source-index)4l(Destinati

    46、on-index)(Destination-index)4(注:DF=0用,DF=1用)四、串操作指令w 例 编写程序,传输20字节的字符串。DATSEG SEGMENT DATAX DB ABCDEFGHIJKLMNOPQRST DATAY DB 20 DUP(?)DATSEG ENDSCODSEG SEGMENT ASSUME CS:CODSEG,DS:DATSEG,ES:DATSEGSTART:MOV AX,DATSEG MOV DS,AX MOV ES,AX CLD MOV SI,OFFSET DATAX MOV DI,OFFSET DATAY MOV CX,20 REP MOVSB

    47、MOVAX,4C00H INT 21HCODSEG ENDS END STARTREP MOVS byte REP MOVS byte ptrptr di,sidi,si 四、串操作指令w 执行串处理指令之前应该做好如下工作:n源串的首地址(或末地址)存入SIn目标串的首地址(或末地址)存入DIn串长度存入CXn建立方向标志 CLD,STD四、串操作指令四、串操作指令w STOS 存入串指令n格式:STOS DST STOSB STOSW STOSD四、串操作指令四、串操作指令w 执行的操作:n字节操作:l(Destination-index)(AL)l(Destination-index)(

    48、Destination-index)1n字操作l(Destination-index)(AX)l(Destination-index)(Destination-index)2n双字操作l(Destination-index)(EAX)l(Destination-index)(Destination-index)4(注:DF=0用,DF=1用)四、串操作指令四、串操作指令把附加段中的10个字节的缓冲区置为20Hextra segment mess2 db 10 dup(?)extra ends lea di,mess2 mov cx,10 cld rep stosblea di,meass2mo

    49、v ax,2020hmov cx,5rep stosw四、串操作指令四、串操作指令wLODS 从串取指令n格式:LODS SRC LODSB LODSW LODSDn执行的操作l字节操作(AL)(Source-index),(Source-index)(Source-index)1l字操作(AX)(Source-index),(Source-index)(Source-index)2l双字操作(EAX)(Source-index),(Source-index)(Source-index)4例3.37 编写程序:(1)用STOS指令将0AAH存入100个存储器字节;(2)利用LODS指令测试这些

    50、存储器单元的内容是否是0AAH,如果不是则显示“bad memory”。DTSEG SEGMENT DATAM DB 100 DUP(?)MESG DB bad memory,$DTSEG ENDSCDSEG SEGMENT ASSUMECS:CDSEG,DS:DTSEG,ES:DTSEG START:MOV AX,DTSEG MOV DS,AX MOV ES,AX CLD MOV CX,50 MOV DI,OFFSET DATAM MOV AX,0AAAAH REP STOSW MOV SI,OFFSET DATAM MOV CX,100 AGAIN:LODSB XOR AL,0AAH JN

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:80x86的指令系统和寻址方式课件.ppt
    链接地址:https://www.163wenku.com/p-5193360.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库