同济控制系复试-微机原理课件余有灵_第1页
同济控制系复试-微机原理课件余有灵_第2页
同济控制系复试-微机原理课件余有灵_第3页
同济控制系复试-微机原理课件余有灵_第4页
同济控制系复试-微机原理课件余有灵_第5页
免费预览已结束,剩余27页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chapter3

AddressingmodesInstructor:Dr.YuYouling寻址模式

寻址模式寻找操作数的地址(一般指源操作数)

找数

寻找要执行的下一条指令的地址 找指令三种寻址模式数据寻址模式(Data-AddressingModes)程序存储器寻址模式(ProgramMemory-AddressingModes)堆栈寻址模式(StackMemory-AddressingModes)2023/1/23第2页指令系统指令——控制计算机完成指定操作的命令机器指令——指令的二进制代码形式。例如:CD21H汇编指令——助记符形式的指令。例如:INT21H指令系统——CPU所有指令及其使用规则的集合8088/8086指令系统:指令向后兼容(x86系列)应用广泛,资料易于寻找2023/1/23第3页指令的基本构成2023/1/23第4页操作码[操作数],[操作数]说明要执行的是什么操作操作对象,可以有0个、1个或2个目的源指令的基本构成示例目的操作数和源操作数均可采用不同的寻址方式,但两个操作数的类型要一致。2023/1/23第5页ADDAX,[SI+6]MOVAX,BX操作码操作数INC[BX]HLT操作数8088/8086的操作数分为3类立即数2023/1/23第6页8位16位无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正确MOV 8000H,DX ;错误立即数只能用作源操作数,如操作数8088/8086的操作数分为3类寄存器操作数放在8个通用寄存器和4个段寄存器中的操作数2023/1/23第7页只能存放字/双字操作数段寄存器存放当前操作数的段基地址不允许将立即数传送到段寄存器操作数8088/8086的操作数分为3类存储器操作数2023/1/23第8页存储器操作数字节字双字124类型存储单元个数一般不允许两个操作数同时为存储器操作数实模式寻址方式存储单元的物理地址=段基地址+偏移地址若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出2023/1/23第9页例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,则以下指令的结果是一样的:

MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]数据寻址模式(Data-AddressingModes)寄存器寻址(registeraddressing)立即寻址(immediateaddressing)存储器寻址直接寻址(directaddressing)寄存器间接寻址(registerindirectaddressing)基址加变址寻址(base-plus-indexaddressing)寄存器相对寻址(RegisterrelativeAddressing)相对基址变址寻址(baserelative-plus-indexaddressing)比例变址寻址(scaled-indexaddressing)I/O寻址2023/1/23第10页2023/1/23第11页寄存器寻址(registeraddressing)操作数放在某个寄存器中,源操作数与目的操作数字长要相同寄存器寻址与段地址无关操作数在寄存器中,指令中源操作数和目的操作数都可用这种寻址方式例:

MOVAX,BX MOVCL,AL

错误例:

×

MOVAX,BL;字长不同

×MOVES:AX,DX;寄存器与段无关2023/1/23第12页立即寻址(immediateaddressing)操作数(为一常数)就在指令中,紧跟在操作码后面,作为指令一部分存放在内存的代码段中(此操作数称为立即数)立即寻址只能用于源操作数例:

MOVAX,1C8FH MOVBYTEPTR[2A00H],8FH MOVEAX,234H

错误例: ×

MOV2A00H,AX;错误!2023/1/23第13页存储器寻址有效地址(EA,EffectiveAddress)当操作数在内存中时,指令的地址码(操作码)给出所访问的内存单元的逻辑地址。在寻址方式中,逻辑地址的形成是由多个分量组合而成,该组合地址又叫有效地址2023/1/23第14页直接寻址(directaddressing)当指令中的源操作数或目的操作数,采用直接给出被访问内存单元的逻辑地址时,这种寻址方式称直接寻址默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀偏移地址也可用符号地址来表示,如ADDR、VAR例:

