- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理04.ppt
第4章 IA-32指令系统 制作 钱晓捷 第4章 IA-32指令系统 4.1 数据寻址方式 4.1.1 立即数寻址方式 4.1.2 寄存器寻址方式 4.1.3 存储器寻址方式 4.2 数据传送类指令 4.2.1 数据传送指令 4.2.2 堆栈操作指令 4.2.3 地址传送指令 4.3 算术运算类指令 4.3.1 加法指令 4.3.2 减法指令 4.3.3 乘法除法等指令 4.4 位操作类指令 4.4.1 逻辑运算指令 4.4.2 移位指令 4.5 串操作类指令 4.5.1 串操作的寻址特点 4.5.2 串传送指令 4.5.3 串检测指令 数据寻址方式(Data-addressing Mode) 指令有两部分:操作码和操作数 操作码:处理器要执行哪种操作,不可缺少,用助记符表示 操作数:指令执行的参与者,即各种操作的对象,需要通过地址指示 数据寻址方式:通过地址查找数据(操作数) 立即数寻址:数据与指令操作码一起,用常量表达 寄存器寻址:数据在寄存器中,用寄存器名表示 存储器寻址:数据在主存中,用存储器地址代表 立即数寻址 操作数紧跟操作码,是指令机器代码的一部分 操作数从指令代码中立即得到,即立即数(Immediate),用常量形式直接表达 立即数寻址方式只用于源操作数,常用来给寄存器和存储单元赋值 例如:MOV AX,0102H 机器代码:B8 02 01 操作码:B8 立即数:0102 [例题4-1]立即数寻址程序-1 ;数据段 = 0040 const = 64 0000 87 49 4F 4B 0005 [ 00 ] bvar db 87h,49h,OK,5 dup(?) 0009 0100 745A 0000 wvar dw 0100h,745ah,? 000F 0000000C dvar dd 12,0 [例题4-1]立即数寻址程序-2 ;代码段 0010 B0 05 mov al,5 0012 B8 0102 labl: mov ax,0102h 0015 66| BB FFFFFFFF mov ebx,-1 001B 66| B9mov ecx,const 0021 BA 0000 R mov dx,offset bvar 0024 BE 0003 mov si,lengthof dvar 0027 66| BFR mov edi,labl 002D 66| BD mov ebp,const*const/type wvar 寄存器寻址 操作数存放在处理器的内部寄存器中 用寄存器名表示它的内容 绝大多数指令采用通用寄存器寻址 部分指令支持专用寄存器,例如段寄存器 寄存器寻址方式简单快捷,最常使用 [例题4-2]寄存器寻址程序 ;代码段 0010 8A C4 mov al,ah 0012 8B D8 mov bx,ax 0014 66| 8B CD mov ecx,ebp 0017 8C DA mov dx,ds 0019 8E C2 mov es,dx mov edi,si eg402.asm(14) : error A2022: instruction operands must be the same size 存储器寻址:段地址表达 操作数在主存中 编程时主存使用逻辑地址:段地址和偏移地址 段地址可以使用默认逻辑段,不用显式说明 一般是DS指向数据段 采用BP/EBP或SP/ESP作为基地址,默认SS指向堆栈段 段地址必要时使用段超越指令前缀显式说明 段超越指令前缀:段寄存器名后跟英文冒号 CS∶ DS∶ SS∶ ES∶ FS∶ GS∶ 存储器寻址:偏移地址表达 主存操作数的偏移地址常被称为有效地址EA 32位有效地址 = 基址寄存器+(变址寄存器×比例)+位移量 基址寄存器:任何8个32位通用寄存器之一 变址寄存器:除ESP之外的任何32位通用寄存器之一 比例:1,2,4或8 位移量:8或32位有符号值 16位有效地址 = 基址寄存器+变址寄存器+位移量 基址寄存器:BX或BP 变址寄存器:SI或DI 位移量:8或16位有符号值 直接寻址 有效地址只有位移量,直接包含在指令代码中 例如: MOV AX, DS:[2000H] 指令代码:A1 00 20 操作码:A1 操作数:有效地址 2000 [例题4-3]存储器直接寻址程序 ;代码段 0010 A1 2000 mov ax,ds:[2000h] 0013 26: A1 2000 mov ax,es:[2000h] 0017 A1 0009 R mov ax,wvar
文档评论(0)