【文档说明】汇编语言课件第3章.ppt,共(24)页,263.501 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44799.html
以下为本文档部分文字说明:
第三章操作数的寻址方式复习(1)指令:制指挥计算机完成某一个操作的命令(2)程序:指令的集合(3)存储程序式计算机:针对待解决的问题,事先编制好程序,存在存储器中,改动程序执行(4)指令基本形式(5)操作数寻址:指定操作数或操作数存放位置的方法(
6)基本寻址方式(7种)立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效地址的五种不同的计算方法。另外,在32位微机系统中,为了扩大对存储单元的寻址能力,增加了一种新的寻址
方式——32位地址的寻址方式。(7)存储空间分段存储管理思想存储空间分段物理地址=段起始地址+段内偏移量(EA)段起始地址由段寄存器提供代码计算所得,EA由指令地址段处理所得(8)表示形式X存储单元X(x)存储单元x中的内容AX寄存器AX(AX)寄存器AX中的内容(9)指令形式无操作数指令单操
作数指令双操作数指令§3.1立即寻址方式(1)操作数直接写在指令地址段中(2)立即数不能作第一操作数(目标操作数)(3)不涉及存储器地址(4)例如:MOVAH,80HADDAX,1234HMOVECX,123456HMOVB1,12HMOVW1,3456HADDD1,32
123456H其中:B1、W1和D1分别是字节、字和双字单元。下图是指令“MOVAX,4576H”的存储形式和执行情况示意图。§3.2寄存器寻址方式(1)操作数存在寄存器中(2)指令地址段给出寄存器编号(3)源操作数可放在寄存器中目标操作数可放在寄存器中两者均可以作为寄存器形式(
4)最好用——注意位数一致§3.3直接寻址方式(1)操作数放在内存单元中,指令中给出操作数在段中的相对位置——有效地址(2)一般情况下,数据存在数据段中,首地址信息存于DS中,若不存在数据段时,指令要给我前缀(3)指令形式MOVAX,TAX;给出标号/符号名(EA=TAX)MOVAX,[1234
H];直接给出相对号(EA=1234H)[注意:不能写成MOVAX,1234H这样就成了立即数寻址]前两者数据存在数据段中,引用到DSMOVAX,[TAX];“MOVAX,TAX”等价MOVAX,ES:TAX;
数据存在附加段中例3.1假设有指令:MOVBX,[1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?解:根据直接寻址方式的寻址规则,把该指令的具体执行过程如下图所示。§3.4寄存器间接寻址方式(1)操作数存放在存储单元中
(2)有效地址存放在存储器中(通常为变址)(3)指令给出寄存器编号(变址)操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:(4)例假设有指令:MOVB
X,[DI],在执行时,(DS)=1000H,(DI)=2345H,存储单元12345H的内容是4354H。问执行指令后,BX的值是什么?解:根据寄存器间接寻址方式的规则,在执行本例指令时,寄存器DI的值不是操作数,而是操作
数的地址。该操作数的物理地址应由DS和DI的值形成,即:PA=(DS)*16+(DI)=1000H*16+2345H=12345H。该指令的执行效果:把从物理地址为12345H开始的一个字的值传送给BX。§3.5寄存器相对寻址方式(1)操作数存放
在存储器中(2)有效地址时一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容和指令中给出相对量之和(3)在没有前缀时,默认:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。(4)例假设指令:MOVBX,[SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?解:根据寄存器相对寻址方式的
规则,在本指令中的源操作数的有效地址EA为:EA=(SI)+100H=2345H+100H=2445H该操作数的物理地址应由DS和EA的值形成即:PA=(DS)*16+EA=1000H*16+2445H=12445H。该指令的执行效果是:把从物理地址为1
2445H开始的一个字的值传送给BX。§3.6基址加变址寻址方式(1)操作数存放在存储单元中(2)有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如下:(3)指令地址段给出基址和变址寄存器
(4)在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。(5)例假设指令:MOVBX,[BX+SI],在执行时,(DS)=1000H,(B
X)=2100H,(SI)=0011H,内存单元12111H的内容为1234H。问指令执行后,BX的值是什么?解:根据基址加变址寻址方式的规则,在本指令的源操作数的有效地址EA为:EA=(BX)+(SI)=2100H+0011H=2111H该操作数的物理地址应由DS和EA的值形成,即:PA=(D
S)*16+EA=1000H*16+2111H=12111H该指令的执行效果是:把从物理地址为12111H开始的一个字的值传送给BX。§3.7相对基址加变址寻址方式(1)操作数存在存储单元中(2)有效地址是一个基址寄存器
(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如右:(3)在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其
缺省的段寄存器为SS(即:堆栈段)。(4)例假设指令:MOVAX,[BX+SI+200H],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,内存单元12310H的内容为1234H。问指令执行后,AX的值是什么?解:根据相对基址加变址寻址方式
的规则,本指令中源操作数的有效地址EA为:EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H该操作数的物理地址应由DS和EA的值形成,即:PA=(DS)*16+EA=1000H*16+2310H=12310H该指令的执行效果是:把从物理地址为
12310H开始的一个字的值传送给AX。(5)其他表示——相对基址加变址寻址方式与其它寻址方式之间的变形关系源操作数指令的变形源操作数的寻址方式只有一个偏移量MOVAX,[100H]直接寻址方式只有一个寄存器MOVAX,[BX]或MOVAX,[SI]寄存器间接寻址方式有一个寄存器和偏移量MO
VAX,[BX+100H]或MOVAX,[SI+100H]寄存器相对寻址方式有二个寄存器MOVAX,[BX+SI]基址加变址寻址方式有二个寄存器和常数项MOVAX,[BX+SI+100H]相对基址加变址寻址方式§3.832位地址的寻址方式(1)保留1
6位的寻址方式(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)(2)新增加:所有32位寄存器均可作为地址偏移量的一部分(16bit机只能用基址或变址寄存器)用32位地址偏移量进行寻址的有效地址计算公式:(3)注意:谁是基址,谁是变址?关键是谁写在前,谁在后前——基址后——变址(
5)例下面列举几个32位地址寻址指令及其内存操作数的段寄存器。MOVAX,[123456H];默认段寄存器DSMOVEAX,[EBX+EBP];默认段寄存器DSMOVEBX,[EBP+EBX];默认段寄存器SSMOVEBX,[EAX+100H];默认段寄存器DSMOVEDX,ES
:[EAX*4+200H];显式段寄存器ESMOV[ESP+EDX*2],AX;默认段寄存器SSMOVEBX,GS:[EAX+EDX*2+300H];显式段寄存器GSMOVAX,[ESP];默认段寄存器SS寄存器间接寻址的例子:[例]已知表TA中存由60个数据(字),将该表数据接到表TB中去
,设TB表有足够空间开始TASITBDIOBX(BX)≥60((SI))AX(AX)(DI)(SI)+2(SI)(DI)+2(DI)(BX)+1BX结束[解题]TA表头→SI为取初值TB表头→DI为存初值以B
X为计数控制器因为是字操作,故SI、DI增量为2因为(BX)从0开始所以其正常范围为0~59使用寄存器相对寻址的例子(同上题)开始OSIODI(SI)≥120(TA+(SI))AX(AX)TB+(DI)(SI)+2SI(DI)+2DI结束[解题]SI、DI初值为0因
为是字操作,地址增量是2因为是60个元素,故(SI)正常值范围为0~118此法中:初偏址为TA+(SI)存偏址为TB+(DI)巧妙地利用(SI)来表示地址增量,又作计数控制