Win32汇编语言-寻址方式

Win32汇编语言-寻址方式

ID:36542934

大小:5.83 MB

页数:59页

时间:2019-05-09

Win32汇编语言-寻址方式_第1页
Win32汇编语言-寻址方式_第2页
Win32汇编语言-寻址方式_第3页
Win32汇编语言-寻址方式_第4页
Win32汇编语言-寻址方式_第5页
资源描述:

《Win32汇编语言-寻址方式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、宋军计算机学院信息安全系songjun@cug.edu.cn寻址方式2021/7/161寻址方式操作数的寻址方式立即数寻址寄存器寻址存储器寻址直接寻址间接寻址相对寻址2021/7/162立即数寻址操作数在指令中给出指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’只能用于SRC字段MOV40H,ALSRC和DST的字长一致MOVAH,3064H2021/7/163寄存器寻址操作数存放在CPU的内部寄存器reg中:8位寄存器r8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器r16:AX/BX/CX

2、/DX/SI/DI/BP/SP32位寄存器r32:EAX/EBX/ECX/EDX/ESI/EDI/ESP/EBP4个段寄存器seg中:CS/DS/SS/ES指令格式:MOVAX,BXMOVAL,BHMOVAX,3064HSRC和DST的字长一致MOVAH,BX2021/7/164存储器寻址(直接寻址)寻址主存中存储的操作数就称为存储器寻址方式(也称为内存寻址方式)指令中给出的是有关操作数的主存地址信息指令中主存操作数给出的地址只是偏移地址(称有效地址EA)实模式下,段基地址在默认的段寄存器中或用段超越前缀指定的段寄存器中20

3、21/7/165有效地址的组成位移量:存放在指令中的8位、16位或32位的数值或常量基址:存放在基址寄存器中的内容。它是有效地址中的基址部分;变址:是存放在变址寄存器中的内容比例因子:可以是1∕2∕4∕8比例因子只适用于保护模式。2021/7/16616位存储器寻址有效地址16位有效地址=基址寄存器+变址寄存器+8∕16位位移量其中:基址寄存器只能是BX或BP变址寄存器只能是SI或DI位移量可以是8/16位数当基址寄存器为BP的时候,默认的堆栈段寄存器SS;其他情况下,默认数据段寄存器DS。2021/7/16732位存储器寻址

4、有效地址其中:位移量是8/16/32数值或者常量任何32位通用寄存器都可以作为基址寄存器(默认ESP/EBP使用SS;其他默认使用DS)任何除ESP之外的32位通用寄存器都可以作为变址寄存器32位有效地址=基址寄存器+变址寄存器+8/16/32位位移量2021/7/168直接寻址方式例:MOVAX,[2000H]EA=2000H,假设(DS)=3000H,那么PA=32000H503032000AHAL3050(AX)=3050H隐含的段为数据段DS2021/7/169直接寻址方式可使用段跨越前缀MOVAX,ES:[2000H

5、]操作数地址可由变量(符号地址)表示,但要注意VALUEDB10变量的属性MOVAH,VALUE;等价于MOVAH,[VALUE]可用符号地址代替数值地址MOVAX,VALUEMOVAX,WORDPTRVALUE操作数尺寸要一致2021/7/1610间接寻址/间接操作数操作数的有效地址存放在寄存器中方括号括起来的寄存器,如[BX],SS:[EBX]保护模式:32位通用寄存器实地址:16位,SI,DI,BX,BP寄存器里存放着数据的偏移地址用作间接操作数的寄存器使用时应先初始化.datavar1BYTE10h,20h,30h

6、.codeMOVesi,offsetvar1MOVal,[esi];如在附加段中,MOVal,ES:[esi]2021/7/1611尺寸问题PTR:与间接操作数的联合使用PTR操作符指明操作数的大小.datavar1BYTE10h,20h,30h.codeMOVesi,offsetvar1INC[esi];×,operandmusthavesize.datavar1BYTE10h,20h,30h.codeMOVesi,offsetvar1INCBYTEPTR[esi]2021/7/1612数组求和.386.modelflat,

7、stdcall.dataW1WORD1234h,5678h,4321h,8765h.codemovesi,offsetW1movax,[esi];1234haddesi,2addax,[esi];1234h+5678haddesi,2addax,[esi];1234h+5678h+4321haddesi,2addax,[esi];1234h+5678h+4321h+8765h2021/7/1613例:寄存器间接寻址方式.386.modelflat,stdcall.datad_vardword12345678h.codestar

8、t:movesi,offsetd_varmoveax,[esi]moveax,esimoveax,offsetc_varmoveax,cs:[eax]ret;返回操作系统c_vardword87654321hendstart;汇编结束2021/7/1614例:运行结果(1)m

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。