当前位置:
文档之家› 第 3 章 8086指令系统——微机原理课件PPT
第 3 章 8086指令系统——微机原理课件PPT
第 3 章 8086பைடு நூலகம்令系统
3.1 基本数据类型 3.2 8086的指令格式 3.3 8086指令的操作数寻址方式 3.4 8086的通用指令
3.1 基本数据类型
x86系列处理器的基本数据类型是字节、 字、双字、四字和双四字。
一个字节是8位,一个字是两个字节(16 位),双字是4字节(32位),四字是8字 节(64位),双四字是16字节(128位)。
3.2 8086的指令格式
当指令用符号(助记符)表示时,就是使用8086 汇 编语言的子集。在此子集中,指令有以下格式:
标号:助记符 [参数1 [, 参数2 [, 参数3] ] ] 其中: (1) 标号(label)是一个标识符后面跟有冒号(:); (2) 助记符(mnemonic code)是一类具有相同功能的指令操
•MOV AH, 80H
ADD AX, 1234H
•MOV ECX, 123456H MOV B1, 12H
•MOV W1, 3456H ADD D1, 32123456H
其中:B1、W1和D1分别是字节、字和双字单元。 以上指令中的第二操作数都是立即数,在汇编语言中,规定:
立即数不能作为指令中的第一操作数。该规定与高级语言中 “赋值语句的左边不能是常量”的规定相一致。 使用立即寻址的指令主要用来给寄存器赋初值。
(2) 符号整数
符号整数是保存在字节、字、双字或四 字中的带符号的二进制数。对于符号整数 的所有操作都假定用2的补码表示。符号位 定位在操作数的最高位。
负数的符号位为1,正数的符号位为0。 整数值的范围,对于字节,从-128到+127; 对于字从-32768到+32767;对于双字,从231到+(231-1);对于四字,从-263到+ (263-1)。
(1) 指令(立即数); (2) 寄存器; (3) 存储单元;(这里一般指数据段或堆栈段) (4) I/O 端口。
3.3.1 立即数寻址方式(Immediate Addressing )
某些指令用包含在指令中的数据作为源操作数, 这些操作数称为立即操作数(或简称为立即数)。
立即操作数可以是8位或16位,并且是指令的一部分。立即 数据总是紧跟在指令操作码之后并和操作码一起存放在代码段 中,因而立即数据总是和操作码一起被放入BIU中的指令队列 里,在指令执行时不需再存取存储器。
作码的保留名;
(3) 操作数参数1(argument1)、参数2(argument2)和参 数3(argument3)是任选的,可以有零到三个操作数。
指令的机器码格式请参考教材P416页附录2
操作数参数的数量取决于操作码。若存在 操作数参数,它们可能是文字或数据项的标 识符、操作数标识符、寄存器的保留名或者 是在程序的另一部分中声明的赋予数据项的 标识符。
四字是在Intel 80486处理器中引入IA32 结构的,双四字是在具有SSE扩展的 Pentium Ⅲ 处理器中引入的。
基本数据类型作为内存中的操作数引用时的字节顺序。
低字节(位0至位7)占用内存中的最低地址, 该地址也是此操作数的地址。
3.1.1 字、双字、四字和双四字的对齐
字、双字和四字在内存中并不需要对齐至自然 边界。(字、双字和四字的自然边界是偶数编号 的地址,对于双字和四字来说,地址要分别能被4 和8除尽。)
然而,为了改进程序的性能,数据结构(特别 是堆栈)只要可能就应该在自然边界上对齐。因 为对于不对齐的存储访问,处理器要求做两次存 储访问操作;而对于对齐的访问,只要进行一次 存储访问操作。
00001H 00003H 00004H
00000H 00002H 00004H
D0…D7 D8…D15
FFFFFH
当在算术和逻辑等指令中存在两个操作数 时,右边的操作数是源,左边的操作数是目 的。
例:
STC
MOV AX, [BX]
MOV AX, ES:[BX + SI + 100]
3.3 8086指令的操作数寻址方式
8086 机器指令有零个或多个操作数。某些操 作数是显式规定的,有的是指令中隐含的。一个 操作数能定位在以下之一中:
当在内存中存储整数值时,字整数存放
在两个连续字节中;双字整数存放在四个 连续字节中;四字整数存放在八个连续的 字节中。
2. 浮点数据类型
IA-32结构定义和操作三种浮点数据类型: 单精度浮点数、双精度浮点数和扩展的双 精度浮点数。
3.1.3 指针数据类型
指针是内存单元的地址,如图所示。IA-32 结构定义两 种类型的指针:近(near)指针(32位)和远(far)指 针(48位)。near指针是段内的32位偏移量(也称为有效 地址)。Near指针在平面存储模式中用于所有存储器引用; 或在分段存储模式中用于同一段内的存储器引用。far指针 是一个48位的逻辑地址,包含16位段选择子和32位的偏 移量。far指针用于在分段存储模式中的跨段存储引用。
8086是16位段地址+16位偏移量
3.1.4 位字段数据类型
一个位字段是连续的位序列。它能在内 存中任何字节的任一位位置开始并能包含 最多至32位。
3.1.5 串数据类型
串是位、字节、字或双字的连续序列。 位串能从任一字节的任一位开始并能包含 多至232-1位。字节串能包含字节、字或双 字,其范围能从0至232-1字节(4GB)。
FFFFEH
3.1.2 数字数据类型
虽然字节、 字和双字是IA32 结构的基本 数据类型,但某 些指令对这些数 据类型的附加解 释允许在数字数 据类型(带符号 的或无符号整数 和浮点数)上操 作。这些数字数 据类型如图所示。
1. 整数
IA-32结构定义两种类型整数:无符号整数和 符号整数。
无符号整数是原始二进制值,范围从0到所选 择的操作数尺寸能编码的最大正数;
符号整数是2的补码二进制值,能用于表示正 的和负的整数值。
-3 原码: 1000 0011 正数的反码、补码均与原码相同 反码: 1111 1100 补码: 1111 1101
或用0减原码
(1) 无符号整数
无符号整数是包含字节、字、双字和四 字中的无符号的二进制数。它们的值的范 围,对于字节是从0到255;对于字,从0到 65535;对于双字,从0到232-1;对于四字, 从0到264-1。无符号整数有时作为原始数引 用。