文档详情

微型计算机系统原理(第五版)周明德 第 3 章 8086指令系统.ppt

发布:2017-03-09约2.42万字共133页下载文档
文本预览下载声明
第 3 章 8086指令系统 本章讲述: 3.1 基本数据类型 3.2 8086的指令格式 3.3 8086指令的操作数寻址方式 3.4 8086的通用指令 3.1 基本数据类型 本节介绍x86系列处理器定义的数据类型。 x86系列处理器的基本数据类型是字节、字、双字、四字和双四字,如图3-1所示。 一个字节是8位,一个字是两个字节(16位),双字是4字节(32位),四字是8字节(64位),双四字是16字节(128位)。 四字是在Intel 80486处理器中引入IA-32 结构的,双四字是在具有SSE扩展的Pentium Ⅲ 处理器中引入的。 图3-2显示了基本数据类型作为内存中的操作数引用时的字节顺序。 低字节(位0至位7)占用内存中的最低地址,该地址也是此操作数的地址。 3.1.1 字、双字、四字和双四字的对齐 字、双字和四字在内存中并不需要对齐至自然边界。(字、双字和四字的自然边界是偶数编号的地址,对于双字和四字来说,地址要分别能被4和8除尽。) 然而,为了改进程序的性能,数据结构(特别是堆栈)只要可能就应该在自然边界上对齐。因为对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访问,只要进行一次存储访问操作。 3.1.2 数字数据类型 虽然字节、字和双字是IA-32 结构的基本数据类型,但某些指令对这些数据类型的附加解释允许在数字数据类型(带符号的或无符号整数和浮点数)上操作。这些数字数据类型如图3-3所示。 1. 整数 IA-32结构定义两种类型整数:无符号整数和符号整数。无符号整数是原始二进制值,范围从0到所选择的操作数尺寸能编码的最大正数;符号整数是2的补码二进制值,能用于表示正的和负的整数值。 某些整数指令(例如:ADD、SUB、PADDB 和PSUBB 指令)可在无符号整数或符号整数上操作。而一些整数指令(例如:IMUL、MUL、IDIV、DIV、FIADD 和FISUB)只能在一种整数类型上操作。 (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)。 当在内存中存储整数值时,字整数存放在两个连续字节中;双字整数存放在四个连续字节中;四字整数存放在八个连续的字节中。 2. 浮点数据类型 IA-32结构定义和操作三种浮点数据类型:单精度浮点数、双精度浮点数和扩展的双精度浮点数(见图3-3)。 这些数据类型的数据格式与IEEE标准754二进制浮点算术所规定的格式直接对应。如表3-2所示。 3.1.3 指针数据类型 指针是内存单元的地址,如图3-4所示。IA-32 结构定义两种类型的指针:近(near)指针(32位)和远(far)指针(48位)。near指针是段内的32位偏移量(也称为有效地址)。Near指针在平面存储模式中用于所有存储器引用;或在分段存储模式中用于同一段内的存储器引用。far指针是一个48位的逻辑地址,包含16位段选择子和32位的偏移量。far指针用于在分段存储模式中的跨段存储引用。 3.1.4 位字段数据类型 一个位字段(见图3-5)是连续的位序列。它能在内存中任何字节的任一位位置开始并能包含最多至32位。 3.1.5 串数据类型 串是位、字节、字或双字的连续序列。位串能从任一字节的任一位开始并能包含多至232-1位。字节串能包含字节、字或双字,其范围能从0至232-1字节(4GB)。 3.2 8086的指令格式 当指令用符号表示时,就是使用8086 汇编语言的子集。在此子集中,指令有以下格式: label: mnemonic argument1, argument2,argument3 其中: (1) 标号(label
显示全部
相似文档