如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
3.1基本数据类型地址图3-2显示了基本数据类型作为内存中的操作数引用时的字节顺序。内存是按字节编址的(每个字节有一个地址号码)。各基本数据类型的地址用最低字节的地址表示。低字节(位0至位7)占用内存中的最低地址,该地址也是此操作数的地址。称之为“小端优先(小印地安型)”3.1.1字、双字、四字和双四字的对齐3.1.2数字数据类型符号位(1)无符号整数无符号整数是包含字节、字、双字和四字中的无符号的二进制数。它们的值的范围,对于字节是从0到255;对于字,从0到65535;对于双字,从0到232-1;对于四字,从0到264-1。无符号整数有时作为原始数引用。(2)符号整数符号整数是保存在字节、字、双字或四字中的带符号的二进制数。对于符号整数的所有操作都假定用2的补码表示。符号位定位在操作数的最高位(见表3-1中符号整数编码)。负数的符号位为1,正数的符号位为0。整数值的范围,对于字节,从-128到+127;对于字从-32768到+32767;对于双字,从-231到+(231-1);对于四字,从-263到+(263-1)。3.1.3指针数据类型3.1.4位字段数据类型3.28086的指令格式3.38086指令的操作数寻址方式3.3.1立即数寻址方式3.3.2寄存器操作数寻址方式3.3.3存储器操作数寻址方式16位段选择子左移4位1.规定段选择子段选择子能隐含或用指令显式规定。规定段选择子的最公共的方法是把它加载(LOAD)至段寄存器,然后允许处理器根据正在执行的操作类型,隐含地选择寄存器。当存数据到内存或者从内存中取数据时,DS段为默认的段。但它能被超越以允许访问其他段。以下的默认段,不能被超越:(1)必须从码段(CS)取指令;(2)在串操作中的目的必须存储在由ES寄存器指向的数据段;(3)推入和弹出操作必须总是引用SS段。2.规定偏移量存地址的偏移量部分,或者直接作为一个静态值(称为位移量)规定,或者由以下一个或多个成员通过加法计算得到地址:(1)位移量——一个8位、16位或32位值;(2)基地址——在通用寄存器中的值;(3)索引(变址)——在通用寄存器中的值;(4)比例系数——值2、4或8,用于与索引值相乘。由这些成员相加的结果的偏移量称为有效地址。作为基地址或索引的通用寄存器限制如下:(1)ESP寄存器不能用作索引寄存器;(2)当ESP或EBP寄存器用作为基地址,SS段是默认的段。在所有其他情况下,DS段是默认段。基地址、索引和位移量成员能用于任何组合中,这些成员中的任一个都可以是空。只有当使用索引时才能使用比例系数。每一种可能的组合对于程序员在高级语言或汇编语言中公共使用的数据结构是有用的。■位移量位移量代表操作数的直接(不计算)偏移。因为位移量是编码在指令中的,地址的这种形式有时称为绝对或静态地址,这通常用于访问静态分配的标量操作数。如图3-9所示。物理地址=段首地址+位移量示例:MOVAX,DS:[2000H]简写为:MOVAX,[2000H]“2000H”为16位位移量。位移量■基地址单独一个基地址表示操作数的间接偏移量,因为在基地址寄存器中的值能够改变,它能用于变量和数据结构的动态存储。这种寻址方式如图3-10所示。物理地址=段首地址+基地址示例:MOVAX,SS:[BP]简写为:MOVAX,[BP];BP为基地址寄存器段首址■基地址+位移量为了达到以下两个不同的目的,一个基寄存器和一个位移量能一起用:.作为元素的尺寸不是2、4或8字节时的数组的索引——位移量作为到数组的开始的静态偏移(首地址),基寄存器保持计算的结果以确定到数组中规定的元素的偏移(下标)。.为访问记录中的一个字段——基寄存器保持记录的开始地址,而位移量是字段的静态偏移(字段序号)。这种寻址方式如图3-11所示。物理地址=段首地址+基地址+位移量示例:MOVAX,DS:[SI+COUNT]段首址■索引单独一个索引(SI或DI寄存器)表示操作数的间接偏移量,因为在索引寄存器中的值能够改变,它能用于数组的下标。这种寻址方式如图3-10所示。物理地址=段首地址+索引地址示例:MOVAX,DS:[SI]简写为:MOVAX,[SI]■索引+位移量物理地址=段首地址+索引地址+位移量示例:MOVAX,DS:[SI+300]简写为:MOVAX,[SI+300]3.汇编程序和编译器寻址方式在机器码级,所选择的位移量、基寄存器、索引(变址)寄存器和比例因子是在指令中编码的。所有汇编程序允许程序员用这些寻址成员的任何允许的组合来寻址操作数。高级语言编译程序基于程序员定义的语言结构,选择这些成员的适当组合。图3-9‘(第四版的图3-9)显示了这些成员能组合以建立在所