欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    【精品】寻址方式与指令系统(可编辑.ppt

    • 资源ID:76529466       资源大小:1.42MB        全文页数:128页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【精品】寻址方式与指令系统(可编辑.ppt

    寻址方式与指令系统8086/8088指令系统的寻址方式指令系统的寻址方式 所所谓谓寻寻址址方方式式就就是是寻寻找找操操作作数数存存放放地地址址(位位置置)的的方方法法。在在8086/80888086/8088系系统统中中操操作作数数存存放的位置有以下放的位置有以下4 4种:种:操操作作数数包包含含在在指指令令字字节节中中。即即指指令令格格式式中中操操作作数数部部分分就就是是操操作作数数本本身身。这这种种操操作作数数叫叫立即数操作数立即数操作数。操操作作数数存存放放在在CPUCPU的的某某个个内内部部寄寄存存器器中中。这种操作数叫这种操作数叫寄存器操作数寄存器操作数。操操作作数数在在内内存存的的数数据据区区中中。这这种种操操作作数数叫叫存储器操作数存储器操作数。操操作作数数来来自自或或送送到到I/OI/O端端口口。这这种种操操作作数叫数叫I/OI/O操作数操作数。在在8086/80888086/8088系系统统中中,操操作作数数又又可可分分为为两两大大类类:数数据据操操作作数数和和地地址址操操作作数数。因因此此,寻寻址址方方式也分为式也分为数据寻址方式数据寻址方式和和地址寻址方式地址寻址方式两大类两大类。1.数据的寻址方式数据的寻址方式对于数据操作数,有四种形式:对于数据操作数,有四种形式:无操作数无操作数 单单操操作作数数:可可以以是是源源操操作作数数,也也可可以以是是目的操作数。目的操作数。双操作数:一个是源操作数,一个是目的操作数。隐含操作数:可能隐含一个操作数(源或目的),也可能隐含两个操作数。源操作数:在操作过程中其值不变的操作数。(可以提供数据的操作数)目的操作数:在操作后可被操作结果代替的操作数。(可以接收数据的操作数)1)立即数寻址方式例如:MOVAL,80HMOVAX,1234HAL操作码字节80H程序存储器指令码操作码字节12H程序存储器AL指令码AH34H12H34H80H80H12H34HMOVAL,80HMOVAX,1234H有效地址可以由以下三种地址分量组成:位移量:它是存放在指令中的一个8位或16位的带符号数。基 址:它是存放在基址寄存器BX或BP中的内容。变 址:它是存放在变址寄存器SI或DI中的内容。对于某条具体指令,这三个地址分量可有不同的组合。正是因为这三种地址分量有不同的组合,才使得对存储器操作数的寻址产生了若干种不同的方式。直接寻址方式MOVAL,1064HDS:20000H20000H21064H21064HAL操作码641045代码段数据段4545+1064HEAEA 1616位位dispdisp50MAL505040MAX寄存器间接寻址MOVAX,SIMOVBX,AL30000HDS:30000HSI:2000H+32000H32000H4050504030000HDS:30000HBX:1000H+31000H31000H50MOVAX,SIMOVBX,ALEA=EA=(BX)(BX)(DI)(DI)(SI)(SI)寄存器相对寻址22064H22064H641045代码段数据段操作码CL4545+1064H21000HBX:1000HDS:20000H20000HEA=(BX)(BP)(DI)(SI)+8位disp16位dispMOVCL,BX+1064H 基址加变址寻址方式基址加变址寻址方式MOVAH,BPSIMOVAH,BPSI56HMAH40000H40000HSSSS:400040000 0H HBP:2000H+43200H43200HSI:1200H56H56HEA=EA=(BX)(BX)(BP)(BP)+(DI)(DI)(SI)(SI)基址加变址相对寻址MOVBX+DI+1234H,AHEA=(BX)(BP)+(DI)(SI)+8位disp16位disp3412代码段数据段操作码45AH40000HDS:40000HBX:0200H+DI:0010H1234H454541444H41444H4)I/O端口寻址方式 直接端口寻址方式INAL,21H21HAL操作码21H代码段8001H02HI/O接口8080间接端口寻址方式OUTDX,AL0001H0002HI/O接口80AL1234DX1234H8080指出下列指令中,源操作数及目的操作数的寻指出下列指令中,源操作数及目的操作数的寻址方式址方式SUB BX,BP+35 MOV AX,2030H SCASB IN AL,40H MOV DI+BX,AX ADD AX,50HDI MOV AL,1300H MUL BL 已知(已知(DS)=1000H,(,(SI)=0200H,(,(BX)=0100H,(,(10100H)=11H,(,(10101H)=22H,(10600H)=33H,(,(10601H)=44H,(10300H)=55H,(,(10301H)=66H,(10302H)=77H,(,(10303H)=88H,试分析下列,试分析下列各条指令执行完后各条指令执行完后AX寄存器的内容。寄存器的内容。MOV AX,2500H (AX)=MOV AX,300H (AX)=MOV AX,BX (AX)=MOV AX,500HBX (AX)=MOV AX,BXSI (AX)=MOV AX,BX+SI+2 (AX)=设(设(DS)=1000H,(,(ES)=2000H,(,(SS)=3000H,(,(SI)=0080H,(,(BX)=02D0H,(,(BP)=0060H,试指出下列指令的源操,试指出下列指令的源操作数字段是什么寻址方式?它的物理地址是作数字段是什么寻址方式?它的物理地址是多少?多少?MOV AX,0CBHMOV AX,100HMOV AX,BX MOV AX,BP MOV AX,BP+50MOV AX,BXSI2.地址的寻址方式地址的寻址方式其时是程序转移地址的寻址方式,也就是找出程序转移的地址号,而不是操作数。转移地址可以在段内(称段内转移),也可以跨段(称段间转移)。寻求转移地址的方法有以下四种:1)段内直接寻址转移的地址是当前IP内容和指令规定的8位或16位位移量之和。当位移量是8位时,称为短程转移;位移量是16位时称为近程转移。这种寻址方式适用于条件转移或无条件转移类指令。但条件转移只有8位位移量的短程转移。+当前IPEA有效转移地址opcode位移量PM(CS)10H+EA位移量 例:例:JMP SHORT ALPHAJMP SHORT ALPHA本例指令是一无条件转移本例指令是一无条件转移指令指令,指令采用了段内直接寻指令采用了段内直接寻址方式。符号地址址方式。符号地址ALPHAALPHA代表代表位移量。设位移量。设ALPHAALPHA20H,20H,开始开始执行该指令时,执行该指令时,(CS)(CS)1500H1500H,(IP)(IP)3200H3200H,于是该指令,于是该指令在存储器中的起始地址为:在存储器中的起始地址为:15000H 15000H3200H3200H18200H18200HOPOP20H20H存储器存储器15000H15000H18200H18200H18201H18201H18202H18202H18222H18222H20H20H当前代码段首地址当前代码段首地址JMPSHORTALPHAJMPSHORTALPHA转移地址转移地址而转移有效地址为:而转移有效地址为:EA EA当前当前(IP)(IP)ALPHAALPHA3202H3202H20H20H3222H3222H转移物理地址为:转移物理地址为:PA PA15000H15000H3222H3222H18222H18222H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成3222H(3222H(不再是不再是3202H)3202H),CPUCPU将转移到存储单元地址将转移到存储单元地址18222H18222H中去取指令来执行。中去取指令来执行。2)段内间接寻址方式程序转移的地址存放在寄存器或存储器单元中。指令执行使用寄存器或存储器单元的内容来更新IP的内容。寄存器寄存器IPIPDMDMIPIP例如:例如:JMPBXJMPBXJMPWORDPTRADDRJMPWORDPTRADDRJMPWORDPTRBX+ARRYJMPWORDPTRBX+ARRY 例:例:JMP WORD PTR BETAJMP WORD PTR BETA 本指令是无条件转移指令,可使本指令是无条件转移指令,可使程序转移到根据程序转移到根据BETABETA指示的内存单元中指示的内存单元中取出的偏移地址开始执行指令。指令采取出的偏移地址开始执行指令。指令采用的是段内间接寻址方式。指令的操作用的是段内间接寻址方式。指令的操作数地址是一个符号地址数地址是一个符号地址BETABETA,所以可用,所以可用数据寻址方式中的直接寻址方式得到存数据寻址方式中的直接寻址方式得到存储转移偏移地址的内存单元地址。设当储转移偏移地址的内存单元地址。设当前前(CS)(CS)0120H,(IP)0120H,(IP)2400H,BETA2400H,BETA0100H,(DS)0100H,(DS)2000H,(20100H)2000H,(20100H)00H00H,(20101H)(20101H)27H27H,则存储转移偏移地址,则存储转移偏移地址的内存单元地址为:的内存单元地址为:(DS)(DS)左移左移4 4位位+BETA+BETA20000H+0100H20000H+0100H 20100H20100H又又(20100H)(20100H)00H,(20101H)00H,(20101H)27H,27H,即转即转移物理地址为:移物理地址为:PA PA01200H+2700H01200H+2700H03900H03900H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成2700H2700H,CPUCPU将转移到存储单元将转移到存储单元03900H03900H去去执行程序。执行程序。OPOPOPOP00H00H存储器存储器01200012000360003600036010360103602036020390003900当前代码段首址当前代码段首址JMPWORDPTRBETAJMPWORDPTRBETA转移地址转移地址00H00H27H27H01H01H200002000020100201002010120101数据区首地址数据区首地址03603036032700H2700HIPIP3)段间直接寻址方式这种寻址方式是指令码中直接给出16位的段地址和16位的偏移地址用来更新当前的CS和IP内容。opcodePM段地址偏移量IPCSOPOP00H00H40H40H存储器存储器20000200002100021000210012100121002210023000030000当前代码段首址当前代码段首址JMPFARPTRGAMMAJMPFARPTRGAMMA转移代码段首地址转移代码段首地址00H00H3400034000转移地址转移地址210032100330H30H2100421004 例:例:例:例:JMP FAR PTR GAMMAJMP FAR PTR GAMMAJMP FAR PTR GAMMAJMP FAR PTR GAMMA 本例指令为无条件转移本例指令为无条件转移指令,采用段间直接寻址方指令,采用段间直接寻址方式。设当前式。设当前(CS)(CS)2000H2000H (IP)(IP)1000H1000H GAMMA GAMMA3000:40003000:4000则本指令的起始地址为:则本指令的起始地址为:20000H+1000H 20000H+1000H21000H21000H转移物理地址为:转移物理地址为:PA PA30000H+4000H30000H+4000H34000H34000H 执行完这条指令后,执行完这条指令后,CSCS的内容变成的内容变成3000H3000H,IPIP的内容的内容变成变成4000H4000H,从而程序转移到,从而程序转移到存储单元存储单元34000H34000H开始执行。开始执行。4)段间间接寻址方式 这种寻址方式是由指令码的寻址方式字节求出存放转移地址的连续两个字的地址。其低位字地址单元中存放的是偏移地址,高位字地址单元中存放的是转移段地址。DMDMCSCSIPIP段地址段地址偏移量偏移量 例:例:JMP DWORD PTR DELTABXJMP DWORD PTR DELTABX 本例指令是无条件转移指令,采用段间间接寻址方本例指令是无条件转移指令,采用段间间接寻址方式。式。设当前设当前(CS)(CS)1000H,(IP)1000H,(IP)0100H,(DS)0100H,(DS)2000H2000H,(BX)(BX)3000H,DELTA3000H,DELTA0040H,(23040H)0040H,(23040H)00H,(23041H)00H,(23041H)50H,(23042H)50H,(23042H)00H,(23043H)00H,(23043H)30H30H,则间接存储地,则间接存储地址按寄存器相对寻址为:址按寄存器相对寻址为:(DS)(DS)左移左移4 4位位+(BX)+DELTA+(BX)+DELTA20000H+3000H+0040H20000H+3000H+0040H 23040H23040H于是,可得转移地址为:于是,可得转移地址为:3000H:5000H 3000H:5000H即转移物理地址为:即转移物理地址为:PA PA30000H+5000H30000H+5000H35000H35000H 执行本指令后,执行本指令后,CSCS的内容和的内容和IPIP的内容分别变成的内容分别变成3000H3000H和和5000H5000H,程序转移到存储单元,程序转移到存储单元35000H35000H开始执行。开始执行。OPOPOPOP40H40H存储器存储器10000100001010010100101011010110102101023000030000当前代码段首地址当前代码段首地址JMPDWORDPTRDELTABXJMPDWORDPTRDELTABX转移代码段首地址转移代码段首地址00H00H3500035000转移地址转移地址101031010300H00H50H50H23040230402304123041230422304200H00H230432304330H30H2000020000数据段首地址数据段首地址IPIPCSCS5000H5000H3000H3000H指令执行前:指令执行前:(CS)=1000H(CS)=1000H(IP)=0100H(IP)=0100H(DS)=2000H(DS)=2000H(BX)=3000H(BX)=3000HDELTA=0040HDELTA=0040H指令执行后:指令执行后:(CS)=3000H(CS)=3000H(IP)=5000H(IP)=5000HopcodeopcodePMPM段地址段地址偏移量偏移量IPIPCSCSDMDMCSCSIPIP段基址段基址偏移量偏移量段间间接寻址方式段间直接寻址方式段间直接和间接寻址的区别8086/8088指令编码格式 通常在指令格式中包含操作码和操作数两大部分。其中:操作码表示计算机执行什么操作,操作数指明参与操作的对象,或规定操作对象的地址(即操作对象的存放位置)。如何寻找操作数(即操作对象),这就是指令的寻址方式,它是由指令编码格式指出的。操作码操作码操作数操作数 80868088指令系统采用变字长的指令编码格式,其指令可由16个字节组成,它包括操作码(第一字节),寻址方式(第二字节),位移量、立即数(第三到第六字节)三部分组成。其中,寻址方式、位移量、立即数为操作数部分。opcodemodregr/mdispdata操作码操作码寻址方式寻址方式位移量位移量立即数立即数操作数操作数opcodeopcodeopcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节Data/dispData/dispdisp(disp(低低)Data/disp(Data/disp(低低)Data/disp(Data/disp(高高)disp(disp(高高)disp(disp(低低)disp(disp(高高)DataDataData(Data(低低)Data(Data(高高)操作码部分操作数部分一字节指令二字节指令三字节指令四字节指令五字节指令disp(disp(低低)/)/Data(Data(低低)disp(disp(高高)/)/Data(Data(高高)Data(Data(低低)Data(Data(高高)modmodregregr/mr/mWDOPCODE76 543 2100172目的操作数源操作数源操作数目的操作数D=1D=0000001010011100101110111ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDIregW=0 W=1寄存器寻址BX+SI+disp8BX+DI+disp8BP+SI+disp8BP+DI+disp8SI+disp8DI+disp8BP+disp8BX+disp8BX+SI+disp16BX+DI+disp16BP+SI+disp16BP+DI+disp16SI+disp16DI+disp16BP+disp16BX+disp16BX+SIBX+DIBP+SIBP+DISIDIdisp16BX000001010011100101110111ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDIW=0W=1寄存器寻址mod=11modr/m存储器寻址有效地址的计算公式mod=00mod=01mod=10双操作数指令中各字段定义例1写出下面指令的机器语言编码。MOVBXDI6,CL指令码为指令码为:88H88H、49H49H、FAHFAHOPCODEDW modr/mregdisp8100010010010010 011111010例2写出下面指令的机器语言编码。ADDAX,BXDI+082603H81H26H08H03H81H26H08H000000DWmodr/mregDisp-L000000110010011010001000Disp-H000010004.3 80868088指令系统计算机是通过执行指令序列来完成用户的特定任务的,因此每种计算机都有一组指令集供用户使用。这组指令集就称为计算机的指令系统。指令系统中的每一条指令都对应着微处理器要完成的一种规定的操作,这在设计微处理器时就事先规定好了,所以指令系统是表征一台计算机性能的重要因素,它的格式与规模将直接影响到机器的硬件结构。指令系统是程序员编写程序的基础,因此很好地掌握指令系统的有关知识是后续进一步学习的关键。8086/8088指令系统大致可分为六大类指令:数据传送类指令 算术运算类指令 位操作类指令 串操作类指令 程序控制类指令 处理器控制类指令 学习指令系统着重要掌握指令的基本操作功能、合法的寻址方式及其对状态标志位的影响。4.3.1数据传送类指令 数据传送指令的主要功能是传送数据、地址和标志。可分为通用数据传送指令、输入输出指令、地址传送指令和标志传送指令。1.通用数据传送指令 通用数据传送指令可完成字节或字数据的传送。它可分为数据传送指令、堆栈操作指令、数据交换指令和字节转换指令。(1)数据传送指令 指令格式:MOVdst,src;(dst)(src)src表示源操作数(字/字节)立即数操作数 寄存器操作数(包括段寄存器)存储器操作数dst表示目的操作数(字/字节)寄存器操作数(不包括IP,CS段寄存器)存储器操作数段寄存器CSDSSSES存储器通用存储器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DIAL BL CL DLAL BL CL DLAH BH CH DHAH BH CH DHMOV指令数据传送方向16位8/16位8/16位16位8/16位 指令功能:将源操作数传送(复制)到目的操作数。传送方向:如下图所示。立即数使用使用MOVMOV指令时,应注意(一)指令时,应注意(一)源操作数和目的操作数类型必须匹配,即必须同为字节类型或字类型。以下哪些是错误的?MOVAL,BLMOVSI,2C9BHMOVAX,BLMOVAL,3824H使用使用MOVMOV指令时,应注意(二)指令时,应注意(二)通用寄存器与存储单元之间的数据传送时,传送数据类型由通用寄存器决定。例如:MOV1000H,ALMOV1000H,AXMOVBX,2000HMOVBH,2000H使用使用MOVMOV指令时,应注意(三指令时,应注意(三 )目的操作数不能为寄存器CS、IP和立即数。目的操作数和源操作数不能同时为存储器寻址,即MOV指令不允许在两个存储器之间传送数据,可改为用通用寄存器作桥梁。例如:MOVAR1,AR2(如何修改?)使用使用MOVMOV指令时,应注意(四)指令时,应注意(四)目的操作数和源操作数不能同时为段寄存器,可改为用通用寄存器作桥梁。例如:MOVES,DS(如何修改?)不能将一个立即数直接送到段寄存器中,可改为用通用寄存器作桥梁。例如:MOVES,1234H(如何修改?)使用使用MOVMOV指令时,应注意(五)指令时,应注意(五)立即数传送到存储单元时,当存储单元的类型不确定时,必须用byteptr或wordptr属性操作符来指定存储单元的类型。例如:movbyteptr2000h,12hmovwordptr2000h,1234hmov0010h,10?(2)堆栈操作指令 堆栈操作指令是用来完成压入和弹出堆栈操作的。80868088指令系统中提供了完成这两种操作的相应指令。压入堆栈指令 指令格式及操作:PUSH src ;(SP)(SP)-2,;(SP)+1:(SP)(src)src表示源操作数(字)寄存器操作数(包括段寄存器)存储器操作数 注意:堆栈指令的操作数只能是字操作数(即16位操作数),且不能是立即数。进栈操作(PUSH):先移后进 出栈操作(POP):先出后移 弹出堆栈指令 指令格式及操作:POP dst ;(dst)(SP)+1:(SP),;(SP)(SP)+2dst表示目的操作数(字)寄存器操作数(不包括IP,CS段寄存器)存储器操作数 (3)交换指令 指令格式及操作:XCHG opr1,opr2 ;(opr1)(opr2)注意:交换指令的两个操作数可以是寄存器操作数,存储器操作数,但都不能是立即数操作数,也不能同时为存储器操作数;寄存器操作数是指通用寄存器,不包括段寄存器。也就是说,交换指令是完成寄存器与寄存器、寄存器与存储器之间的数据互换功能。交换的两个数据可以是8位的,也可以是16位的。例如:例如:XCHG AX,BX 执行前:执行前:(AX)=1 ,(BX)=0FFFFH 执行后:执行后:(AX)=0FFFFH,(BX)=1。(4)查表指令指令格式及操作:XLAT;(AL)(BX)+(AL)XLAT指令是用来将一种字节代码转换成另一种字节代码。即将BX的内容(代码表格首址src_table)和AL的内容(表格偏移量)相加作为有效地址。并从中读出此内存表格地址单元的内容传送到AL累加器中。XLAT指令还可以有以下表示形式:XLAT src_tablesrc_table ;写操作数06H5BH77H7CH3FH71H0AHAL77H例例例例在内存的数据段有一张在内存的数据段有一张七段数码管编码表七段数码管编码表,其首地址,其首地址为为Hex_tableHex_table,如下图所示,为查找,如下图所示,为查找“A”“A”的七段数码管编码,的七段数码管编码,怎样编程实现?怎样编程实现?61000H61001H61002H6100AH6100BH6100FH60000HDS:60000HBX:1000HAX:000AH+6100AHHex_table+0Hex_table+1Hex_table+2Hex_table+AHex_table+BHex_table+F段码表EA6100AH77H段码表Hex_table=1000H数字段码数字段码03FH967H106HA77H25BHB7CH34FHC39H466HD5EH56DHE79H67DHF71H707H87FH七段数码管显示字形段码表:七段数码管显示字形段码表:返返返返 回回回回可用以下几条指令实现:可用以下几条指令实现:MOVBX,OFFSETHex_tableMOVBX,OFFSETHex_table;(BX)(BX)表首址表首址MOVAL,0AHMOVAL,0AH;(AL)(AL)十六进制数十六进制数A AXLATXLAT;查表转换;查表转换 2.输入/输出指令 输入输出指令可以分为两大类:一类是直接端口地址的输入输出指令;一类是通过DX寄存器间接端口地址的输入输出指令。(1)输入指令 直接寻址的输入指令 指令格式及操作:IN acc,port ;(acc)(port)其中:acc为8位或16位累加器AL/AX。port为8位端口地址,故可寻址256个端口。间接寻址的输入指令 指令格式及操作:IN acc,DX ;(acc)(DX)其中:acc为8位或16位累加器AL/AX。DX为16位间接寻址的端口地址寄存器,故可寻址64K个端口。(2)输出指令 直接寻址的输出指令 指令格式及操作:OUT port,acc;(port)(acc)间接寻址的输出指令 指令格式及操作:OUT DX,acc;(DX)(acc)3.地址传送指令(1)取有效地址指令指令格式:LEA reg16,mem此指令的功能是将存放源操作数的16位偏移地址(即有效地址EA)送到一个16位的通用寄存器中。即源操作数必须是一个存储器操作数,目的操作数必须是一个寄存器操作数。例如:LEA BX,bufferLEA AX,BPDILEA DX,betyBXSI 注意LEA指令和MOV指令的异同,比较下面两组指令:不同:LEA BX,buffer ;将存储器buffer的偏 移地址送到BX MOV BX,buffer ;将存储器buffer的内 容传送到BX相同:LEA BX,buffer MOV BX,OFFSET buffer 以上两条指令都是将存储器buffer的偏移地址送到BX。其中OFFSET buffer 表示存储器偏移地址。(2)地址指针装入DS指令指令格式:LDS reg16,mem32此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入DS,低字内容(一般为偏移地址)送入指令所指定的寄存器中。例如:LDS DI,2130H34H12H00H40H2130H2132HDMDIDS1234H4000H(3)地址指针装入ES指令指令格式:LES reg16,mem32此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入ES,低字内容(一般为偏移地址)送入指令所指定的寄存器中。例如:LES DI,2130H34H34H12H12H00H00H40H40H2130H2130H2132H2132HDMDMDIDIESES1234H4000H4.标志传送指令(1)取标志指令指令格式:LAHF(2)置标志指令指令格式:SAHFOFOF DFDF IFIF TFTF SFSF ZFZFAFAFPFPFCFCFFLAGFLAGAHAHLAHFLAHF和和SAHFSAHF指令操作示意图指令操作示意图(3)标志压入堆栈指令指令格式及操作:PUSHF ;(SP)(SP)-2,(SP)+1;(SP)(FLAG)(4)标志弹出堆栈指令指令格式及操作:POPF ;(FLAG)(SP)+1;(SP),(SP)(SP)+2 在使用这些传送类指令时应注意以下几点:目的操作数不能为立即数。目的操作数为段寄存器(CS不能作为目的操作数),源操作数不能为立即数。源操作数为非立即数时,两操作数之一必须为寄存器操作数。操作数类型必须一致。用BX、SI、DI来间接寻址时,默认的段寄存器为DS;用BP来间接寻址时,默认的段寄存器为SS。对于堆栈操作,源操作数不能为立即数;CS寄存器的值可以压入堆栈,但反之则不允许。数据交换指令的两个操作数任一都不能是立即数。换码指令的操作数是一种特殊的基址变址寻址方式,基址寄存器为BX,变址寄存器为AL。除了SAHF和POPF指令外,其余指令都不会影响标志。4.3.2算术运算类指令1.1.算术运算的数据类型算术运算的数据类型8086808680888088有丰富的算术运算指令,而且可以处有丰富的算术运算指令,而且可以处理理4 4种类型的数据,如下表所示:种类型的数据,如下表所示:数据类型数据类型数据范围数据范围运算运算可作累加器使用的寄存器或存储器可作累加器使用的寄存器或存储器二二进进制制8位无符号位无符号0255加减加减所有的通用寄存器或存储器所有的通用寄存器或存储器乘除乘除AX寄存器寄存器16位无符号位无符号065535加减加减所有的通用寄存器或存储器所有的通用寄存器或存储器乘除乘除AX、DX寄存器寄存器8位带符号位带符号128127加减加减所有的通用寄存器或存储器所有的通用寄存器或存储器乘除乘除AX寄存器寄存器16位带符号位带符号32768+32767加减加减所有的通用寄存器或存储器所有的通用寄存器或存储器乘除乘除AX、DX寄存器寄存器十十进进制制压缩型压缩型BCD099加减加减AX寄存器寄存器非压缩型非压缩型BCD09加减加减AX寄存器寄存器乘除乘除AX寄存器寄存器 2.2.算术运算指令对标志的影响算术运算指令对标志的影响 8086/8088的算术运算指令将运算结果的某的算术运算指令将运算结果的某些特性传送到些特性传送到6个标志上去,这些标志中的绝大个标志上去,这些标志中的绝大多数可由跟在算术运算指令后的条件转移指令进多数可由跟在算术运算指令后的条件转移指令进行测试,以改变程序的流程。因此,掌握指令结行测试,以改变程序的流程。因此,掌握指令结果对标志的影响对编程有着重要的作用。关于果对标志的影响对编程有着重要的作用。关于6个标志的含义已在第个标志的含义已在第3章阐述了,这里不在重复。章阐述了,这里不在重复。算术运算类指令共有算术运算类指令共有20条,包括加、减、乘、条,包括加、减、乘、除运算、符号扩展和十进制调整指令,除符号扩除运算、符号扩展和十进制调整指令,除符号扩展指令(展指令(CBW和和CWD)外,其余指令都影响标)外,其余指令都影响标志。志。3.3.二进制数运算指令二进制数运算指令 (1)1)加法指令加法指令 在微处理器中,没有专用的在微处理器中,没有专用的BCDBCD码运算指令,使用二码运算指令,使用二进制运算指令进行进制运算指令进行BCDBCD码数的运算,然后用码数的运算,然后用BCDBCD码运算调码运算调整指令进行调整,重新得到整指令进行调整,重新得到BCDBCD码的结果。码的结果。指令格式指令格式操作功能操作功能标志位影响标志位影响O S Z A P CADD dst,src(dst)(dst)+(src)ADC dst,src(dst)(dst)+(src)+(CF)INC dst(dst)(dst)+1 AAAASCIIASCII码调整指令码调整指令DAA压缩型压缩型BCDBCD调整指令调整指令 加法指令加法指令ADD 格式:格式:ADD OPRD1,OPRD2功能:功能:OPRD1 OPRD1+OPRD2OPRD1为任一通用寄存器或存储器操作数,可以是任意一个为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数。这通用寄存器,而且还可以是任意一个存储器操作数。这给程序的编写带来了很大的方便。给程序的编写带来了很大的方便。OPRD2为立即数,也为立即数,也可以是任意一个通用寄存器或存储器操作数。立即数只可以是任意一个通用寄存器或存储器操作数。立即数只能用于源操作数。能用于源操作数。例如:例如:例如:例如:ADD AL,25ADD AL,25ADD AL,25ADD AL,25ADD BX,0A0AHADD BX,0A0AHADD BX,0A0AHADD BX,0A0AHADD DX,DATABXADD DX,DATABXADD DX,DATABXADD DX,DATABXADD DI,CXADD DI,CXADD DI,CXADD DI,CXADD BETABX,AXADD BETABX,AXADD BETABX,AXADD BETABX,AXADD BYTE PTR ADD BYTE PTR ADD BYTE PTR ADD BYTE PTR BX,82BX,82BX,82BX,82ADD SI,NAMEADD SI,NAMEADD SI,NAMEADD SI,NAME加法举例加法举例设(设(AL)=0E3h,(,(BX)=5678H,分析下句是分析下句是否正确?否正确?Add AL,12Hadd AX,BXAdd AL,1234H Add AL,0A2HAdd 34H,12H带进位加法指令带进位加法指令ADC 指令格式:指令格式:ADC OPRD1,OPRD2OPRD1 OPRD1+OPRD2+CF其中其中OPRD1、OPRD2同指令同指令ADD中的含义。中的含义。ADCADC举例举例设(设(AL)=0E3h,(,(BL)=34HADD AL,12HADC BL,05H设(设(AL)=0E3h,(,(BL)=34HADD AL,32HADC BL,05H 加运算指令运用举例加运算指令运用举例:两个两个32位数相加,位数相加,DN1+DN2DSUM DN1 DW 4275H,3412H DN2 DW 12A5H,2F65H DSUM DW 0,0 MOV AX,DN1 ADD AX,DN2 MOV DSUM,AX;两位低字和两位低字和 DSUM MOV AX,DN1+2 ADC AX,DN2+2 MOV DSUM+2,AX;两位高字和再加进位值两位高字和再加进位值 DSUM+2 高精度数要占两个字,高高精度数要占两个字,高16位数存放在高地址字中,低位数存放在高地址字中,低16位数位数存放在相邻的低地址中。存放在相邻的低地址中。加加1指令指令INC 格式:格式:INC OPRDOPRD为寄存器或存储器操作数。这条指令的功为寄存器或存储器操作数。这条指令的功能是对给定的操作数加能是对给定的操作数加1后,再返回该操作数,后,再返回该操作数,即:即:OPRD OPRD+1,可以实现字节加,可以实现字节加1或字加或字加1。注:注:INC指令不影响指令不影响CF标志位。标志位。AAA指令的操作为:(非压缩型BCD码调整)如果如果(AL)0FH9(AL)0FH9 或(AF)(AF)1 1 则则(AL)(AL)(AL)(AL)06H06H(AH)(AH)(AH)(AH)1 1(AF)1(AF)1(CF)(AF)(CF)(AF)(AL)(AL)0FH)(AL)(AL)0FH)否则否则(AL)(AL)0FH)(AL)(AL)0FH)DAA指令的操作为:(压缩型BCD码调整)如果如果(AL)0FH9,(AF)(AL)0FH9,(AF)1 1 则则(AL)(AL)(AL)(AL)06H06H(AF)1(AF)1 如果如果(AL)9FH(AL)9FH 或(CF)(CF)1 1 则则(AL)(AL)(AL)(AL)60H60H(CF)1(CF)1例要求计算两个十进制数之和,例要求计算两个十进制数之和,7 78 8?。可?。可用以下指令实现:用以下指令实现:(非压缩型BCD码调整)MOV AX,0007HMOV A

    注意事项

    本文(【精品】寻址方式与指令系统(可编辑.ppt)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开