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

    指令系统及汇编语言.ppt

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

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

    指令系统及汇编语言.ppt

    第三章第三章 8086 8086指令系统及汇编语言指令系统及汇编语言 本章节知识点:1)8086微处理器的各种寻址方式2)数据传送指令3)算术运算指令4)逻辑运算与移位指令5)串操作指令6)转移指令7)8086汇编语言程序基本格式8)8086汇编语言程序设计方法本章学习的主要内容及要求本章学习的主要内容及要求1 1、掌握、掌握80868086汇编语言的各种寻址方式的特点、功能和汇编语言的各种寻址方式的特点、功能和基本格式;基本格式;2 2、掌握、掌握80868086汇编语言各指令功能,指令执行后对目的汇编语言各指令功能,指令执行后对目的操作数和标志位的影响;操作数和标志位的影响;3 3、掌握源操作数的物理地址的计算方法;、掌握源操作数的物理地址的计算方法;4 4、掌握、掌握80868086汇编语言各指令的语法格式;汇编语言各指令的语法格式;5 5、掌握汇编语言的程序设计中子程序、中断服务子程、掌握汇编语言的程序设计中子程序、中断服务子程序之间的差异;序之间的差异;6 6、掌握段定义中宏指令的使用方法;、掌握段定义中宏指令的使用方法;7 7、掌握应用汇编语言编写应用程序的基本设计方法;、掌握应用汇编语言编写应用程序的基本设计方法;本章难点:本章难点:1、段地址与源操作数之间的关系;2、各寻址方式之间的差异;3、指令执行后对标志位的影响;4、指令与控制信号之间的联系;5、汇编语言编写应用程序的基本设计方法;本章的学习方法:课前认真预习,课后请认真复习并请多看课本和参考书中的习题与练习题。问题的提出问题的提出:什么是软件?为什么计算机的运行必须依靠软件来完成?软件都有那些形式?什么是汇编语言?软件:能控制计算机完成指定工作软件:能控制计算机完成指定工作任务的二进制代码集,这个代码集任务的二进制代码集,这个代码集称为机器指令或机器语言。软件有称为机器指令或机器语言。软件有很多种形式,如常用的高级语言很多种形式,如常用的高级语言(C C、C+C+等),所有的高级语言编等),所有的高级语言编写的程序最终都必须被解译为机器写的程序最终都必须被解译为机器指令(有序的二进制代码集),因指令(有序的二进制代码集),因为计算机只能接受二进制代码。为计算机只能接受二进制代码。10100000000101110000010000001010101000100001100010H11H12H13H14H15H16HMOVAL,(n)nADDAL,OAH0AHMOV(n),ALn存储器地址号汇编语言二进制机器指令图3-1机器指令、汇编语言的区别汇编语言:是一种将机器语言按其特定的功能符号化,使其便于记忆和理解的计算机语言。名称助记符操作码说明立即数取入累加器MOVAL,n 1011000B0HnnH两字节指令,把第二个字节的立即数n送累加器AL。加立即数 ADDAL,n0000010004HnnH两字节指令,累加器AL中的内容与第二字节立即数相加,结果在AL中。还有单字节、3或4字节指令,字节越高,运行机器周期越大。每一条指令都有固定的操作码,计算机就是靠辩识操作码来实现各种不同的运算功能。(请参看实验指导书中的有关程序)指令的组成指令的组成操作码操作码:说明计算机要执行哪种操作,如传送、运算、说明计算机要执行哪种操作,如传送、运算、等操作,它是指令中不可缺少的组成部分等操作,它是指令中不可缺少的组成部分操作数操作数:是指令执行的参与者,即各种操作的对象是指令执行的参与者,即各种操作的对象有些指令不需要操作数,通常的指令都有一个或两个有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有操作数,也有个别指令有3 3个甚至个甚至4 4个操作数有些指令个操作数有些指令隐含隐含操作数。操作数。操作码操作码操作数操作数指令由操作码和操作数两部分组成例:MOVAX,CX;将CX的内容送入AX中。目的目的操作数操作数源源操作数操作数操作码操作码双操作数双操作数指令的助记符格式指令的助记符格式操作数操作数2 2,被称为,被称为源操作数源操作数srcsrc,它表示参与指令操作,它表示参与指令操作的一个对象的一个对象.操作数操作数1 1,被称为,被称为目的操作数目的操作数dstdst,它不仅可以作为指,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果令操作的一个对象,还可以用来存放指令操作的结果.分号后的内容是对指令的解释分号后的内容是对指令的解释 操作码操作码 操作数操作数1,操作数操作数2 ;注释;注释指令的操作码和操作数指令的操作码和操作数每种指令的每种指令的操作码操作码用一个助记符表示(指令功能的英文缩写)用一个助记符表示(指令功能的英文缩写)对应着机器指令的一个或多个二进制编码对应着机器指令的一个或多个二进制编码指令中的指令中的操作数操作数可以是一个具体的数值可以是一个具体的数值可以是存放数据的寄存器可以是存放数据的寄存器或指明存放数据的存储器地址或指明存放数据的存储器地址 操作码操作码 操作数操作数1,操作数操作数2 ;注释;注释寻址与寻址方式寻址与寻址方式指令系统设计了多种操作数的来源指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻找操作数的过程就是操作数的寻址寻址把寻找操作数的方式叫做操作数的把寻找操作数的方式叫做操作数的寻址方式寻址方式理解操作数的寻址方式是理解指令功能的前提理解操作数的寻址方式是理解指令功能的前提操作数采取哪一种寻址方式操作数采取哪一种寻址方式1)会影响处理器执行指令的速度和效率2)对程序设计也很重要3.1 8086/80883.1 8086/8088的寻址方式的寻址方式操作数的来源操作数的来源指指 令令寄寄 存存 器器内内 存存I/O设备或端口设备或端口操作数操作数指令中的操作数指令中的操作数直接存放在机器代码中,紧跟在操作直接存放在机器代码中,紧跟在操作码之后码之后(操作数作为指令的一部分存放在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)的主存单元中),这种操作数被称为这种操作数被称为立即数立即数immimm。可以是8位数值(00HFFH)也可以是16位数值(0000HFFFFH)立即数寻址方式常用来给立即数寻址方式常用来给寄存器寄存器赋值赋值MOV AX,0102HMOV AX,0102H;AX0102HAX0102HMOV AL,02HMOV AL,02H;AL02HAL02H3.1.1 3.1.1 操作数的寻址方式操作数的寻址方式1、立即寻址、立即寻址 格式格式:操作码操作码 数字表达式数字表达式MOVAX,F58AH;(字操作)F58AH称为立即数助记符目的源(16位操作数)H表示为十六进制数dstsrc完成的操作:AXF58AHMOVAH,F5H(字节操作)F5H称为立即数(8位操作数)MOVAL,8AH(字节操作)8AH称为立即数完成的操作:AHF5H,AL8AH立即寻址操作过程示意如图3-2 3456H3457HAL=8A 字寻址方式存储器CS段8AF5操作码AL=8A AH=F5存储器CS段8AF5操作码AH=F5操作码字节寻址方式代码段内取数注意取数据的地址顺序MOV AX,F58AHMOV AH,F5HMOV AL,8AH指令对立即数格式的要求指令对立即数格式的要求8086/8088指令对立即数的格式有三种:1)立即数可以是16进制的数 MOV AL,57H2)立即数可以是10进制的数,但指令运行后CPU自动把10进制数转换为16进制数,然后完成给定功能的操作。MOV AL,57;指令执行后将AL 39H 3)立即数可以是2进制的数 MOV AL,01010111B ;指令执行后将AL 57H 为十进制数时,数后不加H,2进制数时,数后加B,CPU以此来辨别是那种类型的数据。2 2、直接寻址方式直接寻址方式直接寻址方式的有效地址在指令中直接给出,直接寻址方式的有效地址在指令中直接给出,默认的默认的段地址在段地址在DSDS段寄存器段寄存器,可使用,可使用段超越前缀段超越前缀改变段。改变段。中括号包含有效地址,表达存储单元的内容中括号包含有效地址,表达存储单元的内容MOV AX,2000H;AXDS:2000HMOV AX,ES:2000H;AXES:2000HMOV AX,BUFFER;BUFFER:符号地址:符号地址指令格式指令格式:操作码操作码 寄存器(寄存器(16位)位),地址表达式地址表达式直接寻址方式的操作数的16位偏移地址(有直接地址值和标号两种形式)直接包含在指令中,它与操作码一起存放在代码段中的操作码之后。段地址DS隐含,也可指定其它段,必须需在指令中指明。存储器物理地址地址为:存储器物理地址地址为:DSDS:偏移地址:偏移地址 或或 ES ES:偏移地址。:偏移地址。例:MOVAX,ES:2000H(读数据读数据,RD线为低电平线为低电平)将ES:2000H单元内容送入AX。例:MOVAX,LABLE或MOVAX,LABEL将标号为LABLE(存放操作数单元的符号地址),即DS:LABLE中的内容送入AX。LABLE必须在段定义中指明。例:MOVAX,(2000H);字操作 其过程如图3.3所示。指令中的16位段内偏移地址的低字节在前,高字节在后。MOVAL,(2000H);字节操作 MOVAH,(2001H);字节操作 此两条指令的功能与字操作指令的功能相同!16位段内偏移地址直接包含在指令中图3-3直接寻址存储器DS段8AF5XXAL=8A AH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式存储器DS段8AF5XXAL=8A AH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式操作码0120MOV AX,(2000H)MOV AL,(2000H)MOV AH,(2001H)注意数据段与代码段的用法!3、寄存器寻址方式、寄存器寻址方式操作数存放在操作数存放在CPUCPU的内部寄存器的内部寄存器regreg中中1 1)8 8 位寄存器位寄存器r8r8:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL2 2)16 16 位寄存器位寄存器r16r16:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP3 3)4 4个段寄存器个段寄存器segseg:CSCS、DSDS、SSSS、ESES寄存器名表示其内容(操作数)寄存器名表示其内容(操作数)MOV AX,BX;AXBX格式格式:操作码操作码 寄存器寄存器,寄存器寄存器例如:MOV AX,BX;AX BX MOV BX,AX;BX AX MOV AL,BH;AL BH MOV AH,AL;AH AL MOV DS,AX;DS AX MOV SI,AX;SI AX注意注意:目的和源寄存器的目的和源寄存器的 位数必须相同,位数必须相同,不同不同 位数寄位数寄存器之间不能传送数据处理存器之间不能传送数据处理 如:如:MOV BX MOV BX,AHAH如果要将数据送入段寄存器(CS、DS、ES、SS),必须先将这个数送入一个非段寄存器,然后在送到段寄存器段寄存器写入方法:MOV CS,3000H ;错!MOV AX,3000H;(该指令不影响RD和WR控制线均为高电;平)MOV CS,AX ;正确(在使用中不允许随便修改CS的内容!)MOV SS,1000H ;处理错!MOV DI,1000H MOV SS,DI ;正确,(该指令不影响RD和WR控制线均为高电;平)4 4、寄存器间接寻址方式寄存器间接寻址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BXBX、BPBP或变址寄存器或变址寄存器SISI、DIDI中;中;对于对于BXBX、SISI、DIDI,默认的默认的段地址在段地址在DSDS段寄存器,段寄存器,可使用段超越前缀改变;可使用段超越前缀改变;对于对于BPBP,默认的默认的段地址在段地址在SSSS段寄存器,可使用段超越前缀改变段寄存器,可使用段超越前缀改变MOV AX,BX;AXDS:BXMOV AX,ES:BX;AXES:BXMOV AH,DS:BPMOV ES:DI,AL格式格式:操作码操作码 寄存器寄存器,(寄存器寄存器)注意注意:寄存器间接寻址要用方括号或圆号括起来,以便寄存器间接寻址要用方括号或圆号括起来,以便与寄存器操作数相区别。与寄存器操作数相区别。例:MOVAX,BX;将由BX决定的存储单元的内容送到AX寄存器,要求对要求对BX事前定义事前定义。间接寻址间接寻址AX0000000100020003BBAATAB:AH AL AA BB数据段数据段0001HBX=操作数在存储器中,指令中寄存器内容作为操作数所在操作数在存储器中,指令中寄存器内容作为操作数所在单元的有效地址。单元的有效地址。(BX)(SI)(DI)(BP)段寄存器为段寄存器为DS段寄存器为段寄存器为SS物理地址计算方法:物理地址计算方法:物理地址物理地址 =(DS)16 +(BX)或()或(SI)或()或(DI)物理地址物理地址 =(SS)16 +(BP)有效地址有效地址=例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,DI;(AX)(DI)物理地址=(DS)16+(DI)=2100H 16+2000H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,将23001H单元内容送AH中。指令:MOV AX,DI 为字操作(16位操作)例:已知:(DS)=2100H,(DI)=2000H指令:MOV AL,DI;(AL)(DI)物理地址=(DS)16+(DI)=2100H16+2000H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,指令:MOV AL,DI;字节操作(8位操作)例:MOV AX,SI;SI中的内容为要取数的偏移地址,假设在执行本条指令前SI=1000H,DS=2000H其过程如图3-4(a)所示。图3-4(A)寄存器间接寻址.21000H21001HAHAL+100021000DS 2000.SIXXYY数据段数据段XXYY操作码操作码 代码段代码段注意:程序(指令在代码段),要操作的数据在数据段!图3-4(B)寄存器间接寻址例:MOVAX,BP;BP中的内容为要取数的偏移地址假设在执行本条指令前BP=2000H,SS=3000H其过程如图3-4(b)所示。注意:是在堆栈段取数据注意:程序(指令)在代码段,要操作的数据在堆栈段!操作数.32000H32001HAHAL+200032000SS 3000.BP堆栈段堆栈段代码段代码段5 5、寄存器相对寻址方式寄存器相对寻址方式有效地址有效地址是寄存器内容与有符号是寄存器内容与有符号8 8位或位或1616位位移量之位位移量之和,寄存器可以是和,寄存器可以是BXBX、BPBP或或SISI、DIDI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位偏移量位偏移量段地址对应段地址对应BX/SI/DIBX/SI/DI寄存器寄存器默认是默认是DSDS,对应,对应BPBP寄存器寄存器默认是默认是SSSS;可用段超越前缀改变;可用段超越前缀改变MOV AX,SI+06H;AXDS:SI+06HMOV AX,06HSI;AXDS:SI+06H格式格式:操作码操作码 寄存器,相对值寄存器,相对值DISP+基址或变址寄存器基址或变址寄存器 操作数在存储器内,指令中寄存器内容与指令指定的位移量(相对值DISP)之和作为操作数所在单元的有效地址。物理地址=(DS)16+(BX)+DISP;(SI)、(DI)相同。物理地址=(SS)16+(BP)+DISPDISP可以是16位,也可以是8位,DISP是一个数值的代号!有效地址有效地址=段寄存器为段寄存器为DS段寄存器为段寄存器为SS+(BX)(SI)(DI)(BP)DISPDISPDISP DISP例:如果(DS)=3000H,(SI)=2000H,COUNT=3000H 执行指令 MOV AX,CONUTSI,求出此种寻址方式对应的有效地址和物理地址。有效地址=(SI)+(COUNT)=2000H+3000H=5000H物理地址=(DS)*16+5000H=30000H+5000H=35000H 例:MOV AX,DISPSI;DISP为相对地址偏移量或写为:MOV AX,10SI ;DISP为地址符号 MOV AX,SI10H ;DISP DB 10H MOV AX,SI+10H ;DISP可以为有符号的数 其过程如图4.5所示。图3-5寄存器相对寻址例:MOV AX,DISPSI操作数00H20H.33000H33001HAHAL100033000DS30002000SIDISP+6 6、基址变址寻址方式基址变址寻址方式有效地址有效地址由基址寄存器(由基址寄存器(BXBX或或BPBP)的内容加上变址)的内容加上变址寄存器(寄存器(SISI或或DIDI)的内容构成:)的内容构成:有效地址有效地址BX/BPBX/BPSI/DISI/DI段地址对应段地址对应BXBX基址寄存器基址寄存器默认是默认是DSDS,对应,对应BPBP基址寄基址寄存器存器默认是默认是SSSS;可用段超越前缀改变;可用段超越前缀改变MOV AX,BX+SI;AXDS:BX+SIMOV AX,BXSI;AXDS:BX+SI格式格式:操作码操作码 寄存器,(基址寄存器)寄存器,(基址寄存器)+(变址寄存器)(变址寄存器)物理地址物理地址=(DS)16 +(BX)+(SI)或()或(DI)物理地址物理地址=(SS)16 +(BP)+(SI)或()或(DI)例:MOVAX,BX+DI或MOVAX,BXDIDS:(BX)+(DI)存储单元内容(字字)送AX。例:MOVAX,BP+SI或MOVAX,BPSISS:(BP)+(SI)存储单元内容(字)(字)送AX。(BX)(BP)有效地址有效地址=+(SI)(DI)图3-6 基址、变址寻址例:MOV AX,BXSI 其过程如图所示。完成的操作:AX=BX+SI+DS*16 AH=BX+SI+DS*16 AL=BX+SI+DS*16+1 代码段操作数.33000H33001HAHAL200033000DS30001000SIBX+.数据段例:如果例:如果(DS)=2100H,(BX)=0158H,(DI)=10A5H,(DS)=2100H,(BX)=0158H,(DI)=10A5H,则则执行指令执行指令 MOV AL MOV AL,BXDIBXDI有效地址:有效地址:EA=EA=(BXBX)+(DIDI)=0158H+10A5H=11FDH=0158H+10A5H=11FDH 物理地址:(物理地址:(DSDS)*16+*16+有效地址有效地址=21000H+11FDH=221FDH=21000H+11FDH=221FDH执行结果:将执行结果:将221FDH221FDH单元内容送入寄存器单元内容送入寄存器ALAL中。中。7 7、相对基址变址寻址方式相对基址变址寻址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BPBX/BP)、变址寄存器)、变址寄存器(SI/DISI/DI)与一个)与一个8 8位或位或1616位位移量之和:位位移量之和:有效地址有效地址BX/BPBX/BPSI/DISI/DI8/168/16位偏移量位偏移量段地址对应段地址对应BXBX基址寄存器基址寄存器默认是默认是DSDS,对应,对应BPBP基址寄存基址寄存器器默认是默认是SSSS;可用段超越前缀改变;可用段超越前缀改变MOV AX,BX+DI+6;AXDS:BX+DI+6MOV AX,6BX+DIMOV AX,6BXDI格式格式:操作码操作码 寄存器,寄存器,DISP+DISP+(基址寄存器)(基址寄存器)+(变址寄存器)(变址寄存器)相对基址变址寻址方式操作数的地址是由基址、变址方式得到的地址再加上由指令指明的8位或16位的相对偏移量而得到的。操作数在存储器内,指令将基址寄存器(BX或BP)与变址寄存器(SI或DI)的内容之和再加上位移量(8位或16位),得到操作数所在单元的有效地址。(BX)(SI)DISP8(BP)(DI)DISP16有效地址有效地址=+例:已知:(DS)=3000H,(BX)=2000H,(SI)=1000H,DISP=0250H 指令:MOV AX,DISP BXSI 或 MOV AX,DISP BX+SI 或 MOV AX,DISP+BX+SI有效地址:DISP+(BX)+(SI)=0250H+2000H+0100H=3250H物理地址:(DS)*16+有效地址=30000H+3250H=33250H执行结果:将33250H单元内容送AL,33251H内容送AH。MOV AX,DISPBXS1完成的操作:AX=BX+SI+DS*16+DISP AH=BX+SI+DS*16+DISPAL=BX+SI+DS*16+DISP+1 代码段数据段举例举例若(若(BXBX)0313H 0313H,(,(SISI)1123H1123H,(,(DIDI)0606H0606H,(DSDS)2000H 2000H,(,(SSSS)6800H 6800H,(,(BPBP)0100H 0100H。指出下列指令中画线的操作数的寻址方式,如果为存储指出下列指令中画线的操作数的寻址方式,如果为存储器操作数,请计算该操作数的有效地址与物理地址。器操作数,请计算该操作数的有效地址与物理地址。MOVAX,1117H MOVBX,SP MOVDX,BXEAEA0313H0313H,PAPA20000H+0313H20000H+0313H20313H20313H:立即寻址立即寻址:寄存器寻址寄存器寻址:寄存器间接寻址寄存器间接寻址举例举例若(若(BXBX)0313H 0313H,(,(SISI)1123H1123H,(,(DIDI)0606H0606H,(DSDS)2000H 2000H,(,(SSSS)6800H 6800H,(,(BPBP)0100H 0100H。指出下列指令中画线的操作数的寻址方式,如果为存储指出下列指令中画线的操作数的寻址方式,如果为存储器操作数,请计算该操作数的有效地址与物理地址。器操作数,请计算该操作数的有效地址与物理地址。MOV AX MOV AX,100HSI100HSIEAEAEA0100H+100H0100H+100H0100H+100H0200H0200H0200H,PAPAPA68000H+0200H68000H+0200H68000H+0200H68200H68200H68200HEAEAEA1123H+100H1123H+100H1123H+100H1223H1223H1223H,PAPAPA20000H+1223H20000H+1223H20000H+1223H21223H21223H21223H MOV AX MOV AX,BP100HBP100H:寄存器相对寻址寄存器相对寻址:寄存器相对寻址寄存器相对寻址举例举例若(若(BXBX)0313H 0313H,(,(SISI)1123H1123H,(,(DIDI)0606H0606H,(DSDS)2000H 2000H,(,(SSSS)6800H 6800H,(,(BPBP)0100H 0100H。指出下列指令中画线的操作数的寻址方式,如果为存储指出下列指令中画线的操作数的寻址方式,如果为存储器操作数,请计算该操作数的有效地址与物理地址。器操作数,请计算该操作数的有效地址与物理地址。MOV AX MOV AX,BP+SI+100HBP+SI+100H EAEAEA0313H+1123H0313H+1123H0313H+1123H1436H1436H1436H,PAPAPA20000H+1436H20000H+1436H20000H+1436H21436H21436H21436HEAEAEA0100H+1123H+100H0100H+1123H+100H0100H+1123H+100H1323H1323H1323H,PAPAPA68000H+1323H68000H+1323H68000H+1323H69323H69323H69323H MOV AL MOV AL,BXSIBXSI:基址变址寻址基址变址寻址:相对基址加变址相对基址加变址寻址寻址当操作数在内存单元时,系统根据隐含约定,自动将当操作数在内存单元时,系统根据隐含约定,自动将寄存器寄存器DSDS或或SSSS的值作为段地址的值作为段地址。然而,当操作数段地址不在隐含的段寄存器时,可以使用段超越前缀取代其隐含约定。段超越前缀形式为(:)段寄存器名(:)例如:MOV AX,ES:BP ;段地址在ESMOV AX,SS:BX SI ;段地址在SS注意:不是所有的段都可做段超越前缀段超越段超越 1段内相对寻址 在段内相对寻址方式中,指令应指明一个8位或16位的相对地址位移量DISP(有正负符号,为负时用补码表示)。此时,转移地址应该是代码段寄存器CS内容加上指令指针IP内容,再加上相对地址位移量DISP。例:JMP DISP 其过程如图3-8所示。3.1.2 3.1.2 转移地址的寻址方式转移地址的寻址方式JMPDISP其过程如图3-8所示。图3-8段内相对寻址DISP=50H操作码.50H.2000:1050H+5021050CS20001000IP操作码2000:1000H2000:0FFFH注意:这个过程都在代码段内!注意:这个过程都在代码段内!也可以是16位如为:1000H1000H2000H 2段内间接寻址 在段内间接寻址方式中,转移地址的段内偏移地址要么存放在一个16位的寄存器中,要么存放在存贮器的两个相邻单元中。存放偏移地址的寄存器和存贮器的地址将按指令码中规定的寻址方式给出。此时,寻址所得到的不是操作数,而是转移地址。例:JMP CX;CX的内容为转移地址的段内偏移量 注意:必须是在段内转移!其过程如图3-9所示。JMPWORDPTRCXWORDPTR是寻址一个字的标记,指令中必须加上图3-9段内间接寻址操作码.2000:4000H+400024000CS2000操作码2000:0FFFHCX(新IP)CX的内容为新的IP值,程序转移到新的入口处,在指令中CX的内容为4000H,CX值不能超出该段的区域 3 3段间直接寻址段间直接寻址 在段间直接寻址方式中,指令码中将直接给出16位的段地址和16位的段内偏移地址。例:JMP FAR PTR ADD1;ADD1ADD1为转移地址的标号为转移地址的标号 FAR表示转移距离大于32K,或是不同段之间转移。PTRPTR用用来来建建立立一一个个符符号号地地址址,但但它它本本身身并并不不分分配配存存储储器器,只只是是用用来来对对已已分分配配的的存存储储地地址址赋赋予予另另一一种种属属性性,使使该地址具有另一种类型。该地址具有另一种类型。在执行段间直接寻址指令时,指令操作码后的第二个字将赋予代码段寄存器CS,第一个字将赋予指令指针寄存器IP。最后CS内容和IP内容相加则得转移地址,如图3-10所示。ADD1的值由计算机自动给出图3-10段间直接寻址操作码偏移量低字节00H偏移量高字节30H段地址低字节00H段地址高字节40H.操作码.43000H+400043000CS3000IP转移转移新位置新位置段段1段段2ADD1ADDRADDR4段间间接寻址 段间间接寻址方式和段内间接寻址相似。但是,由于确定转移地址需要32位信息,因此段间间接寻址只适用于存贮器寻址方式。用这种寻址方式可计算出存放转移地址的存贮单元的首地址,与此相邻的4个单元中,前两个单元存放16位的段内偏移地址,而后两单元存放的是16位的段地址,如图3-11所示。例:JMP DWORD PTRBPDI在这里是32位,两个字,所以要加DWORD,如为BP寄存器,要在SS段中取数。图3-11 段间间接寻址执行该指令之前:SS=3000HBP=1000HDI=2000H执行该指令之后有了新的CS和IP的值注意:如无BP,则在DS段内求存放转移地址的存贮单元的首地址偏移量低字节00H偏移量高字节20H段地址低字节00H段地址高字节80H.操作码.82000H操作码.33000H+800082000CS2000IP330002000+DI1000BP3000SS本节小结:1)寻址中的操作数(二、十、十六进制)的形式。2)源操作数与目的操作数的位数必须一致。3)立即数与地址的区别。4)操作数物理地址的计算,如有BP寄存时应在SS段内取数。5)变址寻址和相对寻址时,偏移量的计算方法。6)直接寻址和间接寻址、相对寻址之间的差别。7)各种指令的书写格式和要求。1、“8086执行了一个总线周期执行了一个总线周期”是指是指8086做了哪些可能的操作?基本总线做了哪些可能的操作?基本总线周期如何组成?在一个典型的读存储器总线周期中,地址信号、周期如何组成?在一个典型的读存储器总线周期中,地址信号、ALE信号、信号、RD信号、数据信号分别在何时产生?信号、数据信号分别在何时产生?(画出时序波形图并给予解释画出时序波形图并给予解释)3、请写出下列指令单独执行后,有关寄存器及存储单元的内容。、请写出下列指令单独执行后,有关寄存器及存储单元的内容。假设指令执行前假设指令执行前(DS)=(ES)=3000H,(AX)=2000H,(BX)=1200H,(SI)=2,(31200H)=2400H,(31202H)=90F7H(1)ADDES:BX,900H(2)MOVAX,BX+SI4、给定一个存放数据的内存单元的偏移地址是、给定一个存放数据的内存单元的偏移地址是20C0H,(,(DS)=C00EH,求出该内存单元的物理地址。求出该内存单元的物理地址。5、8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?程序?6、指出下列指令的错误、指出下列指令的错误:(1)MOV AH,BX (2)MOV SI,BX (3)MOV AX,SIDI(4)MOV AX,BXBP (5)MOV BX,ES:AX(6)MOV CS,AX (7)MOV DS,2000H3.2 指令系统指令系统8086/8088的指令系统大致可分为7种类型:1、数据传送指令2、算数运算指令3、逻辑运算和移位指令4、串操作指令5、程序控制指令6、处理器控制指令7、输入/输出指令 数据传送指令是最简单、最常用的一类指令,它是负责把数据、地址、或立即数传送到寄存器或存储单元中。1 1MOVMOV指令指令 MOVMOV指令的格式为:指令的格式为:MOV DST MOV DST,SRC SRC功能:将源操作数src的内容复制到目的操作数dest中,结果目的操作数的内容等于源操作数的内容,源操作数src的内容不变。对标志位的影响对标志位的影响:无语法格式:MOV reg/mem/seg MOV reg/mem/seg,reg/mem/seg/immreg/mem/seg/immReg:寄存器,mem:存储器,seg:段寄存器,imm立即数 3.2.13.2.1数据传送指令数据传送指令数据传送是计算机中最基本、最重要的一种操作数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位除标志寄存器传送指令外,均不影响标志位图3-12MOV指令的数据传送方向段寄存器CS,DS,SS,ES通用寄存器AX,BX,CX,DX,BP,SP,SI,DIAH,AL,BH,BL,CH,CL,DH,DL立即数存贮器通用寄存器说明:(1)双操作数指令不允许两个操作数同时为段寄存器或存储器操作数。MOV seg,seg ;错误 MOV mem,mem ;错误(2)立即数不能传送到段寄存器中。MOV seg,imm ;错误(3)目的操作数不允许使用CS段寄存器。(4)destdest与与srcsrc必须类型匹配,即同时是字节或字类型。必须类型匹配,即同时是字节或字类型。以下几点要注意:寄存器具有明确的类型,例如,AL、AX分别为字节、字类型。各种数据传送指令例举如下:在CPU各内部寄存器之间传送数据。MOVAL,BL;8位数据传送指令(1个字节)ALBLMOVAX,DX;16位数据传送指令(1个字)AXDX立即数传送至CPU的通用寄存器(即AX、BX、CX、DX、BP、SP、SI、DI)。MOVCL,4;8位数据传送(1个字节)CL=04MOVAX,03FFH;16位数据传送(1个字)AX03FFH注意注意:立即数如为立即数如为10进制形式,则进制形式,则8086自动转换为自动转换为16进制进制 CPU内部寄存器(除了CS和IP以外)与存存贮贮器器(所有寻址方式)之间的数据传送,可以传送一个字节也可以传送一个字。()或 为其内容的地址在CPU通用寄存器与存贮器存贮器之间传送数据:MOV DI,CX CPU寄存器与存贮器之间传送数据:MOV AX,D1SIBX MOV BPD1,AX ;D1都为数值使用中需要注意的是:使用中需要注意的是:MOV指令不能在两个存贮器单元之间进行数据直接传送。如:如:MOV MOV(2000H2000H),(),(3000H3000H)或)或 MOV MOV(AXAX),(),(BXBX)MOV指令不能在两个段寄存器之间进行数据直接传送。如:如:MOV DSMOV DS,SSSS 立即数不能直接传送给段寄存器。如:如:MOV DSMOV DS,2000H2000H 目的操作数不能为CS、IP。如:如:MOV CSMOV CS,AX AX,MOV IP MOV IP,AX AX(会改变指令执行的顺序)(会改变指令执行的顺序)MOV指令不影响标志位MOVMOV指令的实质是:把指令的实质是:把SRCSRC的内容复制到的内容复制到DSTDST中,执行操作后中,执行操作后 SRC SRC的内容不变!的内容不变!其中,的传送可用通用寄存器作为中介,用两条传送指令完成。例如,为了将在同一个段内的偏移地址为AREA1的数据传送到偏移地址为AREA2单元中去,可执行以下两条传送指令:MOV AL,AREA1 MOV AREA2,AL 例如,为了将立即数传送给DS,可执行以下两条传送指令:MOV AX,1000H MOV DS,AX在在这这两两个个实实例例中中,AREA1AREA1和和 AREA2AREA2在在段段定定义义时时已已经经给给了了明明确确的的定义!定义!例:错误的MOV 指令如下所示:MOV AX,BL ;类型不匹配(数据长度不一致)MOV DS,1000H ;不允许立即数送段寄存器MOV BX,SI ;不允许内存操作数之间传送MOV ES,CS ;不允许段寄存器之间传送MOV CS,AX ;指令存在,但不能执行指令存在,但不能执行,CS不能作为目的操作数 例如,将以AREA1为首地址的100个字节数据搬移到以AREA2为首地址的内存中,若AREA1和AREA2都在当前数据段中,可以用带有循环控制的数据传送程序来实现。程序如下:MOV SI,OFFSETAREA1;(OFFSET是取地址 MOV DI,OFFSETAREA2;偏移量,必须加上)MOV CX,100 AGAIN:MOV AL,SI;RD为低 MOV DI,AL ;WR为低 INC SI INC DI DEC CX JNZ AGAIN XXYYXXYYAREA2AREA1非法指令非法指令无法确定是字节还是字操作无法确定是字节还是字操作当无法通过任一个操作数确定是操作类型时,需要利用当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明汇编语言的操作符显式指明MOV BX+SI,255MOV BX+SI,255;非法指令非法指令,

    注意事项

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

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




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

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

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

    收起
    展开