第3章 指令系统

  • 格式:ppt
  • 大小:1.05 MB
  • 文档页数:60

下载文档原格式

  / 50
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作数。在汇编指令中,立即数若是数值常数可直接书写,若是字符常 数,应加上引号。
3.1.3立即寻址
例如: MOV MOV MOV BL,20H; AX,12BCH; BX,”AB”; // 将8位立即数20H存入寄存器BL中 //将16位立即数12BCH存入寄存器AX中 //将字符串”AB” 存入寄存器BX中
; 将AX内容存入ES中偏移100H的字单元
(2)寄存器间接寻址方式
寄存器间接寻址方式是指指令所需操作数存放在存储器单元中,其地址 偏移量由基址寄存器BX、BP或变址寄存器SI、DI给出。若使用BP,默认 段为SS,若使用BX、SI和DI寄存器,默认段为DS。
操作数格式:[BX|BP|SI|DI] 寄存器间接寻址方式如图3-6所示。
图3-7 寄存器相对寻址方式
例如: MOV AL,ES:VAR[SI]
;设SI的内容为100H,VAR所指存储单元的偏移量为200H,则 源操作数偏移量为
300H,将ES段偏移量为300H的字节单元内容存入AL MOV 10H[BX],1234H
;设BX的内容为100H,则目的操作数偏移量为110H,将1234H存入DS段偏移量为 110H的字单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用了寄存器相对寻 址方式。
例如: MOV AL, -20H[BX][DI] ; 设BX的内容为100H,DI的内容为20H,则源操作数偏移量为 100H,将DS段偏移量为100H的字节单元内容存入AL
MOV 100H[BP][SI],AX ; 设BP的内容为1000H,DI的内容为200H,则目的操作数的偏移量
为1300H,将AX的内容存入SS段偏移量1300H的字单元
在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了相对基址变址寻址方式。
3.2 8086/8088指令系统
8086/8088指令系统中的指令按照功能可以分为六类:数据传送
指令、算术运算指令、逻辑运算指令、串操作指令、处理器控制指令
和控制转移指令。本节介绍数据传送指令、算术运算指令、逻辑运算 指令和处理器控制指令,串操作指令和控制转移指令将在第五章的相
图3-8所示
例如:
MOV
AX,ES:[BX][SI]
;设BX的内容为100H,SI的内容为20H,则源操作数偏移量为 120H,将ES段偏移120H的字单元内容存入AX
MOV
[BP][DI],AL
;设BP的内容为1000H,DI的内容为50H,则目的操作数的偏移 量为1050H,将AL的内容存入DS段偏移量为1050H的字节单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了基址变址寻址方式寻址方式。
关部分介绍。
3.2.1数据传送指令
数据传送指令用于寄存器、存储器或输入/输出端口之间传送数据或地 址。数据传送指令又可以分为通用数据传送指令、累加器专用传送指令、 地址传送指令和标志传送指令。 1.通用数据传送指令 (1)传送指令MOV 格式:MOV 目的操作数,源操作数 功能:将源操作数送入目的地址中,执行后,源操作数内容不变。它
为指令的一部分存放在代码段中。取出指令的同时也就取出了可以立即 使用的操作数,这样的操作数称为立即数。立即数可以是8位或16位数
,若是16位操作数,则低位字节存放在低地址单元中,高位字节存放在
高地址单元中。 立即寻址方式能够快速获得操作数,但适用范围有限,通常用于给寄
存器或存储器赋初值。立即寻址方式只能用于源操作数,不能用于目的
可以实现寄存器之间、寄存器与存储单元之间的数据传送,以及立即
数到寄存器或存储单元的传送。 对标志位的影响:无
(2)堆栈操作指令
堆栈是在存储器中开辟的一个特殊区域,它遵循“后进先出”的存 取原则。堆栈操作只能在栈顶进行,堆栈的操作有进栈和出栈两种。从
8086堆栈的组织形式来看,堆栈是从高地址向低地址方向生长的。最初
的物理地址,物理地址是由段基址和偏移量组成的,操作数物理地址计 算方法:
物理地址=16×段基址+偏移量
其中段基址取自段寄存器,所以指令只需提供计算偏移量所需要的 信息就可以了。在80x86中,根据对存储器单元地址偏移量的不同计算
方法,可以分为5种不同的存储器寻址方式。
需要指出的是,在80x86中,为了限制指令的长度,在同一条指令 中,不允许两个操作数同时采用存储器寻址方式。
(4)基址变址寻址方式 基址变址寻址方式是指指令所需操作数存放在存储器单元中,指令中 给定的一个基址寄存器名(BX或BP)和一个变址寄存器名(SI或DI),
两者内容之和为操作数的地址偏移量。若基址寄存器使用BP,默认段为
SS,若基址寄存器使用BX,默认段为DS。 操作数格式:[BX|BP][SI|DI]
示机器指令,容易阅读和使用,但在执行之前,必须先翻译成等价的机
器指令。若无特殊说明,本书此后所论及的指令均指汇编指令。
3.1.1 机器指令格式
计算机指令通常由操作码字段和操作数字段(操作码)两部分组成。 指令的基本格式如图3-1所示。
操作码 操作数
图3-1 指令的基本格式
1.操作码字段
操作码字段指示计算机所要执行的操作类型。如加、减、乘、除、 数据传送等。一台计算机可能有几十条至几百条指令,每条指令都有一
在上例中,各指令的源操作数均采用了立即寻址方式。
3.1.4寄存器寻址
寄存器寻址方式是指操作数存放在寄存器中,指令中直接给出寄 存器名,通过寄存器名找到操作数。对于16位操作数,寄存器可 以是AX、BX、CX、DX、SI、DI、SP、BP等,对于8位操作数, 寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL等。寄存器 寻址方式既可以用于源操作数,也可以用于目的操作数。
②出栈指令POP
格式:POP 目的操作数 功能:将栈顶单元的内容弹出(复制)到目的地址中,然后修改堆栈指针SP。 具体操作过程:先将当前SP所指单元的内容弹出到目的地址的低字节,然后将SP的内 容加1,再将当前SP所指单元的内容弹出到目的地址的高字节,然后再将SP的内容加1。 说明:目的操作数除CS以外的段寄存器操作数或字类型的存储器操作数,其长度必须 是16位。
操作码 目的操作数 , 源操作数
图3-2 双操作数指令格式
3.1.1 机器指令格式
(2)单操作数指令
单操作数指令中的操作数字段只提供一个操作数。其格式如图3-3所 示。
操作码 图3-3 单操作数指令格式 操作数
这类指令有两种情况,一是只需要一个操作数,例如加1指令INC 、减1指令DEC等;二是指令中只给出一个操作数,另一个操作数是隐含 指出的,即操作数存放在固定位置,无需指令给出,例如进栈指令 PUSH、出栈指令POP等。
例如:
MOV CX,1234H; 将16位立即数1234H存入寄存器CX MOV BL,AL; 将寄存器AL的内容存入寄存器BL
MOV
DS,BX;
将通用寄存器BX的内容存入段寄存器DS
3.1.5存储器寻址方式
顾名思义,存储器寻址方式就是操作数在存储器单元中。如果存储
器单元作为操作数,CPU必须通过指令提供的信息计算出该存储器单元
图3-5 直接寻址方式
例如:
MOV
BL,[100H]
百度文库
; 将当前数据段偏移量为100H的字节单元内容存入BL MOV AX, DA_WORD ; 将DA_WORD指向的字单元内容存入AX MOV DA_BYTE,0FFH
; 将立即数0FFH存入DA_BYTE指向的字节单元 MOV ES:[100H] ,AX
高等院校信息技术规划教材
高级汇编语言程序设计 实用教程(第2版)
任向民 王克朝 王喜德 冯阿芳 编著
清华大学出版社
第3章 指令系统
3.1 指令系统概述 3.1.1 机器指令格式 3.1.2 寻址技术 3.1.3 立即寻址 3.1.4 寄存器寻址 3.1.5 存储器寻址方式
3.2 8086/8088指令系统 3.2.1 数据传送指令 3.2.2 算术运算指令 3.2.3 逻辑运算和移位指令 3.2.4 处理器控制指令 3.3 80X86指令系统 3.3.1 80286指令系统 3.3.2 80386指令系统 3.3.3 80486指令系统 3.3.4 Pentium指令系统
(5)相对基址变址寻址方式
相对基址变址寻址方式是指指令所需操作数存放在存储器单元中,指 令中给定的一个基址寄存器名(BX或BP)、一个变址寄存器名(SI或DI) 和一个8位或16位的相对位移量,三者内容之和为操作数的地址偏移量。 若基址寄存器使用BP,默认段为SS,若基址寄存器使用BX,默认段为DS 。 操作数格式:位移量[BX|BP][SI|DI]
图3-6 寄存器间接寻址方式
例如:
MOV ; MOV [BX],1234H 设BX内容为100H,将1234H存入DS段偏移100H的字单元 [BP],BL
; 设BP内容为100H,将BL的内容存入SS段偏移100H的字节单元
MOV
AL,[SI]
; 设SI内容为100H,将DS段偏移100H的字节单元的内容存入AL MOV AX,DS:[BP]
个对应的操作码。
3.1.1 机器指令格式
2.操作数字段 操作数字段指出指令执行操作所需的数据和操作结果存放的位置。 根据一条指令操作数字段提供的操作数个数,可以将指令分为以下3种: (1)双操作数指令 双操作数指令中的操作数字段提供两个操作数,中间用逗号分隔, 逗号前面的操作数称为目的操作数,逗号后面的操作数称为源操作数。 其格式如图3-2所示。
3.1.1 机器指令格式
(3)零操作数指令
这类指令中只有操作码字段,没有操作数字段。其格式如图3-4所示 。
操作码
图3-4 零操作数指令格式
这类指令有两种情况,一是不需要操作数,例如停机指令HLT;二是
所需的操作数是隐含指出的,即操作数存放在固定位置,无需指令给出 。
例如:
HLT ; 停机指令,不需要操作数 CBW ; 符号扩展指令,隐含的操作数在AL和AX中
堆栈的栈顶和栈底是重叠的,随着堆栈操作的进行,栈底的位置保持不 变,而栈顶的位置却在不断地变化。进栈时栈顶向低地址方向变化,出
栈时栈顶向高地址方向变化。
①进栈指令PUSH
格式:PUSH 源操作数
功能:修改堆栈指针SP,然后将源操作数压入栈顶单元。 具体操作过程:先将SP的内容减1,然后将源操作数的高字节存入当前 SP所指单元,再将SP的内容减1,然后将源操作数的低字节存入当前SP所 指单元。 说明:源操作数可以是寄存器操作数、段寄存器操作数或存储器操作数 。其长度必须是16位。 对标志位的影响:无
3.1 指令系统概述
计算机的指令系统是指其处理器所能执行的各种指令的集合。计算
机的主要功能必须通过它的指令系统来实现。每种计算机都有自己的指
令系统,不能互相兼容。目前,一般小型或微型计算机的指令系统可以 包括几十条至几百条指令。 指令有机器指令和汇编指令两种形式,机器指令用二进制代码表示, 便于机器识别,但不便于用户记忆和交流;汇编指令则是用助记符来表
3.1.5存储器寻址方式
(1)直接寻址方式 直接寻址方式是指指令所需操作数存放在存储器单元中,其地址偏移 量由指令代码中的位移量直接给出。位移量可用常数表示,也可用变量 名表示。操作数如果在数据段中,则指令中不必给出段寄存器名(即默
认使用DS);否则,必须使用段超越前缀来说明使用其他段中的数据。
操作数格式:[常数]|变量名。直接寻址方式如图3-5所示。
; 设BP内容为1000H,将DS段偏移1000H的字单元的内容存入AX
(3)寄存器相对寻址方式
寄存器相对寻址方式是指指令所需操作数存放在存储器单元中,指令中给定的一个基 址寄存器或变址寄存器名(BX、BP、SI和DI)和一个8位或16位的相对位移量,两者之 和为操作数的地址偏移量。若使用BP,默认段为SS,若使用其它寄存器,默认段为DS 。 操作数格式:位移量[BX|BP|SI|DI] 寄存器相对寻址方式如图3-7所示。
3.1.2 寻址技术
指令中的操作数字段可能直接给出操作数,也可能给出操作数的存放地
址,操作数可能存放在寄存器或存储器中。若指令中给出的是操作数的存
放地址,则在执行指令时就要根据指令中给出的地址信息来寻找操作数, 这个过程叫做寻址,寻找操作数的各种方式统称为寻址方式。
3.1.3立即寻址
立即寻址方式是指操作数直接包含在指令中,紧跟在操作码之后,作