MOVAX,[2A00H] MOVDX,ES:[2A00H] MOVSI,TABLE_PTR2023/1/23第15页寄存器间接寻址(registerindirectaddressing)内存单元的逻辑偏移地址通过寄存器间接给出 MOVDX,[SI] MOVWORDPTR[ECX],12 MOVDWORDPTR[ESI],2345H2023/1/23第16页基址加变址寻址(base-plus-indexaddressing)类似于间接寻址,采用两个寄存器进行寻址EA经常采用几个基址寄存器(BX,BP)和一个变址寄存器(SI,DI)组合而成对高端CPU,允许除ESP外的任意两个寄存器组合成EA例: MOVCX,[BX+DI] MOVCH,[BP+SI] MOV[BX+SI],SP MOV[EAX+EBX],ECX2023/1/23第17页基址变址寻址(base-plus-indexaddressing)2023/1/23第18页寄存器相对寻址(RegisterrelativeAddressing)这种寻址方式中提出位移量的概念,即在寄存器间接寻址给出的偏移地址上,加一相对位移量。位移量是一带符号的16位16进制数。类似于基址加变址寻址和位移量寻址,通常为一个寄存器例 MOVLIST[SI+2],CL MOVDI,SET_IT[BX] MOVDI,[EAX+10H] MOVARRAY[EBX],EAX2023/1/23第19页寄存器相对寻址(RegisterrelativeAddressing)2023/1/23第20页相对基址变址寻址(baserelative-plus-indexaddressing)它的EA是由三部分组成的,基址寄存器BX或BP的内容加上变址寄存器的内容再加相对位移量。物理地址由基址寄存器按规则选择段寄存器,也可以使用段超越。至少有两个寄存器例: MOVAX,FILE[BX+DI] MOVAX,8AH[BX][SI]

该例中EA=8AH+(BX)+(SI)

物理地址=(DS)×10H+8AH+(BX)+(SI)2023/1/23第21页相对基址变址寻址(baserelative-plus-indexaddressing)2023/1/23第22页比例变址寻址(scaled-indexaddressing)是80386以上CPU特有的。第二个寄存器内容与比例因子相乘。比例因子可以是1X,2X,4X或8X例 MOVEAX,[EBX+4*ECX] MOV[EAX+2*EDI+100H],CX MOVAL,[EDI+2*EBX] MOVARRAY[4*ECX],EBX ADDAL,[EBP+2*EDI-2]2023/1/23第23页程序存储器寻址模式(ProgramMemory-AddressingModes)用于JMP和CALL指令有三种寻址模式直接程序存储器寻址(DirectProgramMemoryAddressing)相对程序存储器寻址(RelativeProgramMemoryAddressing)间接程序存储器寻址(IndirectProgramMemoryAddressing)2023/1/23第24页直接程序存储器寻址指令地址和操作码一同存储如JMP10000H,通常指令地址为标号地址两种指令段间转移——远转移(farjump)实模式,可以转移到1MB内任意单元保护模式,可以转移到4GB内任意单元段间调用——远CALLFigure3-142023/1/23第25页相对程序存储器寻址相对于指令指针(IP)指明一个相对偏移量(1个、2个或4个字节),可正可负,使用时与IP相加1个字节,短转移。范围-128~+1272个字节,近转移或者调用。范围±32K4个字节,±2G(32位)Figure3-152023/1/23第26页间接程序存储器寻址间接意味着有寄存器参与可以是任何16位寄存器(AX,BX,CX,DX,SP,BP,SI,DI)对386以上,还可以是32位寄存器或任何相对寄存器([BP],[BX],[SI],[DI])或任何带位移量的相对寄存器例 JMPAX JMPNEARPTR[BX] JMPNEARPTR[DI+2] JMPTABLE[BX] JMPECXExample3-142023/1/23第27页堆栈寻址模式堆栈在微处理器中至关重要暂时存放数据为程序保存返回地址堆栈LIFO(Last-InFirst-Out)存储区PUSH类指令将数据/指令压入堆栈POP类指令将数据/指令弹出堆栈存储区由两个寄存器维护堆栈指针(SP)堆栈段寄存器(SS)2023/1/23第28页堆栈寻址模式操作模式SP/ESP总是指向位于堆栈段的存储区域PUSH/POP总是以字/双字操作的。压入数据/指令(以PUSHAX为例)AX高8位即AH中数据放入SP-1寻址单元AX低8位即AL中数据放入SP-2寻址单元SPSP-2弹出数据/指令(以POPAX为例)SP寻址单元中数据弹出到AX低8位AL中SP+1寻址单元中数据弹出到AX高8位AH中SPSP+22023/1/23第29页堆栈寻址模式2023/1/23第30页数据结构(DataStructure)数据结构类似一种模板用于规定信息怎样存储到存储器数组中的用STRUC/ENDS对进行结构定义用<>和`进行数据定义例 INFOSTRUC NAMESDB32dup(?);reserve32bytesforaname STREETDB32dup(?) CITY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论