第三章 80486微处理器指令系统
第3章 80X86指令系统
![第3章 80X86指令系统](https://img.taocdn.com/s3/m/122e31ee102de2bd96058818.png)
程序是使计算机完成一个任务的一组命令或指令序 列。 指令是规定微处理器执行某种特定操作的“命令”。 指令系统是计算机全部的指令的集合。 机器指令由二进制数组成,计算机硬件只能识别﹑ 存储和运行机器指令。机器指令无论是在书写、阅 读和记忆都是非常困难的,为此,产生了符号化的 机器指令,即符号指令。
格式:段寄存器:[间址寄存器] 操作数的有效地址存在于基址或变址寄存器中。 16位寻址时, EA由BX,SI,DI或BP提供。 其中,BX,SI,DI默认使用DS,BP默认使用SS。 32位寻址时, EA由 EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP。 其中,ESP,EBP默认使用SS, 其余默认使用DS
基址寄存器和变址寄存器须为规定的32位寄存器.
小结:
实模式时,段的最大长度为64KB,所以必须保 证CPU最终算出的有效地址不超过0FFFFH,而且 操作数最高字节单元的有效地址也不能超过 0FFFFH,否则执行寻址时系统将要瘫痪。 有效地址表达式中的位移量是无符号整数。 带有比例因子的变址寻址常用于检索一维数组元 素,比例因子的大小常由数组元素大小决定。 带有比例因子的基址加变址寻址常用于检索二维 数组元素。 存储器寻址方式中使用的寄存器和默认访问的逻 辑段间的对应关系如表3-5所示。
表3-4 16/32位寻址时有效地址4种成分的组成
十六位寻址 位移量 基址寄存器 变址寄存器 0,8,16 BX,BP SI,DI 三十二位寻址 0,8,32 任何32位的 通用寄存器 除ESP以外的 32位通用寄 存器 1,2,4,8
比例因子
无
1.
直接寻址方式
直接寻址方式有两种格式。在第一种格式中,有效 地址EA直接出现在指令中,存放在代码段中指令操 作码之后,操作数存放在数据段中,这钟格式中段 超越前缀不能省略,否则会出现寻址错误。在另一 种格式中,EA是用变量来代表的存储单元的有效地 址。因为在一般情况下,直接给出操作数所在单元 的直接地址是很困难的,因此在直接寻址方式的使 用上,第二种格式(用变量来代表操作数的直接地 址)更为常见。
微机原理第三章80X86寻址方式与指令系统PPT课件
![微机原理第三章80X86寻址方式与指令系统PPT课件](https://img.taocdn.com/s3/m/dbc0133dcc22bcd126ff0cd9.png)
POP BX
源操作数隐含为栈顶字单元
LAHF
源操作数隐含为标志寄存器低字节,
目操作数隐含为寄存器AH
第13页
2020/9/29
微机原理及应用
8086寻址方式——其它方式(2)
2、相对寻址 仅用于进行段内直接转移的控制转移指令。
指令中的操作数是一个8位或16位带符号的相对 偏移量,代表目标地址与正常执行顺序的原地 址之差。
DS:
ES:
ES: — SS: —
—
CS:
CS:
固定 搭配 的寄 存器
SP
DI IP
第12页
2020/9/29
微机原理及应用
8086寻址方式——其它方式(1)
三、其它寻址方式
1、固定寻址(隐含寻址)
操作数并不直接出现在指令中,而是由操作码隐含地指 定为某一固定内容。
例: PUSH DS 目操作数隐含为栈顶字单元
便于书 写可读
指令的书写格式(以8086性为强例)
操作码助记符 [[目操作数助记符], [源操作数助记符]] (操作码:必备;操作数:可以是1个、2个或没有,可以是
8位或16位)
指令的编码格式(以8086为例由)机器
采用变长编码格式,属于CIS识C别。和
低端
执行
高端
指令前缀 操作码字段 寻址方式字段 操作数字段
第5页
2020/9/29
80X86寻址方式(续)
微机原理及应用
非存储器寻址方式
立即数寻址 寄存器(直接)寻址
存储器寻址方式
直接寻址 寄存器间接寻址 基址寻址 变址寻址 基址加变址寻址
其它寻址方式 —固定寻址、相对寻址、I/O端口寻址
第6页
第3章 80X86的指令系统和寻址方式
![第3章 80X86的指令系统和寻址方式](https://img.taocdn.com/s3/m/59907729a5e9856a561260b8.png)
通用寄存器 ;
(3)变址:其值存放在变址寄存器中。SI、DI 、除ESP外的 32位通用寄存器 ; (4)比例因子:是386及后继机型中新增寻址方式中的术语。 其值可为1、2、4、8。
寻址方式
立即数寻址 寄存器寻址 存储器寻址
直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址
练习
MOV AX, ARRAY[4]
MOV AX, [BX] MOV AX, [BX+2] ;直接寻址,偏移地址= ARRAY+4 ;寄存器间接寻址
;寄存器相对寻址 MOV AX, ARRAY [BX] ;寄存器相对寻址
MOV AX, [BX+SI] MOV AX, [BX+DI+2]
;基址(BX)变址(SI)寻址 ;相对基址变址寻址
;(BX)←1234H ;(AX)←(BX)
4)寄存器间接寻址方式
有效地址包含在基址寄存器或变址寄存器中;
寄存器可以是BX、BP、SI、DI之一。
(1) 以BX、SI、DI进行寄存器间接寻址,隐含的段
寄存器为数据段寄存器DS 。
MOV AX, [BX]
;物理地址=DS×16+BX ;物理地址=DS×16+SI ;物理地址=DS×16+DI
2)立即数(常数)到存储单元的数据传输
例 3.18 MOV MEM_BYTE, 20H ;将立即数20H送到MEM_BYTE存储单元 MOV DS:[0005H], 4500H ;立即数4500H送到DS:0005H的存储单元中
3)立即数到通用寄存器的数据传输 例 3.19 MOV AL, 20H MOV SP, 2000H ;将立即数20H送到AL寄存器 ;将立即数2000H送入SP寄存器
第三章_80486微处理器指令系统(6页版)
![第三章_80486微处理器指令系统(6页版)](https://img.taocdn.com/s3/m/55c0a010effdc8d376eeaeaad1f34693dbef105a.png)
第三章_80486微处理器指令系统(6页版)介绍80486的寻址方式及指令系统。
通过本章的学习,要求熟悉各种寻址方式的使用场合以及常用指令的使用方法。
第三章80486微处理器指令系统第三章80486微处理器指令系统第一节80486微处理器寻址方式第二节80486微处理器指令系统3前言1.通知CPU执行某种操作的“命令”,CPU全部指令的集合,称为指令系统+目标指令(机器指令):用一串0,1代码书写注意:硬件只能识别,存储,运行目标指令+符号指令:用规定的助记符,规定的书写格式书写的指令2. 指令的书写格式80486符号指令与机器指令对照表2B CA SUB CX, DX CX-DX→CX C3RET 返回调用程序03 C3ADD AX, BX AX+BX→AXB8 34 12MOV AX, 1234H 1234H→AX 80486机器指令80486符号指令操作MOV: MOVE传送ADD:加SUB:减RET:RETURN 返回指令的组成:操作码+ 操作数操作码——告诉计算机要执行的操作是什么,如:加、减、逻辑与等。
操作数——执行操作过程所要操作的数,如加运算的两个加数。
6汇编源程序可执行的机器指令程序(目标程序)486指令长度(机器指令长度)为1~16字节规定:多字节指令占用连续的内存单元,存放指令第一字节的内存地址,称为“指令地址”。
CPU只能识别,存储,运行目标指令,而用机器指令编程非常困难。
于是早期的专家们发明了符号指令,再经过软件把符号指令→机器指令。
图示如下:如:12345H单元中有一条指令MOV AX,6789H先写操作码,再写操作数。
多字节操作数连续存放。
存放规律: 低位字节存放在低地址单元,高位字节存放在相邻的高地址单元8如:NEXT: ADD AX , BX ;AX+BX →AXINC SI;SI+1 →SI标号:以字母开头,后跟字母,数字,下划线,长度≤31字符标号又称符号地址,代表该指令的逻辑地址。
微型计算机原理及接口技术第3章 80X86指令系统及汇编语言
![微型计算机原理及接口技术第3章 80X86指令系统及汇编语言](https://img.taocdn.com/s3/m/a0472924f61fb7360a4c6554.png)
第3章 80X86指令系统及汇编语言
..
操作码 2000 ∶ 0FFFH 50H 2000∶ 1000H
2000 ∶ 1050H 操作码
CS + IP +
20 00 10 00
50 21 05 0
.. .. ..
图3.8 段内相对寻址
第3章 80X86指令系统及汇编语言
2.段内间接寻址 在段内间接寻址方式中,转移地址的段内偏移地 址要么存放在一个16位的寄存器中,要么存放在存贮 器的两个相邻单元中。存放偏移地址的寄存器和存贮 器的地址将按指令码中规定的寻址方式给出。此时, 寻址所得到的不是操作数,而是转移地址。 例:JMPCX 其过程如图3.9所示。
第3章 80X86指令系统及汇编语言
3.1.2转移地址的寻址方式 1.段内相对寻址 在段内相对寻址方式中,指令应指明一个8位或16
位的相对地址位移量DISP(有正负符号, 用补码表示)。此时,转移地址应该是代码段寄存
器CS内容加上指令指针IP内容,再加上相对地址位移 量DISP。
例:JMPDISP1 其过程如图3.8所示。
第3章 80X86指令系统及汇编语言
2.交换指令 XCHG OPRD1,OPRD2 交换指令把一个字节或一个字的源操作数与目的 操作数相交换。这种交换能在通用寄存器与累加器之 间、通用寄存器之间、通用寄存器与存贮器之间进行, 但是段寄存器不能作为一个操作数。例如:
XCHGAL,CL XCHGAX,DI XCHGBX,SI XCHGAX,BUFFER XCHGBX,DATA[SI]
第3章 80X86指令系统及汇编语言
立即数
段寄存器 CS,DS,SS,ES
通用寄存器 AX,BX,CX,DX,BP,SP,SI,DI AH,AL,BH,BL,CH,CL,DH,DL
第3章 80x86指令系统
![第3章 80x86指令系统](https://img.taocdn.com/s3/m/03e01b15fe00bed5b9f3f90f76c66137ee064f1b.png)
基址加变址寻址
1.特征
操作数存放在存储单元中,其有效地址为一个基址 寄存器的内容加上一个变址寄存器的内容,这两 个寄存器均由指令指定。即
有DI] 如果无段跨越前缀,对于基址寄存器使用BX,则默
认的段寄存器为DS,操作数的物理地址为: 物理地址=16d×[DS]+[BX]+[SI]/[DI] 如果基址寄存器使用BP,则默认的段寄存器为SS,
3.1.3 指令周期 微处理器的工作过程,不外乎取出指令、执
行指令,再取出指令、执行指令,...这样 一个循环过程。一条指令的取出和执行所 必需的时间,称为指令周期。 指令周期是以一条指令的取出和执行所必须 的时间而定义的,其时间的基准是微处理 器时钟周期。
3.1.4 指令的流水线和并行控制
在微处理器中,一条指令的执行全过程总是 分成几步完成的。
来指出计算机应执行何种操作的一个二进制代码。操作数地址指 出该指令所操作(处理)的对象(称为操作数)所在的存储单元的地 址。指定操作数所在位置的方法称为寻址方式。
一条指令的取出和执行所必须的时间,称为指令周期。指令 周期的大小依指令不同而异。指令周期通常用几个机器周期来表 示,一个机器周期又包含若干个时钟周期(或时钟节拍)。
3.精简指令集(RISC)技术
RISC结构的计算机具有相对十分简单的指令系 统,指令长度固定,指令格式与种类简单,寻址 的方式也少,在处理器中增设大量的通用寄存器, 采用硬件控制,从而使指令执行速度提高,同时 依靠编译软件的支持调度指令的流水线执行,这 样RISC系统获得了较高的性能/价格比。
从80486开始到奔腾系列,均采用了精简指令集 (RISC)技术。
S1 取指令(IF) S2 指令译码(ID) S3取操作数(OF) S4执行(EX) S5写回(WB)
微机原理第三章 指令系统-dsh
![微机原理第三章 指令系统-dsh](https://img.taocdn.com/s3/m/2eb1770b03d8ce2f00662344.png)
非压缩BCD码:1字节存放一个BCD码(低4位),
位串:从任何字节的任何位开始的相邻位序列,最
长可达232-1位
字节/字/双字串:是字节、字、双字的相邻序列,
最长可达232-1字节。
–ASCII码
ASCII码字符串: 如‘ABC123’ ASCII码数: 如30H~39H(0~9),41H~46H(A~F)
基址加变址寻址 基址寄存器内容与变址寄存器内容之和形成操作数的偏 移地址。即:EA=[基址寄存器]+[变址寄存器] (1) 16位寻址 基址寄存器:BX、BP; 变址寄存器:DI、SI 如:MOV AX,[BX+SI] 或MOV AX,[BX][SI];DS段(BX)+(SI)中的字数 据送AX。 (2) 32位寻址 基址寄存器: 任何一个32位通用寄存器 变址寄存器:除ESP之外的任一个32位通用寄存器 如:MOV AX,[EBX+ECX] ;DS段(EBX)+(ECX)中 或MOV AX,[EBX][ECX] 的字数据送AX。
与跳转有关的寻址方式
与跳转有关的寻址方式用于确定程序转移或调用的目 标。如: 无条件转移语句:JMP dst dst:转移目标 调用语句:CALL dst dst:调用目标 参见转移和调用指令一节。 练习题:假设(DS)=2000H, (ES)=2100H, (SS)=1500H, (SI)=00A0H, (BX)=0100H, (BP)=0040H,指令 MOV AX, src中, 以下src为何种寻址方式?有效地 址和物理地址各是多少? (1)100H[BX] (2)[BX] (3)[BP] (4)ES:[BX+10H] (5)BX (6)[1000H] (7)[SI] (8)1000H[BX+SI] (9)1000H[BP][SI] (10)[BX][SI]
《微机原理与接口技术(80386-Pentium)》-第3章80486系统原理
![《微机原理与接口技术(80386-Pentium)》-第3章80486系统原理](https://img.taocdn.com/s3/m/12940b2b0066f5335a812155.png)
80486的标志寄存器
31 0 ………. 17 16 15 14 13 12 1 10 9 8 7 6 5 4 3 IO A V R N P O D I T S Z 0 A 0 0 M F T L F F F F F F F C 2 P F 1 1 0 C F
AC 对准校验 VM:虚拟8086模式(X) RF RF:恢复标志(X) (X) NT:嵌套任务标志(X) IOPL: I/O特权级标志(X) OF: 溢出标志(S) DF: 方向标志(C) IF: 允许中断标志 (X) 自陷标志(X) TF: SF: 符号标志(S) ZF: 零标志(S) AF: 辅助进位标志(S) PF: 奇偶校验标志(S) CF: 进位标志(S) 9
15
图3.4示出80486微处理机CPU的逻辑框图。 图中的Cache部件、8K字节的统一Cache、 以及浮点部件FPU和EP寄存器组在以 80386为基础的系统内属于不同的独立芯 件,并不在80386 CPU芯片之内,而在 80486中这些部件变成了80486 CPU的一 个组成部分。 这两个新集成到80486 CPU内的部件,一 个是浮点部件FPU,它有效地提高了浮点 操作性能;另一个是指令和数据共用的高 速缓冲存储器Cache。
12
4.段寄存器
80486 配备有6个16位的段寄存器,段寄存器 也叫选择符 (Selector)。它们的名字和用途 与80386 的一样,其名称分别是: 代码段寄存器 CS 数据段寄存器 DS 堆栈段寄存器 SS 附加数据段寄存器 ES 附加数据段寄存器 FS 附加数据段寄存器 GS
13
3.1.2 80486 CPU系统原理
80486的通用寄存器
31 16 15 AX BX CX DX SI DI BP SP 0 EAX EBX ECX EDX ESI EDI EBI ESP 15 AH BH CH DH 8 7 AL BL CL DL 0 AX BX CX DX
(09)80486微处理器的指令系统 3.1
![(09)80486微处理器的指令系统 3.1](https://img.taocdn.com/s3/m/3a755b0a03d8ce2f01662301.png)
(1)基址寄存器的内容 16位寻址:BX、BP其内容即为基址 32位寻址:任何32位通用寄存器都可以作为基址寄存器 (2)变址寄存器的内容 16位寻址:SI、DI 32位寻址:除ESP外,任何32位通用寄存器都可以作为变址寄存器, 其内容即为变址值。 (3)比例因子 变址寄存器的值可以乘以一个比例因子(是通过硬件实现的)。 比例因子可以为1,2,4,8。** (4)位移量 在指令操作码后面的32位、16位或8位的整数。
MOV ECX,78H √
78
56
34 12
高
MOV AH,4567H
×
2、前后问题
MOV AX,4567H √ MOV 4567H,AX × (立即数不能作为目的)
:
第6页
电气工程学院
(2)寄存器寻址——参加操作的数据在寄存器中 怎么提供地址信息?寄存器的名称就是地址信息,通过给出寄存器 的名称来提供地址信息。
第4页
电气工程学院
这四分量可以优化组合出8种存储器寻址方式 根据四分量计算有效地址EA(段内偏移地址)的方法: EA=基址 + 变址× 比例因子 + 位移量 2. 10种寻址方式——寻址方式是我们理解指令的基础。
从 如何向CPU提供地址信息 角度来叙述10类寻址方式。 (1)立即寻址——参加操作的数据就在指令字节中 怎么提供地址信息?就在指令的操作码后面。知道操作码的地址就等 于知道了操作数。
0000H : :
FFFCH FFFDH FFFEH FFFFH
64K(段的最大长度)
10000H
AL AH AL
MOV MOV MOV MOV
ESI,10000H AL,[ESI] DI,0FFFEH ;双字 EAX,[DI]
第3章 80X86Pentium指令系统
![第3章 80X86Pentium指令系统](https://img.taocdn.com/s3/m/d74775cd8bd63186bcebbc8e.png)
3.1.3 8086指令系统
三、位操作指令(续2)
表3-7 位操作指令
格式 操作 码 不带进位的循 ROL ROL OPD,1或ROL OPD, CL 环移位指令 ROR ROR OPD,1或ROROPD, CL 带进位的循环 RCL RCL OPD,1或RCL OPD, CL 移位指令 RCR RCR OPD,1或RCR OPD, 类别
表3-9 字符串操作指令使用中的一些隐含约定
STOS指令的源地址 AL/AX
传送方向
…SB
DF=0,SI、DI自动增量(用CLD指令实现)
DF=1,SI、DI自动增量(用STD指令实现) 不带操作数的字节操作指令
…SW
不带操作数的字操作指令
3.1.3 8086指令系统
五、字符串操作指令(续3) 系统规定:源串一定要在当前数据段中, 目的串只允许在当前附加数据段中。所有的 串操作指令均以寄存器间接方式访问源串或 目的串中的各元素,并自动修改SI和DI的内 容。若DF=0,则每次操作后,SI、DI自动增 量(字节操作加1、字操作加2);若DF=1, 则每次操作后,SI、DI自动减量(字节操作 减1、字操作减2),使之指向下一个元素
3.1.3 8086指令系统
二、算术运算指令(续2)
表3-6 算术运算指令 类别 乘法指令 除法指令 操作码 MUL IMUL DIV IDIV 格式 MUL OPS IMUL OPS DIV OPS IDIV OPS
3.1.3 8086指令系统
三、位操作指令
表3-7 位操作指令 类别 逻辑 运算 指令 操作码 NOT AND TEST OR XOR 格式 NOT OPD AND OPD,OPS TEST OPD,OPS OR OPD,OPS XOR OPD,OPS
第三章 80X86微处理器的指令系统PPT课件
![第三章 80X86微处理器的指令系统PPT课件](https://img.taocdn.com/s3/m/21433a660912a2161479297a.png)
隐含使用变址寄存器 SI、DI的特殊寄存 器间接寻址
SI:源操作数偏移地址
DI:目的操作数偏移地址
执行串操作指令后,SI和DI自动增/减量, 指向下一个操作数的偏移地址,增减量
由DF位及字长决定。
DF=0:字节 +1;字 +2
DF=1:字节 -1;字 -2
当串操作指令前有重复操作前缀REP,
则执行一次,CX-1CX,直到CX=0时停
第3章 8086的汇编语言程序设计
3.1 8086 的指令系统
3.1.1 8086指令的寻址方式 操作数的表示方式,大多情况是给出计算 操作数地址的方法 操作数分为两类:数据和转移地址,其寻 址方式有所不同 以8086为例
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
2
3.1.1数据的寻址方式
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 基址变址寻址 寄存器相对寻址 相对基址变址寻址 带比例因子的变址寻址
3
1.立即寻址
指令码的最后一个字节或两个字节是操作 数,例:MOV AX,1090H 立即数只能为整数和作为源操作数,可以 是二、十、十六进制数或用‘的字符串, 若为十六进制数的以A~F打头的应前面加0。
类型属性
FAR:段间转移;NEAR:
段内转移(不改变CS值)。
若转移范围在当前指令的-128~+127内,在 操作数前加SHORT。
例2:段间直接转移寻址
JMP FAR PTR START
14
2)段内寄存器寻址
指令中寄存器内容是转移地址,适用于段 内转移,寄存器可用通用寄存器。
第三章+80x86微处理器的指令系统(寻址方式)
![第三章+80x86微处理器的指令系统(寻址方式)](https://img.taocdn.com/s3/m/e0bf6aed6294dd88d0d26b76.png)
.
09365102
微机原理 B(一)
第三章 80x86 微处理器的指令系统
2008 - 2009 春季学期
.
概述 寻址方式 习题
数据的寻址方式 转移地址的寻址方式
存储器寻址
. . 为什么 8086 的存储器必须要分段管理? .. 20 8086 的地址总线宽度为 20 位, 寻址范围 2 = 1 MB, 但一个地址 寄存器只有 16 位,无法直接形成 20 位地址, 所以必须将 1M 空间 分成许多段, 用一个寄存器表示某段在 1M 空间内的起始地址 (段 地址), 用另一个寄存器表示表示段内某单元相对本段起始地址的偏 移地址. 这样就可用两个 16 位寄存器形成 20 位地址, 从而实现了 对 . 1 MB 存储空间的管理 (物理地址 00000H ~ FFFFFH)。 .. . .
第三章 80x86 微处理器的指令系统 2008 - 2009 春季学期
.
1 / 73
. .
概述 寻址方式 习题
80x86 的指令系统 ---概述
指令系统是一台计算机所能识别和执行的全部指令的集合。 指令一般包括两个部分:操作码域 和 操作数域。 操作码域存放指令的操作码,即指明该指令应由计算机完成何 种操作。如传送、运算、移位、跳转等操作,它是指令中不可 缺少的组成部分。 操作数域也称为地址域, 是指令执行的参与者,即各种操作的 对象。确定操作数的值或地址、操作结果的地址,有的指令的 地址域还指出下一条指令的地址。 有些指令不需要操作数,通常的指令都有一个或两个操作数, 也有个别指令有更多的操作数。
09365102
微机原理 B(一)
第三章 80x86 微处理器的指令系统
2008 - 2009 春季学期
第3章80X86指令系统(2)PPT课件
![第3章80X86指令系统(2)PPT课件](https://img.taocdn.com/s3/m/091823ec87c24028905fc371.png)
src: 立即数,寄存器,存储器。
dest:寄存器,存储器。
例: CMP AL,0AH
;寄存器与立即数比较
CMP CX, DI
;寄存器与寄存器比较
CMP AX, AREA1
;寄存器与存储器比较
CMP [BX+5], SI
;存储器与寄存器比较
CMP WORD PTR ALPHA,100H;存储器与立即数比较
ZF=0, AX = BX ,两者不相等
(2) 根据CF标志, 判断两个无符号数的大小
例: 比较AX,BX寄存器, 将大数 AX
…
CMP AX,BX
JNC NEXT
; CF=0跳转至NEXT
XCHG AX,BX
NEXT:……
结论:CF=0 , AX > BX ; CF=1, AX < BX
22
(3) 用SF、OF标志,判断两个带符号数的大小 设:被比较二个带符号数分别为 : A、B 若SF OF=0, 则A>B 若SF OF=1, 则 A<B
为寄存器;单操作数指令不能为立即数。
2
(一)加法指令(Arithmetic)
8086/8088有5种加法操作指令:
1、 ADD(Addition)加法指令 2、 ADC(Add with carry)带进位加法指令 3、 INC(Increment by 1)加 1指令 4、 AAA(ASCII adjust for addition)加法ASCII调整指令 5、 DAA(Decimal adjust for addition)加法十进制调整指令
20D59E36C1H=?
开始
两个多字节数存放在:
DATA1,DDAATAT1 A2的F8H开始单元。
第3章 80X86指令系统PPT课件
![第3章 80X86指令系统PPT课件](https://img.taocdn.com/s3/m/defe627b50e2524de4187e87.png)
2020/7/16
j.g.mao@
14
以AL、AX及EAX清零为例 即AL ← 0=00H=00000000B AX ←0=0000H=0000000000000000B EAX ←0=00000000H=0……0B
5
3.1.1 指令格式
80X86/Pentium系列CPU采用变字节的指令格式,
由1~6个字节构成一条指令(如图3-1)
一条指令可分为6个字段: 字段1 是附加字段,字段2-6是基本字段。 1 Prefix 前缀字段:定义或修改指令的属性。
(1-4字节)如段超越、重复操作、总线锁定等。
2 opcode 操作码字段:规定指令的性质,指明指令 的操作。(1-2字节)这是必不可少的字段。
j.g.mao@
9
3.1.2 指令系统的寻址方式
一.寻址方式——寻找操作数的方法
操作数的存放位置有三种可能:
1.操作数包括在指令中:指令中操作数部分就是 操作数本身。(操作数存放在代码段中)此时, 操作数也称为立即数。
2.操作数包含在CPU的某个寄存器中:某个寄存 器的编码指明操作数(操作数在CPU中)。
3.操作数存放在内存中:操作数部分指明此操作 数的存放地址(操作数在存储器中)。
2020/7/16
j.g.mao@
10
二.有效地址——EA 段内偏移量
由于逻辑地址由段基值和段内偏移量 构成(8086、8088CPU),或由段选 择子和偏移量构成(80286以上的 CPU),我们把偏移量也称为有效地 址,用EA表示。
2020/7/16
j.g.mao@
11
构成EA的四个地址分量 :
EA=(基址寄存器)+[(变址寄存器)×比例因子]+位移量 构成EA的四个地址分量:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AH,4CH ;设置功能号 21H ;返回DOS
CODE
START
查表转换指令XLAT 格式: XLAT ;将DS:[BX+AL]
● ● ● ●
AL
使用XLAT指令的条件:
在数据段中建一张表 数据段段基址送DS 表首地址的偏移量送BX 待转换数放入AL中
11H SP 00H xxH 20080H
如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=7EH, BP =84H
PUSHA
执行后有:
注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI
33H 00H
SP 11H 00H xxH 2007EH 20080H
例:将16进制数 0~F 转换为与之对应的ASCII码 ACTAB MOV MOV XLAT DB ‘0123456789ABCDEF’ ┇ BX,OFFSET ACTAB AL,[SI] ;表首地址的偏移量→BX ;取待转换数
;转换结果→AL ┇
2. 堆栈指令 压栈/弹栈指令 PUSH/POP ;OP1可以是16位或32位的通用寄存器、 OP1 段寄存器、存储器操作数或立即数。
(SHORT) OUTSET
该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或 存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方
式取得,所得到的内容将用来取代IP寄存器的值。
段内间接寻址转移指令的汇编格式可以表示为:
JMP
JMP
CX
WORD PTR [BX]
3. 段间直接寻址
二、转移地址寻址方式
在指令系统中,有一组指令为程序转移指令。程序转移指令的
寻址方式涉及如何确定转移的目标地址。目标地址可以在段内,也
可以在段外。
1. 段内直接寻址 转移的目标地址是当前IP寄存器的内容和一个8位或16位位移量之和。 指令的汇编语言格式表示为:
JMP
JMP 2. 段内间接寻址
(NEAR PTR) PROGRM
将堆栈中的数据弹给16位通用寄存器,顺序
与压栈指令相反。
格式:POPAD
将堆栈中的数据弹给32位通用寄存器,顺序
与压栈指令相反。
如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=80H, BP =84H
PU顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI
格式:PUSH
;基本同上,但OP1不能是立即数和CS。 POP OP1 全部通用寄存器内容压栈和弹栈指令
格式:PUSHA
将8个16位通用寄存器压栈,顺序为: AX、CX、DX、BX、SP、BP、SI、DI
格式:PUSHAD 格式:POPA
将8个32位通用寄存器压栈,顺序为:EAX、 ECX、EDX、EBX、ESP、EBP、ESI、EDI
(4)基址变址寻址方式 MOV DX ,[BX+SI]
*(5)相对基址变址寻址方式
MOV DX ,[BX+SI+24]
*(6)比例变址寻址方式 MOV DX ,[变址寄存器×比例因子+位移量]
其中比例因子可以是1,2,4,8中的任一个数。32位寄存器中,除ESP 外的7个通用寄存器均可作基址和变址寄存器,且EBP默认SS作段寄存器,
一、数据传送指令
1. 通用数据传送指令: 完成数据的传送工作,不影响任何标志 基本传送指令 格式: MOV MOV OP1,OP2
目的操作数 源操作数 功能: 可完成: OP1 OP2 通用寄存器 段寄存器 存储器 存储器 注意:目的操作数不能是CS! 立即数 存储器
通用寄存器 通用寄存器 通用寄存器 段寄存器 通用寄存器
这种寻址方式用于段间转移,指令中直接提供了目标地址的段基址 和偏移地址,所以,只要用指令中指定的偏移地址取代IP寄存器的内容, 用指令中指定的段基址取代CS寄存器的内容就完成了从一个段到另一个 段的转移操作。 指令的汇编语言格式可表示为:
JMP
4. 段间间接寻址
FAR
PTR
NEXT
该方式下,用存储器中两个相继字的内容来取代IP和CS寄存器中的
符号扩展传送指令MOVSX
格式:MOVSX OP1,OP2 ;OP1为16位或32位通用寄存器 OP2为8位或16位通用寄存器或存储器 例如: MOV MOVSX DL,-16 BX,DL ;DL = F0H ;BX = FFF0H,而DH,DL不变
零扩展传送指令MOVZX 格式:MOVZX OP1,OP2 ;OP1为16位或32位通用寄存器 OP2为8位或16位通用寄存器或存储器 例如:MOVZX EAX,CX ;将CX中16位数高位加0扩展为32位送入EAX
33H 00H
11H 00H xxH 20080H
如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=74H, BP =84H
SP
55H 00H 84H 00H 20074H
PUSHA
执行后有:
78H 00H 22H
第三章 80486微处理器指令系统
㈠ 教学目标
介绍80486的寻址方式及指令系统。
㈡ 学习要求
通过本章的学习,要求熟悉各种寻址方式的使用
场合以及常用指令的使用方法。
㈢
讲授内容
第一节 80486微处理器寻址方式
第二节 80486微处理器指令系统
指令
指令是规定计算机进行某种操作的 指令中应包含三方面的信息: 执行什么操作 操作数的位置 结果存放的位置 指令的一般格式 操作码 操作数地址1
(2)寄存器间接寻址
MOV
MOV
SI,1000H
AX,[SI]
这种寻址方式下,操作数所在内存单元的EA由规定的寄存器指出。 ●16位寻址时,EA可以由SI,DI,BP或BX提供。(其中BX、BP也称基 址寄存器,SI、DI称变址寄存器) 若以SI,DI,BX间接寻址,则默认操作数在DS段中。若以BP间接 寻址,则默认操作数在SS段中 如果操作数不在上述规定的默认段,而是在其他的段,则必
原始内容,以达到段间转移的目的。这里,存储单元的地址是由指令指 定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。 指令的汇编语言格式可表示为: JMP DWORD PTR [BX]
第二节
80486微处理器指令系统
80X86的指令系统向上兼容,都是在8086指令的基础上发展形 成的。与80286相比,增加了32位操作和访问存储器的 32位寻址方 式。
如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=7AH, BP =84H
PUSHA
执行后有: 22H
注意:压栈的顺序为 AX、CX、DX、BX、 SP、 BP、SI、DI SP
00H
44H 00H 2007AH
33H 00H
11H 00H xxH 20080H
以第一条指令为例的立 即数寻址方式的执行过程如 图。 立即寻址示意图
2.寄存器寻址
在这种方式下,操作数存放在CPU某个8位、16位或32 位寄存器中。
例: MOV
MOV
EAX,EDX
DS,AX
该寻址方式指令码短,且无需从 存储器取操作数,故执行速度快
3.存储器操作数寻址 操作数在除代码段以外的内存单元中。通过不同寻址方式求得操 作数地址,从而取得操作数。在指令中给出计算操作数所在内存单元
将OP1所在位置的有效地址(偏移地址)送往 通用寄存器。
例:
LEA MOV
BX,SEGPT BX,OFFSET SEGPT
等价
DATA STR RES DATA
SEGMENT DB DB ENDS 10,20,30,40,50 10 DUP(0)
CODE
SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
例: MOV
CH,[BP]
设(SS)=3000H,(DS)=3500H,(BP)=1340H,则该指令是将 31340H 单元的内容送给CH。
(3)寄存器相对寻址方式 MOV MOV EAX,[BX+24] ;也可以写成 MOV EAX,24[BX] DX,1500[EAX]
DX ,[EAX+1500];也可以写成 MOV
须在指令中相应的操作数前加上段超越前缀。例如:
MOV MOV AX,ES:[SI] AX,DS:[BP]
*● 32位寻址时,8个32位通用寄存器除ESP外均可作间址寄存器。除 EBP默认段寄存器为SS外,其余6个通用寄存器均默认段寄存器为DS。
例: MOV
AX,[SI]
设(DS)=4200H,(SI)=5000H, 则源操作数所在单元的物理地址= 4200H*10H+5000H=47000H 指令执行后(AX)=3525H。
MOVSX和MOVZX这两条指令常被用于作除法时对被除数位数的扩展。
交换指令XCHG 格式: 功能: 可完成: 通用寄存器 例: 地址传送指令 LEA传送指令 格式: 功能: LEA REG,OP1 通用寄存器 XCHG AX,BX XCHG OP1 OP1,OP2 OP2
通用寄存器
;AX
存储器
BX
如:AX=11H, BX=22H CX=33H, DX=44H SI =55H, DI =66H SP=78H, BP =84H
PUSHA
执行后有: SP
78H 00H 22H 20078H