资源描述:
《微机原理第4章_1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理及应用信息与电气工程学院第4章IA-32指令系统(9学时)4.1数据寻址方式4.1.1立即数寻址方式4.1.2寄存器寻址方式4.1.3存储器寻址方式4.1数据寻址方式指令有两部分:操作码,操作数操作码:处理器要执行哪种操作,不可缺少,用助记符表示操作数:指令执行的参与者,即各种操作的对象,需要通过地址指示数据寻址方式:通过地址查找数据(操作数)立即数寻址:数据与指令操作码一起,用常量表达寄存器寻址:数据在寄存器中,用寄存器名表示存储器寻址:数据在主存中,用存储器地址代表4.1.1立即数寻址方式操作数紧跟操作码,是指令机器代码的一部分操作数从指令代码中立即得到,即立即数,用
2、常量形式直接表达立即数寻址方式只用于源操作数,常用来给寄存器和存储单元赋值例如:MOVAX,0102H机器代码:B80201操作码:B8H立即数:0102H4.1.1立即数寻址方式例如:MOVAX,0102H演示4.1.1立即数寻址方式—立即数寻址程序(1);数据段const=64bvardb87h,49h,'OK',5dup(?)wvardw0100h,745ah,?dvardd12,12345678h,04.1.1立即数寻址方式—立即数寻址程序(2);代码段moval,5;al=05hlabl:movax,0102h;ax=0102hmovebx,-1;ebx=fffffff
3、fhmovecx,const;ecx=00000040hmovdx,offsetbvar;dx=0000hmovsi,lengthdvar;si=0001hmovdi,offsetlabl;di=0007hmovebp,const*const/typewvar;ebp=00000800h4.1.2寄存器寻址方式操作数存放在处理器的内部寄存器中用寄存器名表示它的内容绝大多数指令采用通用寄存器寻址部分指令支持专用寄存器,例如段寄存器寄存器寻址方式简单快捷,最常使用例如:MOVAX,BX8位通用寄存器:AH,AL,BH,BL,……16位通用寄存器:AX,BX,CX,DX,……32位通用
4、寄存器:EAX,EBX,ECX,EDX,……段寄存器:CS,DS,SS,ES,FS,GS演示4.1.2寄存器寻址方式—寄存器寻址程序;代码段moval,ahmovbx,axmovecx,ebpmovdx,dsmoves,dxmovedi,sidi,esi4.1.3存储器寻址方式—段地址的默认和超越操作数在主存中编程时主存使用逻辑地址(段地址:偏移地址)段地址可以使用默认逻辑段,不用显式说明一般是DS指向数据段采用BP/EBP或SP/ESP作为基地址,默认SS指向堆栈段段地址必要时使用段超越指令前缀显式说明段超越指令前缀:段寄存器名后跟英文冒号CS∶,DS∶,SS∶,ES∶,FS∶
5、,GS∶4.1.3存储器寻址方式—偏移地址的组成主存操作数的偏移地址常被称为有效地址EA32位有效地址=基址寄存器+(变址寄存器×比例)+位移量基址寄存器:任何8个32位通用寄存器之一变址寄存器:除ESP之外的任何32位通用寄存器之一比例:1,2,4,8位移量:8位、16位或32位有符号数16位有效地址=基址寄存器+变址寄存器+位移量基址寄存器:BX,BP变址寄存器:SI,DI位移量:8位或16位有符号数多种主存寻址方式4.1.3存储器寻址方式—直接寻址方式有效地址只有位移量,直接包含在指令代码中例如:MOVAX,DS:[2000H]指令代码:A10020操作码:A1H操作数:有
6、效地址=2000H主存操作数常通过变量形式引用,一般不需要使用段超越前缀指令。4.1.3存储器寻址方式—直接寻址方式演示4.1.3存储器寻址方式—直接寻址程序;代码段movax,ds:[2000h]movax,es:[2000h]movax,wvarmovdh,bvarmovebx,dvarmovecx,dwordptrwvarmovdvar+8,ebxmovwvar+4,0fe0hds:[0009h]ds:[000dh],0fe0h4.1.3存储器寻址方式—寄存器间接寻址方式有效地址存放在寄存器中(寄存器内容=偏移地址)16位有效地址只能使用BX、SI、DI32位有效地址通过任
7、何一个32位通用寄存器moval,[bx];字节量传送,16位有效地址movax,[bx];字量传送,16位有效地址moveax,[bx];双字量传送,16位有效地址mov[esi],cx;字量传送,32位有效地址mov[ebx],edx;双字量传送,32位有效地址movwordptr[ebp],1394h;字量传送,32位有效地址MASM用中括号括起寄存器表示寄存器间接寻址寄存器间接寻址没有说明存储单元类型演示4.1.3存储器寻址方式—寄存器间接寻址程序;数据段msgdb'WE