《第3章 8086的寻址方式.ppt》由会员分享,可在线阅读,更多相关《第3章 8086的寻址方式.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 8086指令的寻址方式3.1 8086的寻址方式从从8086的的机器代码格式机器代码格式入手,论述:入手,论述:n立即数寻址方式立即数寻址方式n寄存器寻址方式寄存器寻址方式n存储器寻址方式存储器寻址方式进进而而熟熟悉悉8086汇汇编编语语言言指指令令格格式式,尤尤其其是是其其中中操操作作数数的的表表达达方方法法;为为展展开开8086指指令令系系统统做好准备做好准备 建议采用调试程序建议采用调试程序DEBUG进行实践进行实践第3章 8086指令的寻址方式调试程序DEBUGDEBUGDEBUG是是常常用用的的汇汇编编语语言言级级调调试试工工具具,为为汇汇编编语语言言程程序序员员提提供供了了
2、分分析析指指令令、跟踪程序的有效手段跟踪程序的有效手段常用命令:常用命令:A A 汇编汇编U U 反汇编反汇编T T 单步执行单步执行 G G 断点执行断点执行D D 数据显示数据显示 R R 寄存器寄存器第3章 8086指令的寻址方式指令的组成指令由操作码和操作数两部分组成指令由操作码和操作数两部分组成操操作作码码说说明明计计算算机机要要执执行行哪哪种种操操作作,如如传传送送、运运算算、移移位、跳转等操作,它是指令中不可缺少的组成部分位、跳转等操作,它是指令中不可缺少的组成部分操作数操作数是指令执行的参与者,即各种操作的对象是指令执行的参与者,即各种操作的对象有有些些指指令令不不需需要要操操
3、作作数数,通通常常的的指指令令都都有有一一个个或或两两个个操操作数,也有个别指令有作数,也有个别指令有3个甚至个甚至4个操作数个操作数操作码操作码操作数操作数第3章 8086指令的寻址方式指令的操作码和操作数每种指令的每种指令的操作码操作码:n用用一一个个唯唯一一的的助助记记符符表表示示(指指令令功功能能的的英英文文缩缩写)写)n对应着机器指令的一个二进制编码对应着机器指令的一个二进制编码指令中的指令中的操作数操作数:n可以是一个具体的数值可以是一个具体的数值n可以是存放数据的寄存器可以是存放数据的寄存器n或指明数据在主存位置的存储器地址或指明数据在主存位置的存储器地址第3章 8086指令的寻
4、址方式寻址方式指令系统设计了多种操作数的来源指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻址寻找操作数的过程就是操作数的寻址操操作作数数采采取取哪哪一一种种寻寻址址方方式式,会会影影响响机机器器运运行的速度和效率行的速度和效率 如何寻址一个操作数对程序设计很重要如何寻址一个操作数对程序设计很重要第3章 8086指令的寻址方式给出立即寻址方式需要的数值本身给出立即寻址方式需要的数值本身给出某些寻址方式需要的对基地址的偏移量给出某些寻址方式需要的对基地址的偏移量3.1.1 8086的机器代码格式表明采用的寻址方式(表表明采用的寻址方式(表1.7)1/2字节字节0/1字节字节0/1/2
5、字节字节0/1/2字节字节操作码操作码mod reg r/m位移量位移量立即数立即数操作数操作数第3章 8086指令的寻址方式标准机器代码示例mov ax,BP+0;机器代码是机器代码是 8B 46 00前一个字节前一个字节8B是操作码(含是操作码(含w1表示字操作)表示字操作)中中间间一一个个字字节节46(01 000 110)是是“mod reg r/m”字节字节nreg000表示目的操作数为表示目的操作数为AXnmod01和和r/m110表示源操作数为表示源操作数为BP+D8最后一个字节就是最后一个字节就是8位位移量位位移量D8001/2字节字节0/1字节字节0/1/2字节字节0/1/2
6、字节字节操作码操作码mod reg r/m位移量位移量立即数立即数第3章 8086指令的寻址方式其它机器代码形式mov al,05;机器代码是机器代码是B0 05前前一一个个字字节节B0是是操操作作码码(含含一一个个操操作作数数AL),后后一个字节一个字节05是立即数是立即数mov ax,0102H;机器代码是机器代码是B8 02 01前前一一个个字字节节B8是是操操作作码码(含含一一个个操操作作数数AX),后后两个字节两个字节02 01是是16位立即数(低字节位立即数(低字节02在低地址)在低地址)操作码操作码操作数操作数第3章 8086指令的寻址方式指令的助记符格式操作码操作码 操作数操作
7、数1 1,操作数操作数2 2;注释注释操操作作数数2 2,称称为为源源操操作作数数 srcsrc,它它表表示示参参与与指指令令操操作的一个对象作的一个对象操操作作数数1 1,称称为为目目的的操操作作数数 destdest,它它不不仅仅可可以以作作为为指指令令操操作作的的一一个个对对象象,还还可可以以用用来来存存放放指指令令操操作作的的结果结果分号后的内容是对指令的解释分号后的内容是对指令的解释示例示例示例示例第3章 8086指令的寻址方式立即寻址立即寻址 MOV AX,3069H寄存器寻址寄存器寻址 MOV AL,BH直接寻址直接寻址 MOV AX,2000H寄存器间接寻址寄存器间接寻址 MO
8、V AX,BX 寄存器相对寻址寄存器相对寻址 MOV AX,COUNT SI 基址变址寻址基址变址寻址 MOV AX,BP DI相对基址变址寻址相对基址变址寻址 MOV AX,MASK BX SI第3章 8086指令的寻址方式传送指令MOV的格式MOVMOV destdest,srcsrc;destsrcdestsrc MOVMOV指指令令的的功功能能是是将将源源操操作作数数srcsrc传传送送至至目目的的操作数操作数destdest,例如:例如:MOV AL,05HMOV AL,05H;AL05HAL05HMOV BX,AXMOV BX,AX;BXAXBXAXMOV AX,SIMOV AX,
9、SI;AXDS:SIAXDS:SIMOV AX,BP+06HMOV AX,BP+06H;AXSS:BP+06HAXSS:BP+06HMOV AX,BX+SIMOV AX,BX+SI;AXDS:BX+SIAXDS:BX+SI演示演示演示演示第3章 8086指令的寻址方式3.1.2 立即数寻址方式指指令令中中的的操操作作数数直直接接存存放放在在机机器器代代码码中中,紧紧跟跟在在操操作作码码之之后后(操操作作数数作作为为指指令令的的一一部部分分存存放放在在操操作作码码之后的主存单元中)之后的主存单元中)这种操作数被称为立即数这种操作数被称为立即数immn它可以是它可以是8位数值位数值i8(00HFF
10、H)n也可以是也可以是16位数值位数值i16(0000HFFFFH)立即数寻址方式常用来给寄存器赋值立即数寻址方式常用来给寄存器赋值第3章 8086指令的寻址方式立即数寻址指令MOV AL,05H;AL05HMOV AX,0102H;AX0102H立即寻址立即寻址立即寻址立即寻址第3章 8086指令的寻址方式3.1.3 寄存器寻址方式操操作作数数存存放放在在CPU的的内内部部寄寄存存器器reg中中,可以是:可以是:n8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SPn4个段寄存器个段寄存器seg:C
11、S、DS、SS、ES第3章 8086指令的寻址方式寄存器寻址指令MOV AX,1234H;AX1234HMOV BX,AX;BXAX寄存器寻址寄存器寻址寄存器寻址寄存器寻址第3章 8086指令的寻址方式3.1.4 存储器寻址方式指指令令中中给给出出操操作作数数的的主主存存地地址址信信息息(偏偏移移地地址址,称称之之为为有有效效地地址址EA),而而段段地地址址在在默认的或用段超越前缀指定的段寄存器中默认的或用段超越前缀指定的段寄存器中8086设计了多种存储器寻址方式设计了多种存储器寻址方式1、直接寻址方式、直接寻址方式2、寄存器间接寻址方式、寄存器间接寻址方式3、寄存器相对寻址方式、寄存器相对寻
12、址方式4、基址变址寻址方式、基址变址寻址方式5、相对基址变址寻址方式、相对基址变址寻址方式第3章 8086指令的寻址方式(1)直接寻址方式有效地址在指令中直接给出有效地址在指令中直接给出默默认认的的段段地地址址在在DS段段寄寄存存器器,可使用段超越前缀改变可使用段超越前缀改变MOV AX,2000H;AXDS:2000H;指令代码:指令代码:A10020MOV AX,ES:2000H;AXES:2000H;指令代码:指令代码:26A10020直接寻址直接寻址直接寻址直接寻址第3章 8086指令的寻址方式(2)寄存器间接寻址方式有有效效地地址址存存放放在在基基址址寄寄存存器器BX或或变址寄存器变
13、址寄存器SI、DI中中默默认认的的段段地地址址在在DS段段寄寄存存器器,可可使用段超越前缀改变使用段超越前缀改变MOV AX,SI;AXDS:SI间接寻址间接寻址间接寻址间接寻址第3章 8086指令的寻址方式(3)寄存器相对寻址方式有有效效地地址址是是寄寄存存器器内内容容与与有有符符号号8位位或或16位位位位移移量量之之和和,寄寄存存器器可可以是以是BX、BP或或SI、DI有效地址有效地址BX/BP/SI/DI8/16位位移量位位移量段段地地址址对对应应BX/SI/DI寄寄存存器器默默认认是是DS,对对应应BP寄寄存存器器默默认认是是SS;可用段超越前缀改变可用段超越前缀改变第3章 8086指
14、令的寻址方式寄存器相对寻址指令MOV AX,DI+06H;AXDS:DI+06HMOV AX,BP+06H;AXSS:BP+06H相对寻址相对寻址相对寻址相对寻址第3章 8086指令的寻址方式(4)基址变址寻址方式有有效效地地址址由由基基址址寄寄存存器器(BX或或BP)的的内内容容加加上上变变址址寄寄存存器器(SI或或DI)的内容构成:的内容构成:有效地址有效地址BX/BPSI/DI段段地地址址对对应应BX基基址址寄寄存存器器默默认认是是DS,对对应应BP基基址址寄寄存存器器默默认认是是SS;可用段超越前缀改变可用段超越前缀改变第3章 8086指令的寻址方式基址变址寻址指令MOV AX,BX+
15、SI;AXDS:BX+SIMOV AX,BP+DI;AXSS:BP+DIMOV AX,DS:BP+DI;AXDS:BP+DI基址变址基址变址基址变址基址变址第3章 8086指令的寻址方式(5)相对基址变址寻址方式有有 效效 地地 址址 是是 基基 址址 寄寄 存存 器器(BX/BP)、变变 址址 寄寄 存存 器器(SI/DI)与与一一个个8位位或或16位位位位移移量量之和:之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段段地地址址对对应应BX基基址址寄寄存存器器默默认认是是DS,对对应应BP基基址址寄寄存存器器默默认认是是SS;可用段超越前缀改变可用段超越前缀改变第3章 8
16、086指令的寻址方式相对基址变址寻址指令MOV AX,BX+SI+06H;AXDS:BX+SI+06H 位移量可用符号表示位移量可用符号表示 同一寻址方式有多种表达形式同一寻址方式有多种表达形式相对基址变址相对基址变址相对基址变址相对基址变址第3章 8086指令的寻址方式指令操作数的表达寄存器r8任意一个任意一个8位通用寄存器位通用寄存器AH AL BH BL CH CL DH DLr16任意一个任意一个16位通用寄存器位通用寄存器AX BX CX DX SI DI BP SPreg代表代表r8或或r16seg段寄存器段寄存器 CS/DS/ES/SS第3章 8086指令的寻址方式指令操作数的表
17、达存储器m8一一个个8位位存存储储器器操操作作数数单单元元(所有主存寻址方式)(所有主存寻址方式)m16一一个个16位位存存储储器器操操作作数数单元(所有主存寻址方式)单元(所有主存寻址方式)mem代表代表m8或或m16第3章 8086指令的寻址方式指令操作数的表达立即数i8一个一个8位立即数位立即数i16一个一个16位立即数位立即数imm代表代表i8或或i16dest目的操作数目的操作数src源操作数源操作数第3章 8086指令的寻址方式 (1)MOV AX,0ABH (2)MOV AX,BX(3)MOV AX,100H (4)MOV AX,VAL(5)MOV AX,BX (6)MOV AX,ES:BX(7)MOV AX,BP (8)MOV AX,SI(9)MOV AX,BX+10H (10)MOV AX,VALBX(11)MOV AX,BXSI (12)MOV AX,VALBXSI 假设假设DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量数据变量VAL的偏移地址为的偏移地址为0050H,请指出下列指令的源操作数请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?字段是什么寻址方式?它的物理地址是多少?