版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-7-11 4.1 汇编语言的基本概念汇编语言的基本概念 4.2 80 x86指令系统指令系统 4.3 80 x86的寻址方式的寻址方式 4.4 8086指令系统指令系统 4.5 80 x86指令系统指令系统 第4章 汇编语言基础 本章重点 u 8086指令特点指令特点 u 8086的寻址方式的寻址方式 u 8086的指令格式及数据类型的指令格式及数据类型 u 8086的指令集的指令集 u 汇编语言(汇编语言(Assembly Language)是面向机器)是面向机器 的程序设计语言。的程序设计语言。 u 在汇编语言中,用助记符(在汇编语言中,用助记符(Memoni)代替操作)代替操作
2、 码,用地址符号(码,用地址符号(Symbol)或标号()或标号(Label)代)代 替地址码书写程序,使程序编写更加简单、容易,替地址码书写程序,使程序编写更加简单、容易, 大大提高了编程效率,用汇编语言书写出的程序大大提高了编程效率,用汇编语言书写出的程序 就称为汇编语言源程序。就称为汇编语言源程序。 u 汇编语言也称为符号语言。汇编语言也称为符号语言。 4.1 汇编语言的基本概念汇编语言的基本概念 4.1 汇编语言的基本概念汇编语言的基本概念 4.1.1 汇编语言的基本语法汇编语言的基本语法 4.1.1.1 汇编语言的语句类型汇编语言的语句类型 (1)指令型语句由指令助记符构成,每一条指
3、令性语句都)指令型语句由指令助记符构成,每一条指令性语句都 有一条机器码指令与其相对应,即汇编时生成目标代码(机有一条机器码指令与其相对应,即汇编时生成目标代码(机 器代码)。器代码)。 (2)指示型语句由伪指令构成,它告诉汇编器应如何对源)指示型语句由伪指令构成,它告诉汇编器应如何对源 程序进行汇编,如何定义变量、分配存储单元以及指示程序程序进行汇编,如何定义变量、分配存储单元以及指示程序 开始和结束等。这种动作并不会产生机器指令,也不会对目开始和结束等。这种动作并不会产生机器指令,也不会对目 标代码有任何影响。标代码有任何影响。 4.1.1 汇编语言的基本语法汇编语言的基本语法 4.1.1
4、.2常量、变量、标号、运算符和表达式常量、变量、标号、运算符和表达式 1常量常量 常量是没有任何属性的纯数值。在汇编期间,它的值已常量是没有任何属性的纯数值。在汇编期间,它的值已 能完全确定,且在程序运行中,它也不会发生变化。它可以能完全确定,且在程序运行中,它也不会发生变化。它可以 有以下几种类型:有以下几种类型: (1)二进制常量是由一串)二进制常量是由一串“0”和和“1”组成的序列,并以字组成的序列,并以字 母母B结尾。例如结尾。例如00110110B是二进制数。是二进制数。 (2)八进制常量是以字母)八进制常量是以字母O或或Q结尾的,由结尾的,由07的数字组成的数字组成 的序列。例如的
5、序列。例如357Q、65O都是八进制数。都是八进制数。 (3)十进制常量是由若干个)十进制常量是由若干个09的数字组成的序列,并以字的数字组成的序列,并以字 母母D结尾。可省略结尾。可省略D,数字序列后无任何字母的常数被默认,数字序列后无任何字母的常数被默认 为十进制数。例如为十进制数。例如375D、148都是十进制数。都是十进制数。 (4)十六进制常量是由若干个)十六进制常量是由若干个09的数字及的数字及AF的字母组的字母组 成的序列,并以字母成的序列,并以字母H结尾。例如结尾。例如5BF8H、3214H。对于以。对于以 字母字母AF起头的十六进制数,必须在前边加一个起头的十六进制数,必须在
6、前边加一个0,以便与,以便与 标识符区别开,否则汇编程序会将其误认为标识符,汇编时标识符区别开,否则汇编程序会将其误认为标识符,汇编时 将报错。将报错。 (5)实数:它由整数、小数和指数部分组成,这是计)实数:它由整数、小数和指数部分组成,这是计 算机中的浮点表示法。实数一般用十进制数形式给出,实数算机中的浮点表示法。实数一般用十进制数形式给出,实数 的格式如下:的格式如下: 整数部分整数部分.小数部分小数部分指数部分。指数部分。 其中,整数和小数部分合成的数值称为尾数,是带符号其中,整数和小数部分合成的数值称为尾数,是带符号 数。指数部分在字母数。指数部分在字母E之后,表示尾数的数量级。例如
7、之后,表示尾数的数量级。例如 6.317E-4。 4.1 汇编语言的基本概念汇编语言的基本概念 (6)字符常量和字符串常量:以单引号引起来的单个字符)字符常量和字符串常量:以单引号引起来的单个字符 为字符常量。以双引号引起来的单个或多个字符为字符串常为字符常量。以双引号引起来的单个或多个字符为字符串常 量。这些字符以量。这些字符以ASC码形式存储在内存中,如:码形式存储在内存中,如: A为字符常量(内存中的为字符常量(内存中的ASCII值为值为41H);); “A”为字符串常量(内存中的为字符串常量(内存中的ASCII值为值为41H,00);); “ABC”为字符串常量(内存中的为字符串常量(
8、内存中的ASCII值为值为41H,42H, 43H,00);); “123”为字符串常量(内存中的为字符串常量(内存中的ASCII值为值为31H,32H,33H, 00);); 注意,字符常量的大写与小写代表不同的常量。注意,字符常量的大写与小写代表不同的常量。 4.1 汇编语言的基本概念汇编语言的基本概念 4.1 汇编语言的基本概念汇编语言的基本概念 2变量变量 变量是在程序运行期间可以改变的量,变量名是存放数变量是在程序运行期间可以改变的量,变量名是存放数 据的存储单元的符号地址,而该存储单元中的数据是变量的据的存储单元的符号地址,而该存储单元中的数据是变量的 值,因此可以用变量名来访问变
9、量。所有的变量都有三种属值,因此可以用变量名来访问变量。所有的变量都有三种属 性:性: (1)段值()段值(SEG):变量所在段的段首地址。):变量所在段的段首地址。 (2)偏移量()偏移量(OFFSET):偏移量是):偏移量是16位无符号数,它表位无符号数,它表 示从段首地址到变量存储单元位置之间的字节数。示从段首地址到变量存储单元位置之间的字节数。 (3)类型()类型(TYPE):变量的类型是所定义的每个变量所占):变量的类型是所定义的每个变量所占 据的字节数。变量类型可以为字节、字、双字、四字或据的字节数。变量类型可以为字节、字、双字、四字或10字字 节。变量按标识符的规则取名。变量是由
10、数据定义伪指令来节。变量按标识符的规则取名。变量是由数据定义伪指令来 定义的。定义的。 3标号标号 标号是存放某条指令的存储单元的符号地址,常作为转标号是存放某条指令的存储单元的符号地址,常作为转 移指令或子程序调用指令的目的操作数。标号有个属性:移指令或子程序调用指令的目的操作数。标号有个属性: 段地址、偏移地址和类型。标号的段地址是指标号所指向的段地址、偏移地址和类型。标号的段地址是指标号所指向的 指令代码所在段的段首地址。偏移量是指令代码所在段的段首地址。偏移量是16位无符号数,它表位无符号数,它表 示从段首地址到标号位置之间的字节数。类似地,上述两个示从段首地址到标号位置之间的字节数。
11、类似地,上述两个 属性就确定了标号所指向的指令在存储器中的段地址和偏移属性就确定了标号所指向的指令在存储器中的段地址和偏移 地址。地址。 标号的类型有两种:标号的类型有两种:NEAR和和FAR类型。类型。NEAR类型将类型将 产生一个两字节的偏移地址,它指定本标号只能被标号所在产生一个两字节的偏移地址,它指定本标号只能被标号所在 段的转移指令或调用指令引用,实现段内转移或调用。段的转移指令或调用指令引用,实现段内转移或调用。FAR 类型将产生一个包括段地址和偏移地址的四字节转移地址,类型将产生一个包括段地址和偏移地址的四字节转移地址, 它指定本标号可被其他段的转移指令和调用指令引用,实现它指定
12、本标号可被其他段的转移指令和调用指令引用,实现 段间转移或调用。段间转移或调用。 4.1 汇编语言的基本概念汇编语言的基本概念 4运算符和表达式运算符和表达式 表达式由操作数和运算符按语法规则组合而成,表达式的计表达式由操作数和运算符按语法规则组合而成,表达式的计 算结果是一个确定的值,在汇编期间由汇编程序计算。表达算结果是一个确定的值,在汇编期间由汇编程序计算。表达 式中的操作数可以是寄存器名、常量、标号或变量。运算符式中的操作数可以是寄存器名、常量、标号或变量。运算符 有以下几种:有以下几种: (1)算术运算符:算术运算符包括:)算术运算符:算术运算符包括:、 MOD(模除)。(模除)。
13、算术运算符可用于数值表达式或地址表达式中。当用于地址算术运算符可用于数值表达式或地址表达式中。当用于地址 表达式时,只有当其结果有明确的物理意义时才是有效的。表达式时,只有当其结果有明确的物理意义时才是有效的。 例如,两个地址相乘或相除是无意义的。在地址表达式中,例如,两个地址相乘或相除是无意义的。在地址表达式中, 可以使用可以使用或或,但也必须注意其物理意义。例如,两个不,但也必须注意其物理意义。例如,两个不 同段的地址相加也是无意义的。经常使用的形式是地址同段的地址相加也是无意义的。经常使用的形式是地址数数 字量,它们是有意义的。字量,它们是有意义的。 4.1 汇编语言的基本概念汇编语言的
14、基本概念 4运算符和表达式运算符和表达式 (2)逻辑运算符:逻辑运算符包括)逻辑运算符:逻辑运算符包括NOT、AND、OR、 XOR,分别对常数进行按位逻辑非、逻辑与、逻辑或、异或,分别对常数进行按位逻辑非、逻辑与、逻辑或、异或 运算。逻辑运算符是按位操作的,它只能用于数值表达式中。运算。逻辑运算符是按位操作的,它只能用于数值表达式中。 (3)关系运算符:关系运算符包括)关系运算符:关系运算符包括EQ、NE、LT、GT、 LE、GE,分别表示相等、不等、小于、大于、小于等于、分别表示相等、不等、小于、大于、小于等于、 大于等于。关系运算符用于比较两个表达式,表达式中的项大于等于。关系运算符用于
15、比较两个表达式,表达式中的项 必须是常数或同一段内的变量。对于常数按无符号数比较,必须是常数或同一段内的变量。对于常数按无符号数比较, 对于变量则比较它们的偏移量。如果比较结果为对于变量则比较它们的偏移量。如果比较结果为真真,用,用 0FFFFH表示;结果为表示;结果为假假,用,用表示。表示。 4.1 汇编语言的基本概念汇编语言的基本概念 4运算符和表达式运算符和表达式 (4)分析运算符:)分析运算符: 分析运算符用于分解存储器操作数(标号、变量)的各部分分析运算符用于分解存储器操作数(标号、变量)的各部分 (段地址、偏移地址、类型等),并返回相应的值。分析运(段地址、偏移地址、类型等),并返
16、回相应的值。分析运 算符包括:算符包括:TYPE、LENGTH、SIZE、OFFSET、SEG等。等。 TYPE:取类型运算符:取类型运算符 格式为:格式为:TYPE 表达式表达式 如果表达式是变量,则汇编程序将回送该变量的以字节数表如果表达式是变量,则汇编程序将回送该变量的以字节数表 示的类型:示的类型:DB为为1,DW为为2,DD为为4,DF为为6,DQ为为8, DT为为10。如果表达式是标号,则汇编程序将回送代表该标。如果表达式是标号,则汇编程序将回送代表该标 号类型的数值:号类型的数值:NEAR为为 -1,FAR为为 -2。如果表达式为常数,。如果表达式为常数, 则应回送则应回送0。
17、LENGTH:取变量长度运算符:取变量长度运算符 格式为:格式为:LENGTH 变量变量 4.1 汇编语言的基本概念汇编语言的基本概念 对于变量中使用对于变量中使用DUP的的情况,汇编程序将回送分配给该情况,汇编程序将回送分配给该 变量的单元数,而对于其他情况则送变量的单元数,而对于其他情况则送1。 SIZE:取变量大小运算符:取变量大小运算符 格式为:格式为:SIZE 变量变量 汇编程序应回送分配给该变量的字节数。但是,此值是汇编程序应回送分配给该变量的字节数。但是,此值是 LENGTH值和值和TYPE值的乘积。值的乘积。 OFFSET:取偏移地址运算符:取偏移地址运算符 格式为:格式为:O
18、FFSET 变量或标号变量或标号 汇编程序将回送变量或标号的偏移地址值。汇编程序将回送变量或标号的偏移地址值。 SEG:取段地址运算符:取段地址运算符 格式为:格式为:SEG 变量或标号变量或标号 汇编程序将回送变量或标号的段地址值。汇编程序将回送变量或标号的段地址值。 4.1 汇编语言的基本概念汇编语言的基本概念 对于变量中使用对于变量中使用DUP的情况,汇编程序将回送分配给该的情况,汇编程序将回送分配给该 变量的单元数,而对于其他情况则送变量的单元数,而对于其他情况则送1。 SIZE:取变量大小运算符:取变量大小运算符 格式为:格式为:SIZE 变量变量 汇编程序应回送分配给该变量的字节数
19、。但是,此值是汇编程序应回送分配给该变量的字节数。但是,此值是 LENGTH值和值和TYPE值的乘积。值的乘积。 OFFSET:取偏移地址运算符取偏移地址运算符 格式为:格式为:OFFSET 变量或标号变量或标号 汇编程序将回送变量或标号的偏移地址值。汇编程序将回送变量或标号的偏移地址值。 SEG:取段地址运算符:取段地址运算符 格式为:格式为:SEG 变量或标号变量或标号 汇编程序将回送变量或标号的段地址值。汇编程序将回送变量或标号的段地址值。 4.1 汇编语言的基本概念汇编语言的基本概念 4运算符和表达式运算符和表达式 (5)属性修改运算符:这类运算符有)属性修改运算符:这类运算符有PTR
20、和和THIS,PTR (修改属性运算符)是用来重新定义已定义过的变量或标号(修改属性运算符)是用来重新定义已定义过的变量或标号 的类型。的类型。THIS(类型指定运算符)可以用来改变存储区的(类型指定运算符)可以用来改变存储区的 类型,类型,THIS运算符的运算对象是类型(运算符的运算对象是类型(BYTE、WORD、 DWORD)或距离()或距离(NESR、FAR),用于规定所指变量或),用于规定所指变量或 标号的类型属性或距离属性。标号的类型属性或距离属性。 在计算表达式时,应该首先计算优先级高的运算符,然在计算表达式时,应该首先计算优先级高的运算符,然 后从左到右地对优先级相同的运算符进行
21、计算。括号也可以后从左到右地对优先级相同的运算符进行计算。括号也可以 改变计算次序,括号内的表达式应优先计算。运算符的优先改变计算次序,括号内的表达式应优先计算。运算符的优先 级排列如表级排列如表4.1所示。所示。 4.1 汇编语言的基本概念汇编语言的基本概念 2021-7-12021-7-11717 4.2 80 x864.2 80 x86指令特点指令特点 指令:指令: u控制计算机完成某种操作的命令控制计算机完成某种操作的命令 : u处理器所能识别的所有指令的集合处理器所能识别的所有指令的集合 指令的兼容性:指令的兼容性: u同一系列机的指令都是兼容的同一系列机的指令都是兼容的 机器语言机
22、器语言:低级语言低级语言, ,它是用二进制代码表示的它是用二进制代码表示的 汇编语言汇编语言:中级语言,助记符形式,它是符号化的机器语言中级语言,助记符形式,它是符号化的机器语言 高级语言高级语言: :如如Java,C+Java,C+、C C、FortranFortran、BasicBasic u数据传送数据传送Data TransferData Transfer u算术运算算术运算ArithmeticArithmetic u逻辑运算和移位逻辑运算和移位logiclogic u串操作串操作string manipulationstring manipulation u控制转移类控制转移类con
23、trol transfercontrol transfer u处理器控制处理器控制processor control processor control 80888088和和80868086的指令系统是完全相同的;的指令系统是完全相同的; 80868086的指令系统共包含的指令系统共包含9292种基本指令,按照功能分为种基本指令,按照功能分为6 6大类:大类: 指令中应包含的信息指令中应包含的信息 运算数据的来源运算数据的来源 运算结果的去向运算结果的去向 执行的操作执行的操作 1. 1. 指令的基本构成指令的基本构成 标号:标号:操作码操作码操作数操作数;注释;注释 , 它表示本指令的它表示
24、本指令的操作操作 类型类型,用助记符形式表,用助记符形式表 示,是指令语句中的关示,是指令语句中的关 键字,键字,不可缺省不可缺省,必要,必要 时可在指令助记符的前时可在指令助记符的前 面加上一个或多个面加上一个或多个“前前 缀缀”,从而实现某些附,从而实现某些附 加操作加操作。 标号是标号是给该指令所在地给该指令所在地 址取的名字址取的名字,必须后跟冒,必须后跟冒 号号“:”,它可以,它可以缺省缺省。 属于标识符,必须遵循一属于标识符,必须遵循一 定的规则定的规则。 操作数是操作数是参加本指令运算参加本指令运算 的的数据数据,有些指令不需要操,有些指令不需要操 作数,可以缺省;有些指令作数,
25、可以缺省;有些指令 需要两个操作数,这时必须需要两个操作数,这时必须 用逗号(,)将两个操作数用逗号(,)将两个操作数 分开;有些操作数可以用表分开;有些操作数可以用表 达式来表示。达式来表示。 用来对指令功能加以说用来对指令功能加以说 明,给阅读程序带来方便,明,给阅读程序带来方便, 是可选项,允许缺省,如果是可选项,允许缺省,如果 带注释则必须用分号(;)带注释则必须用分号(;) 开头,汇编程序不对它做任开头,汇编程序不对它做任 何处理何处理。 操作码操作码目的目的操作数,操作数,源源操作数操作数 12字节字节 17字节字节 立即数操作数、立即数操作数、 寄存器操作数、寄存器操作数、 存储
26、器操作数存储器操作数 (1)指令的基本构成指令的基本构成 一条一条80868086指令包含有操作码和操作数两部分,指令的长度在指令包含有操作码和操作数两部分,指令的长度在 1717个字节之间个字节之间 指明指明操作类型操作类型( (助记助记 符符) ) 指明指令指明指令操作对象操作对象或或 操作对象存放操作对象存放地址地址 8 8位数位数1616位数位数 无符号数无符号数00H00H0 0FFH(0255)FFH(0255)0000H0000H0 0FFFFHFFFFH (065535)(065535) 带符号数带符号数80H7FH(-128+127)80H7FH(-128+127)8000H
27、7FFFH8000H7FFFH (-32768+32767)(-32768+32767) 1 1)立即数操作数)立即数操作数 即即常数常数,不因指令的执行而改变,可以是字节(,不因指令的执行而改变,可以是字节(8 8位)、位)、 字(字(1616位);可以是有符号数或无符号数,但数的取值范位);可以是有符号数或无符号数,但数的取值范 围必须符合相应字长数的规定。围必须符合相应字长数的规定。 注意:立即数操作数只能用作源操作数注意:立即数操作数只能用作源操作数,不能用作目的操作数,不能用作目的操作数 2 2)寄存器操作数)寄存器操作数 寄存器操作数存放在寄存器操作数存放在CPUCPU的的8 8个
28、个 通用寄存器或通用寄存器或4 4个段寄存器中,个段寄存器中, 既可以用作源操作数也可以用既可以用作源操作数也可以用 作目的操作数作目的操作数;但;但CSCS一般不作一般不作 为目的操作数为目的操作数; 个别指令将个别指令将FLAGSFLAGS作为操作数作为操作数 AHAL BL CL DLDH CH BH DX CX BX AX SP BP DI SI 目的变址寄存器 源变址寄存器 基址指针寄存器 堆栈指针寄存器 通 用 寄 存 器 通用寄存器中AX、BX、CX、DX、 SI、DI、BP、SP存放字操作数; AH、AL、BH、BL、CH、CL、DH、 DL存放字节操作数; 3 3)存储器操作
29、数)存储器操作数 u存储器操作数可以是字节、字、双字,分别存在存储器操作数可以是字节、字、双字,分别存在1 1个、个、2 2个、个、 4 4个存储单元中;它个存储单元中;它既可以用作源操作数也可以用作目的操既可以用作源操作数也可以用作目的操 作数作数; u注意:对大多数指令,注意:对大多数指令,不允许源操作数和目的操作数同时不允许源操作数和目的操作数同时 为存储器操作数为存储器操作数,即不允许存储器到存储器的操作。,即不允许存储器到存储器的操作。 u存储器单元的地址由两部分组成:段基址和偏移地址(也存储器单元的地址由两部分组成:段基址和偏移地址(也 叫有效地址),叫有效地址),所以各种存储器操
30、作,都涉及到段寄存器。所以各种存储器操作,都涉及到段寄存器。 u一条指令的执行时间应包括取指令、取操作数、执行指令一条指令的执行时间应包括取指令、取操作数、执行指令 及传送结果及传送结果4 4部分时间,通常用部分时间,通常用时钟周期时钟周期数来表示;数来表示; u不同的指令在执行时间上有很大差别。不同的指令在执行时间上有很大差别。 2. 2. 指令的执行时间指令的执行时间 p寄存器操作数的指令执行速度最快;寄存器操作数的指令执行速度最快; p立即操作数作为指令的一部分存放在指令队列中,因此执行立即操作数作为指令的一部分存放在指令队列中,因此执行 指令时不需要访问内存,执行速度也比较快;指令时不
31、需要访问内存,执行速度也比较快; p存储器操作数放在内存单元中,首先由存储器操作数放在内存单元中,首先由BIUBIU计算出计算出2020位物理位物理 地址,然后再执行存储器的读写操作,指令的执行速度最慢。地址,然后再执行存储器的读写操作,指令的执行速度最慢。 例如:例如:CPUCPU的时钟频率为的时钟频率为5MHz5MHz,即一个时钟周期为,即一个时钟周期为0.20.2微秒,微秒, 则寄存器到寄存器之间的传送指令的执行时间为:则寄存器到寄存器之间的传送指令的执行时间为: t=2X0.2=0.4 t=2X0.2=0.4微秒微秒 再如:立即操作数传送到寄存器的指令执行时间为:再如:立即操作数传送到
32、寄存器的指令执行时间为: t=4X0.2=0.8 t=4X0.2=0.8微秒微秒 4.2.2 指令流水线和并行控制指令流水线和并行控制 1并行控制技术并行控制技术 并行控制技术是指计算机同时执行多个任务或多条指令或并行控制技术是指计算机同时执行多个任务或多条指令或 同时对多个数据项进行处理的技术。早期的计算机是基于同时对多个数据项进行处理的技术。早期的计算机是基于 冯冯诺伊曼的体系结构,采用的是串行处理方式,计算机的各诺伊曼的体系结构,采用的是串行处理方式,计算机的各 个操作只能串行地完成,某一时刻只能进行一个操作。这类计个操作只能串行地完成,某一时刻只能进行一个操作。这类计 算机也称为串行计
33、算机。随着计算机技术的发展,现代计算机算机也称为串行计算机。随着计算机技术的发展,现代计算机 均具有不同程度的并行性。均具有不同程度的并行性。 并行处理计算机主要指以下两种类型的计算机:并行处理计算机主要指以下两种类型的计算机:能同时能同时 执行多条指令或同时处理多个数据项的单中央处理器计算机;执行多条指令或同时处理多个数据项的单中央处理器计算机; 多处理机系统。多处理机系统。 4.2 80 x86指令系统指令系统 2流水线流水线 流水线是流水线是Intel首次在首次在486芯片中开始使用的。它是将指令芯片中开始使用的。它是将指令 的执行过程分解为若干段,每段进行一部分处理。一条指令的执行过程
34、分解为若干段,每段进行一部分处理。一条指令 顺序流过所有段即执行完毕获得结果。当本条指令在本段已顺序流过所有段即执行完毕获得结果。当本条指令在本段已 被处理完毕而进入下段时,下条指令即可流入本段。因此,被处理完毕而进入下段时,下条指令即可流入本段。因此, 在整个流水线上可以同时处理若干条指令。若各段的执行时在整个流水线上可以同时处理若干条指令。若各段的执行时 间均为一个时钟节拍,则在正常情况下每拍可以输出一个结间均为一个时钟节拍,则在正常情况下每拍可以输出一个结 果,即完成一条指令。这就可加快处理机的速度。这种指令果,即完成一条指令。这就可加快处理机的速度。这种指令 重叠、处理部件连续工作的计
35、算机(或处理器),称为流水重叠、处理部件连续工作的计算机(或处理器),称为流水 线计算机(或处理器)。线计算机(或处理器)。 4.2 80 x86指令系统指令系统 图4.3 流水线工作情况 时 间 单 位 第 一 条 指 令 第 二 条 指 令 第 三 条 指 令 取 指 译 码 地 址 生 成 执 行 写 结 果 取 指 译 码 地 址 生 成 执 行 写 结 果 取 指 译 码 地 址 生 成 执 行 写 结 果 0 1 2 3 4 5 6 7 4.2 80 x86指令系统指令系统 2021-7-12021-7-12828 4.3 80 x864.3 80 x86寻址方式寻址方式 操作码操
36、作码目的目的操作数,操作数,源源操作数操作数 指明指明操作类型操作类型( (助记助记 符符) ) 指明指令指明指令操作对象操作对象或或操作对象存放地址操作对象存放地址 寻址方式寻址方式是指是指CPUCPU寻找操作数或操作数地址寻找操作数或操作数地址的方法的方法 对象:对象:目的操作数、目的操作数、源操作数源操作数 1. 1. 立即寻址立即寻址(Immediate Addressing)(Immediate Addressing) n源操作数是一个源操作数是一个立即数立即数,8 8位或位或1616位的整数;位的整数; n操作数直接放在操作码的后面,作为指令的一部分,存放操作数直接放在操作码的后面
37、,作为指令的一部分,存放 在代码段里;在代码段里;若为若为1616位则低位则低8 8位在低地址单元,高位在低地址单元,高8 8位在高位在高 地址单元存放。地址单元存放。 例:例: MOV AL,05HMOV AL,05H 指令执行后指令执行后: : (AL)=05H(AL)=05H 例:例: MOV AX,3064HMOV AX,3064H 指令执行后指令执行后: (AX)=3064H: (AX)=3064H 立即寻址方式立即寻址方式 . 操作码操作码 64H64H 30H30H 代代 码码 段段 64H64H . 30H30H ALALAHAH 指指 令令 . 操作码操作码 05H05H 代
38、代 码码 段段 05H05H . ALAL 指指 令令 使用场合:使用场合:经常用于给寄存器赋初值。经常用于给寄存器赋初值。 注意:注意:只能用于源操作数字段只能用于源操作数字段,不能,不能 用于目的操作数字段。用于目的操作数字段。 2 2 直接寻址(直接寻址(Direct AddressingDirect Addressing) n数据总是在数据总是在内存中内存中,内存单元的有效地址(偏移地址)由,内存单元的有效地址(偏移地址)由 指令直接指出指令直接指出 n1616位偏移地址必须用位偏移地址必须用 括起来括起来 n1616位偏移地址直接放在操作码后面,与操作码一起存放在内位偏移地址直接放在
39、操作码后面,与操作码一起存放在内 存的代码段;低存的代码段;低8 8位在前,高位在前,高8 8位在后位在后 n默认段为默认段为DSDS数据段,允许段超越。如数据段,允许段超越。如MOV AXMOV AX,ES:ES: 1000H1000H MOV AL, 4000H MOV AL, 4000H ;将;将DS:4000HDS:4000H之内容送入之内容送入AL(AL(字字 节操作)节操作) MOV 2000H, BXMOV 2000H, BX;将;将BLBL之内容送入之内容送入DS:2000HDS:2000H 将将BHBH之内容送入之内容送入DS:2001H DS:2001H 注意:注意:MOV
40、 AX, 2510HMOV AX, 2510H与与MOV AX, 2510HMOV AX, 2510H的区别!的区别! MOVMOV操作码操作码 02H02H 31H31H 0111010101110101 1001101110011011 23102H23102H 23103H23103H 代码段代码段数据段数据段 AHAHALAL 例如:例如: MOV AX, 3102HMOV AX, 3102H (字操作)(字操作) 设设DS=2000HDS=2000H,则物理地址为:,则物理地址为: 2000H2000H* *10H+3102H=23102H10H+3102H=23102H 功能:功能
41、: 将将DS:3102HDS:3102H之内容送入之内容送入ALAL 将将DS:3103HDS:3103H之内容送入之内容送入AHAH 直接寻址必须先直接寻址必须先求出操作数的物理地址求出操作数的物理地址,然后再访问存储器,然后再访问存储器 才能取得操作数才能取得操作数 又如:用符号地址代替数值地址。又如:用符号地址代替数值地址。 MOV AXMOV AX,VALUE VALUE VALUEVALUE:有效操作数单元的符号:有效操作数单元的符号 地址。但必须在程序的地址。但必须在程序的 开始处予以定义。开始处予以定义。 直接寻址方式直接寻址方式 6000H6000H. 操作码操作码 0000
42、3131 . 50H50H 30H30H . 6 0 0 0 06 0 0 0 0 3 1 0 03 1 0 0 + + 6 3 1 0 06 3 1 0 0 63100H63100H 30H30H50H50H AHAHALAL 代代 码码 段段 数数 据据 段段 DSDS 例:例:MOV AXMOV AX,3100H3100H (DSDS)=6000H , (63100H)=3050H =6000H , (63100H)=3050H 则则: :(AXAX)= = 3050H3050H 如:如:VALUEVALUE在附加段中,在附加段中, 则应指定段跨越。则应指定段跨越。 MOV AXMOV
43、AX,ESES:VALUEVALUE 注意:注意: (1 1)直接寻址方式)直接寻址方式隐含的段寄存器是隐含的段寄存器是 DSDS,8086/80888086/8088允许段允许段跨越跨越, , 即即允许使用允许使用 CS SS ESCS SS ES作为段寄存器,这时,必须在指令中特作为段寄存器,这时,必须在指令中特 别标明。别标明。 (2 2)IBM PCIBM PC机中规定机中规定双操作数不能同时为内存,指令必须有双操作数不能同时为内存,指令必须有 一个操作数使用寄存器一个操作数使用寄存器方式,这就是常常先要把一个变量送到方式,这就是常常先要把一个变量送到 寄存器去的原因。寄存器去的原因。
44、 例:例: 要处理某存放在存储器里的变量,可以用直接寻址方式把变量要处理某存放在存储器里的变量,可以用直接寻址方式把变量 先取到一个寄存器中再作处理。先取到一个寄存器中再作处理。 n操作数在寄存器中,指令指定寄存器号。操作数在寄存器中,指令指定寄存器号。 n对于位操作数,寄存器可以是对于位操作数,寄存器可以是: : ,, ,, 以及以及段寄存器段寄存器。 n对于位操作数,寄存器可以是对于位操作数,寄存器可以是: : ,。,。 3. 3. 寄存器寻址(寄存器寻址(Register AddressingRegister Addressing) 这种寻址方式因为操作数在寄存器中这种寻址方式因为操作数
45、在寄存器中, ,不需要访问存储器,不需要访问存储器, 运算速度较高运算速度较高。 例:例: 指令执行前指令执行前:(AX)3064 (SS)1234 MOV SS,AX 指令执行后指令执行后: (SS) (AX) 指令执行前:指令执行前: 指令执行后指令执行后: 寄存器寻址方式寄存器寻址方式 SSSSAXAX 3064H3064H3064H3064H 1234H1234H3064H3064H 3064H 保持不变保持不变 4.4.寄存器间接寻址寄存器间接寻址(Register Indirect Addressing)(Register Indirect Addressing) n与寄存器的寻址
46、方式不同,指令中指定的寄存器的内容不是与寄存器的寻址方式不同,指令中指定的寄存器的内容不是 操作数而是操作数的操作数而是操作数的偏移地址偏移地址; n操作数本身在操作数本身在内存内存中中 n能做这种用途的寄存器叫做能做这种用途的寄存器叫做地址指针寄存器地址指针寄存器。它们是。它们是SISI、DI DI 、BXBX、BPBP,也简称为,也简称为间址寄存器,间址寄存器, 使用时加使用时加 。 选择选择SISI、DI DI 、BXBX作间址寄存器时,操作数在数据段,作间址寄存器时,操作数在数据段, 段基址由段基址由DSDS决定;决定; 如果用如果用BPBP,则操作数在堆栈段,段基址由,则操作数在堆栈
47、段,段基址由SSSS决定。决定。 无论选择哪一个间址寄存器,都允许段超越。无论选择哪一个间址寄存器,都允许段超越。 注意:注意: 例:例:MOV BX,DI (DS)=6000H (DI)=2000H PA=62000H (62000H)=50A0H (BX)=50A0H 寄存器间接寻址方式寄存器间接寻址方式 MOV BX,DI 6000H6000H2000H2000H DSDSDIDI 6 0 0 0 06 0 0 0 0 2 20 00 00 0+ + 6 2 0 0 06 2 0 0 0 . AOHAOH 50H50H . 62000H62000H 50H50HA0HA0H BLBLBH
48、BH数数 据据 段段 注意:注意:MOV BX,DIMOV BX,DI和和 MOV BX,DIMOV BX,DI的区别!的区别! 例:例: MOV BP, AX 执行前:执行前: (SS)=1000H , (BP)=3000H , (AX)=1234H 执行后:执行后:PA=13000H (13000H)=1234H 1000H1000H3000H3000H SSSSBPBP 1 0 0 0 01 0 0 0 0 3 30 00 00 0+ + 1 3 0 0 01 3 0 0 0 . 34H34H 12H12H . 13000H13000H 12H12H34H34H ALALAHAH堆堆 栈
49、栈 段段 寄存器间接寻址方式寄存器间接寻址方式 MOV BP, AX 指令中可以指定指令中可以指定段跨越前缀段跨越前缀来取得其他来取得其他 段中的数据。段中的数据。 例:例:MOV ES:DI, AX MOV DX, DS:BP 这种寻址方法可以用于表格处理。这种寻址方法可以用于表格处理。 5.5.寄存器相对寻址寄存器相对寻址 (Register relative addressing) (Register relative addressing) EAEA= = (BX)(BX) (SI)(SI) (DI)(DI) + + 8位位移量8位位移量 16位位移量16位位移量 (BP)(BP) n
50、操作数存放操作数存放在在内存内存中中 n操作数的有效偏移地址是操作数的有效偏移地址是指令指定的间址寄存器的内容和指令指定的间址寄存器的内容和 指令中给出的一个指令中给出的一个8 8位或位或1616位地址偏移量之和位地址偏移量之和 PA=16d (DS)+PA=16d (DS)+ (BX)(BX) (SI)(SI) (DI)(DI) + + 8位位移量8位位移量 16位位移量16位位移量 PA=16d (SS)+PA=16d (SS)+ (BP)(BP) + + 8位位移量8位位移量 16位位移量16位位移量 除有除有段跨越前缀段跨越前缀之外,形成物理地址有二种方式:之外,形成物理地址有二种方式
51、: 例:例: MOV AX, COUNT BP 或或MOV AX, COUNT+BP 或或MOV AX, COUNT+BP COUNT为为16位位移量。位位移量。 指令执行前指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H 寄存器相对寻址方式寄存器相对寻址方式 MOV AX,COUNTBP OPOP OPOP 40H40H 20H20H . . 48H48H 55H55H . 55H55H48H48H 存储器存储器 操操 作作 码码 位移量位移量 COUNTCOUNT 代代 码码 段段 堆堆 栈栈 段段 55040H55040H 50
52、000H50000H AHAHALAL 指令执行后指令执行后:EA= PA= (AX)= 5040H 55040H 5548H 用途:这种寄存器相对寻址方式常用于用途:这种寄存器相对寻址方式常用于表格处理表格处理。 表格首地址表格首地址COUNT 修改间址寄存器来取得表格中的值。修改间址寄存器来取得表格中的值。 例:某数据表的首地址为例:某数据表的首地址为COUNT 欲读取表中第欲读取表中第10个数据个数据,存放到(存放到(AL)中。中。 第第10个数据的有效地址个数据的有效地址: EA= COUNT + 9 MOV SI , 09H MOV AL , SI+COUNT *相对寻址方式也可以使
53、用段跨越前缀相对寻址方式也可以使用段跨越前缀 MOV DL,ES:STRINGSI n操作数的操作数的有效地址是一个基址寄存器和一个变址寄存器的内有效地址是一个基址寄存器和一个变址寄存器的内 容之和容之和,基址寄存器名和变址寄存器名均有指令指定。,基址寄存器名和变址寄存器名均有指令指定。 (BP)(BP)+ + (DI)(DI) (SI)(SI) EA=EA= (BX)(BX)+ + (DI)(DI) (SI)(SI) EA=EA= 6. 6. 基址基址-变址寻址(变址寻址(Based indexed addressingBased indexed addressing) n操作数存放操作数存
54、放在在内存内存中中 除有除有段跨越前缀段跨越前缀之外,形成物理地址有二种方式:之外,形成物理地址有二种方式: PA=16d(DSPA=16d(DS)+)+ (BX)(BX)+ + (DI)(DI) (SI)(SI) PA=16d(SPA=16d(SS S)+)+ (BP)(BP) + + (DI)(DI) (SI)(SI) 例:例: MOV AX, BXSI 或或 MOV AX, BX+SI 执行指令前执行指令前: (DS)=3200H, (BX)=0456H, (SI) =1094H (334EAH)=4567H 执行指令后执行指令后: EA= PA= (AX)=基址加变址寻址方式基址加变址
55、寻址方式 MOV AX,BX+SI . . . 67H67H 45H45H 存储器存储器 32000H32000H 334EAH334EAH45H45H67H67H ALALAHAH 数数 据据 段段 . 14EAH 334EAH 4567H 用途:这种寻址方式同样适用于用途:这种寻址方式同样适用于数组或表格数组或表格处理。处理。 表格首地址放在基址寄存器中表格首地址放在基址寄存器中, 用变址寄存器来访问数组中的元素。用变址寄存器来访问数组中的元素。 二个寄存器都能修改,二个寄存器都能修改, 所以比相对寻址方式更灵。所以比相对寻址方式更灵。 这种寻址方式允许段跨越。这种寻址方式允许段跨越。 使
56、用段跨越前缀格式使用段跨越前缀格式: MOV AX,ES:BXSI MOV AX, BXBP MOV AX, SIDI n操作数操作数有效地址是一个基址寄存器和一个变址寄存器的内有效地址是一个基址寄存器和一个变址寄存器的内 容和容和8位或位或16位位移量之和位位移量之和 。 (BP)(BP) + + (DI)(DI) (SI)(SI) + + 8位位移量8位位移量 16位位移量16位位移量 EA=EA= (BX)(BX) + + (DI)(DI) (SI)(SI) + + 8位位移量8位位移量 16位位移量16位位移量 EA=EA= 7. 7. 基址基址-变址变址-相对寻址(相对寻址( Bas
57、ed indexed Based indexed relative addressing relative addressing) n操作数存放操作数存放在在内存内存中中 除有除有段跨越前缀段跨越前缀之外,形成物理地址有二种方式:之外,形成物理地址有二种方式: (DI)(DI) PA=16d(SSPA=16d(SS)+)+ (BP)(BP) + + (SI)(SI) + + 8位位移量8位位移量 16位位移量16位位移量 (DI)(DI) PA=16d(DSPA=16d(DS)+)+ (BX)(BX) + + (SI)(SI) + + 8位位移量8位位移量 16位位移量16位位移量 例:例:
58、MOV AX, MASKBXDI MOV AX, MASK BX+DI MOV AX,MASK+BX+DI 执行指令前执行指令前: (DS)=3000H (BX)=1346H (DI)=0500H MASK=1234H (32A7AH)=4050H 执行指令后执行指令后: EA= PA= (AX)= 相对基址加变址相对基址加变址 MOV AX, MASK+BX+DI OPOP OPOP 34H34H 12H12H . . 50H50H 40H40H 存储器存储器 30000H30000H 32A7AH32A7AH40H40H50H50H ALALAHAH 数数 据据 段段 操操 作作 码码 位
59、移位移 量量 MASKMASK 代代 码码 段段 2A7AH 32A7AH 4050H 用途:用途: 这种寻址方式为这种寻址方式为堆栈堆栈处理提供方便:处理提供方便: (BP) 栈顶(一般栈顶(一般 BP 可指向栈顶)可指向栈顶) 从栈顶到数组的首地址可以用位移从栈顶到数组的首地址可以用位移 量表示量表示(MASK). 变址寄存器(变址寄存器(SI)或()或(DI)指指 向数组中某个元素。向数组中某个元素。 MOV AX, DATABXBP MOV AX, DATASIDI 8.8.隐含寻址隐含寻址 n操作码本身隐含地指明了操作数或部分操作数的地址。操作码本身隐含地指明了操作数或部分操作数的地
60、址。 如:如:MUL BL;MUL BL; ALxBL AX ALxBL AX CPUCPU的寻址方式总结的寻址方式总结 获得操作数所在地址的寻址方式:获得操作数所在地址的寻址方式: u立即寻址立即寻址 u直接寻址直接寻址 u寄存器寻址寄存器寻址 u寄存器间接寻址寄存器间接寻址 u寄存器相对寻址寄存器相对寻址 u基址基址-变址寻址变址寻址 u基址基址-变址变址相对寻址相对寻址 u隐含寻址隐含寻址 MOV AX, 3102HMOV AX, 3102H MOV AL, 4000H MOV AL, 4000H MOV AL,BL MOV AL,BL MOV AX,SIMOV AX,SI MOV AX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慈善机构网络筹款与志愿者调度管理方案
- 家用电器行业高品质智能家电技术报告
- 人工智能基础与应用手册
- 湖南省衡阳市石鼓区2025届三年级数学第一学期阶段检测试题含解析
- 环保设备销售专员销售效果与服务态度绩效衡量表
- 美食文化节小学主题班会课件
- 客户反馈系统升级商洽函4篇
- 企业品质管理与持续改进实践作业指导书
- NBT 33012-2025《分布式电源监控系统功能规范》
- 心理健康周:建立积极心态小学主题班会课件
- 2024年湖南怀化洪江区招聘事业单位工作人员考试真题
- 2026年山东泰安市中考化学真题试题(含答案)
- 2026年重庆市地理生物会考真题试卷+解析及答案
- (2026版)《中华人民共和国国家发展规划法》解读
- 2025年少先队辅导员技能大赛考试测试题及参考答案
- 工程项目管理课程课件
- 蛋类生产车间管理制度及流程
- 水利工程质量培训制度
- 光伏电站工程吊篮施工方案
- 爆破作业项目现场安全管理规范
- 新生儿光照疗法
评论
0/150
提交评论