第六章32位指令及其编程 6)带比例因子的变址寻址(没有基址寄存器) mov eax, Les i*2] 7)带比例的基址变址寻址 mov eax, [ebx+esi*4 8)带比例的基址变址相对寻址 mov eax, [ebx+esi*8+80h1 注释:1.BP、EBP、ESP作为基址寄存器使用时,默认的 段寄存器为SS;EBP作为变址寄存器使用时,不影响默 认的段寄存器的选择。 2.所有其他寻址方式默认的段寄存器都是Ds,包括 没有基址寄存器的情况。 3.允许段跨越
第 六 章 32 位 指 令 及 其 编 程 存储器操作数寻址3 16 6)带比例因子的变址寻址(没有基址寄存器) mov eax, [esi*2] 7)带比例的基址变址寻址 mov eax, [ebx+esi*4] 8)带比例的基址变址相对寻址 mov eax, [ebx+esi*8+80h] 注释:1.BP、EBP、ESP作为基址寄存器使用时,默认的 段寄存器为SS;EBP作为变址寄存器使用时,不影响默 认的段寄存器的选择。 2.所有其他寻址方式默认的段寄存器都是DS,包括 没有基址寄存器的情况。 3.允许段跨越
第六章32位指令及其编程 4.32位cPU采用16位段时,既可采用原16位寻址方 式,也可采用32位寻址方式。对16位段32位寻址方式, MVAX,[EcX为一条合法指令,但计算出的物理地址 仍然为20位地址。而M0VAX,[0X是一条非法指令,因 为在16位寻址方式中,∝X是不能作地址指针寄存器的。 所以,“16位段可采用32位寻址方式”,指得是指令的合 法性,不可错误理解为扩大了寻址空间。 回61
第 六 章 32 位 指 令 及 其 编 程 存储器操作数寻址4 17 4.32位CPU采用16位段时,既可采用原16位寻址方 式,也可采用32位寻址方式。对16位段32位寻址方式, MOV AX,[ECX]为一条合法指令,但计算出的物理地址 仍然为20位地址。而MOV AX,[CX]是一条非法指令,因 为在16位寻址方式中,CX是不能作地址指针寄存器的。 所以,“16位段可采用32位寻址方式” ,指得是指令的合 法性,不可错误理解为扩大了寻址空间。 回 6.1
第六章32位指令及其编程 6.1.3机器代码格式 与16位指令相比,增加了两个字节的前缀和一个带 比例因子的变址寻址方式字节。 进行汇编语言程序设计时,只要正确设置好伪指令 (选择16位段或32位段),汇编程序会自动加入需要的 前缀;如使用了带比例因子的变址寻址方式,汇编程序 会自动在机器代码中加入相应字节。 回61 18
第 六 章 32 位 指 令 及 其 编 程 6.1.3 机器代码格式 18 6.1.3 机器代码格式 与16位指令相比,增加了两个字节的前缀和一个带 比例因子的变址寻址方式字节。 进行汇编语言程序设计时,只要正确设置好伪指令 (选择16位段或32位段),汇编程序会自动加入需要的 前缀;如使用了带比例因子的变址寻址方式,汇编程序 会自动在机器代码中加入相应字节。 回 6.1
第六章32位指令及其编程 6.232位扩展指令 概述 6.2.1数据传送类指令 6.2.2算术运算类指令 6.2.3位操作类指令 6.2.4串操作类指令 6.2.5控制转移类指令 6.2.6处理器控制类指令 6.2.7保护方式类指令(略) 回第6章
第 六 章 32 位 指 令 及 其 编 程 6.2 32位扩展指令 19 6.2 32位扩展指令 概 述 6.2.1 数据传送类指令 6.2.2 算术运算类指令 6.2.3 位操作类指令 6.2.4 串操作类指令 6.2.5 控制转移类指令 6.2.6 处理器控制类指令 6.2.7 保护方式类指令(略) 回 第6章
第六章32位指令及其编程 概述 16位指令系统从两个方面向32位扩展 (1)支持32位操作数 (2)支持32位寻址方式 mov ax bx 16位操作数 moy eax ebx 32位操作数 moax,[ebx]16位操作数,32位寻址方式 mov eax,[ebx]32位操作数,32位寻址方式
第 六 章 32 位 指 令 及 其 编 程 概 述/1 20 概 述 16位指令系统从两个方面向32位扩展 ⑴ 支持32位操作数 ⑵ 支持32位寻址方式 mov ax,bx ;16位操作数 mov eax,ebx ;32位操作数 mov ax,[ebx] ;16位操作数,32位寻址方式 mov eax,[ebx] ;32位操作数,32位寻址方式