第4章 80868088指令系统3(算术运算指令)(楼俊君)47页PPT

合集下载

指令系统

指令系统

第四章8086/8088寻址方式与指令系统
◆加法指令(ADD、ADC、INC ) ●ADD 指令
格式: ADD OPRD1,OPRD2 功能:OPRD1←OPRD1+OPRD2 说明:目的操作数可以是累加器、任一通用寄 存器或存贮器中的操作数。 举例:1 ADD AL,30 ADD AX,3000H ADD AX,SI ADD AL,DATA
第四章8086/8088寻址方式与指令系统
◆标志寄存器传送指令
• • • • LAHF (Load AH from Flag) SAHF (Store AH into Flag) PUSHF (Push the Flag) POPF (Pop the Flag)
标志寄存器PSW的定义
● LAHF
(Load AH from Flag) 指令
第四章8086/8088寻址方式与指令系统
二、 8088/8086指令系统
1、数据传送指令。 2、算术运算指令。 3、逻辑运算和位移指令。 4、控制转移指令。 5、串操作指令。 6、处理器控制指令。 7、输入/输出指令。
第四章8086/8088寻址方式与指令系统
(一)数据传送指令; 1、通用数据传送指令 2、地址传送指令 3、标志寄存器传送指令 ◆通用数据传送指令
第四章8086/8088寻址方式与指令系统
◆ 地址传送指令 LEA (Load Effective Address) LDS (Load DS with Pointer) LES (Load ES with Pointer) ● LEA 指令 格式: LEA OPRD1,OPRD2 功能: OPRD2的地址偏移量→OPRD1 说明:源操作数必须是一个内存操作数,目 的操作数必须是一个16位的通用寄存器。 举例: LEA BX,BUFR

第四章 8086指令系统(改)PPT课件

第四章 8086指令系统(改)PPT课件

× MOV AX, BL
; 字长不同
× MOV ES: AX, DX ; 寄存器与段无关
指令操作例:MOV SI,AX ; SI (AX) 指令执行前:(AX)=2233H 指令执行后:(AX)=2233H,(SI)=2233H
AX
2233H
SI
四、 寄存器间接寻址
操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器
高级语言 面向问题或面向过程的独立于具体机器的语言。
特点:语言规范,可移植性强,内部操作过程比较 复杂,执行时间长。
二、汇编语言指令的构成
每条指令由操作码和操作数两部分组成
目的

说明要执行的 操作对象,可以 是什么操作 有0个、1个或2个
指令举例:
MOV AX , BX
操作码 操作数 ADD AX,[SI+6] INC [BX] HLT
+
8位 16位
位移量
(DI)
(BX) (BP)
EA = (SI)
(DI)
以BX、SI、DI间接寻址,默 认的段寄存器为DS ;以 BP 间接寻址时,默认的段寄存
例: MOV AX, [BX] 器为SS 。
MOV CL, [DI]
错误例 :
× MOV AX, [DX]
× MOV CL, [AX]
寄存器间接寻址过程示意图
MOV [BX],CL ( 设BX原值为2010H)
寻找操作数的地址
寻找要执行的下一条指令的地址
在8086指令系统中,说明操作数所在地址
的寻址方式可分为8种:
①立即寻址
⑤ 寄存器相对寻址
②直接寻址
⑥基址-变址寻址

第4讲 8086&8088指令系统

第4讲 8086&8088指令系统

20 20
地址传送指令
. 偏移地址传送指令


格式: LEA 寄存器,源 其功能是将源操作数的偏移地址送到一个寄 存器中。所以是16位地址的传送指令。 此时,指令的操作数就是一个地址了。 源操作数必定是存储器操作数。 源操作数可以采用任何一种存储器操作数的 寻址方式。
21 21
地址传送指令
11
32H 54H
11
出栈指令pop
堆栈操作指令

出栈:POP 目的 目的← [SP] ; SP ←SP+2; 如:POP AX 若:SP=FFECH 堆栈数据如图 FFEEH 结果:AX=5432H
12
32H 54H
12
堆栈操作指令



堆栈操作指令都隐含了一个操作数:SP所指 的栈顶数据; 堆栈操作的另一个操作数一定是16位操作数: 可以是寄存器操作数,也可以是存储器操作 数,但不能是立即数; 由于一定是16位操作数,因此存储器操作数 也不必用算符来说明位数了,如 PUSH [DI] 是正确表示的指令,当然,也可以写为: PUSH WORD PTR[DI] 13 13
8 8
堆栈操作指令
堆栈-在内存储区中开辟若干单元作为栈去按先 进后出方式工作。 堆栈操作便于实现子程序调用和中断处理。 8086/8088指令系统规定堆栈操作设置在ss内, 只有一个出入口,要求堆栈指针始终指向堆栈 的顶部 堆栈是由高地址向低地址发展 8086/8088指令系统提供了堆栈专用操作指令:
标志寄存器出栈指令

PUSHF 和POPF指令一般用在子程序和中断程序 的首尾,对主程序标志起保护和恢复作用。
29 29
8088/8086指令系统

第4章 8086(8088)CPU指令系统

第4章 8086(8088)CPU指令系统

4.1.1 8086CPU指令格式
操作码 操作数(操作数地址)
指令由操作码和操作数(操作数地址)两部分组
成 操作数操作数是参加本指令操作的数据 有些指令不需要操作数,通常的指令都有一个或 两个操作数,也有个别指令有3个甚至4个操作数
指令中的操作数:



可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
存储单元中,在指令操作过程中需要BIU通过一 个总线周期的访问,才能获得操作数。 存储器操作数的寻址方式是怎么根据给出的操 作数地址因子,计算出操作数的有效地址EA (Effective Address)。 有效地址EA是以下三个地址因子的组合 ,由 CPU的执行单元EU计算出来:

立即数寻址方式常用来给寄存器赋值
1. 立即寻址方式
MOV AL,34H
代码段 10000H
;AL←34H
1000H:0000H
10100H 10101H 10102H AH AL
操作码 34H
1000H:0100H
1. 立即寻址方式
MOV AH,80H ;AH←80H ADD AX,1234H ;AX←AX+1234H MOV BX,1000H ;BX←0102H 立即数可以简单理解为常数,在指令中只 能作为源操作数。立即数不能作为目的操 作数。 使用立即寻址的指令主要用来给寄存器或 者存储器赋初值。
6. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内
容加上变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对
应BP基址寄存器默认是SS;可用段超越 前缀改变 MOV AX,[BX+SI] MOV AX,[BP+DI]

第4章Intel 80868088指令系统

第4章Intel 80868088指令系统

物理地址=30000H+1150H=31150H
执行后: (AX)=5678H。
第四章 Intel 8086/8088指令系统
5. 相对基址变址寻址
特点:操作数的有效地址是一个基址寄存器与一个变址寄 存器的内容之和再加上8位或16位位移量。同样,当基址寄存器 为BX时,用DS作为段寄存器; 而当基址寄存器为BP时,则用 SS作为段寄存器。因此物理地址为 (SI) 8位 位移量 物理地址=(DS)×16+ (BX)+ + (DI) 16位 (SI) 8位 位移量 + 物理地址=(SS)×16+ (BP)+ (DI) 16位
执行后: (AX)=1234H, (BX)不变。
第四章 Intel 8086/8088指令系统
4.1.4 存储器寻址
操作数在存储器中。存储器是分段管理的, 要找到操作数, 必须指明操作数所在的段(段基址由段寄存器指明)及段内偏 移地址(以有效地址EA的形成方式指出)。 1. 直接寻址方式 特点:指令中直接给出操作数在段内的偏移量,段基址隐 含给出或用段前缀指明。该寻址方式适用于处理单个变量。
4.1.1 8086/8088的通用指令格式 机器语言指令是由二进制代码组成的。一条指令是由操作 码与操作数字段构成的,其一般格式为 操作码字段 + 操作数字段 操作码字段指明计算机所要执行的操作(即功能);操作 数字段指出在指令执行过程中所需要的操作数。 例如: ADD AX, BX
第四章 Intel 8086/8088指令系统
变址寄存器内容之和。 (SI) 物理地址=(DS)×16+ (BX)+ (DI) (SI) 物理地址=(SS)×16+ (BP)+ (DI) 适用表格或数组处理,表格或数组首地址可存放在基址寄存器中。

第3章 80868088指令系统3(算术运算指令)PPT课件

第3章 80868088指令系统3(算术运算指令)PPT课件

INC SI
;(SI)+1
DEC CX
;(CX)-1
JNZ LL
;若(CX)0,则转LL
思考:若最高位有进位,如何改?
11
ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:
SF=
1 结果为负 0 否则
ZF=
1 结果为0 0 否则
CF=
1 0
和的最高有效位有向高位的进位 否则
OF= 1 两个操作数符号相同,而结果符号与之相反
无符号数 有符号数
0000 1000
8
+8
+1111 1101 10000 0101
结果5
+253 261 CF=1
+(-3) +5
OF=0
③ 有符号数溢出
0000 1000
8
+8
+0111 1101 +125 +(+125)
1000 0101 133
+133
结果-123
CF=0
OF=1
(补码表示)
2
• 两个8位数相加时有4种情况:
无符号数范围0~255 带符号数范围-128~127 ①无符号数和有符号数均不溢出
二进制相加 0000 1000 +0001 1110 0010 0110
无符号数加 8
+ 30 38
有符号数加 +8
+ (+30) +38
结果38
CF=0
OF=0
3
② 无符号数溢出
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1

第四章-指令系统PPT课件

第四章-指令系统PPT课件
指令系统中指令采用等长指令的优点:各种指令字长度是相等的,
指令字结构简单,且指令字长度是不变的 ;
采用非等长指令的的优点:各种指令字长度随指令功能而异,结
构灵活,能充分利用指令长度,但指令的控制较复杂 。
.
16
五、指令助记符
由于硬件只能识别1和0,所以采用二进制操作 码是必要的,但是我们用二进制来书写程序却 非常麻烦。
指令前缀 段取代 操作数长度取代 地址长度取代
操作码 Mod Reg或操作码 R/M S I B 位移量 立即数
.
19
七、 Pentium指令格式
指令前缀中的重复前缀指定串的重复操作,这样使 Pentium处理串比软循环快得多。
LOCK前缀用于多CPU环境中对共享存储器的排他性 访问
段取代用于改变默认段寄存器的情况
提供一个常数。
.
31
3、直接寻址
指令中地址码字段给出的地址A就是操作数的 有效地址EA(Effective Address),即EA=A。
.
32
3、直接寻址
操作数地址是不能修改的,与程序本身所在的位置 无关,所以又叫做绝对寻址方式
在早期的计算机中,主存储器的容量较小,指令中 地址码的位数要求不长,采用直接寻址方式简单快 速,也便于硬件实现,因此,常被作为主要的寻址 方式。
本章所讨论的指令,是机器指令。 一台计算机中所有机器指令的集合,称为这台计算机的指令系
统。 指令系统是表征一台计算机性能的重要因素,它的格式与功能
不仅直接影响到机器的硬件结构,而且也直接影响到系统软件, 影响到机器的适用范围
.
3
4.1 指令系统的发展与性能要求
3、发展情况
复杂指令系统计算机,简称CISC。但是如 此庞大的指令系统不但使计算机的研制周期 变长,难以保证正确性,不易调试维护,而 且由于采用了大量使用频率很低的复杂指令 而造成硬件资源浪费。

第4章-指令系统

第4章-指令系统
22
注:
a. 直接寻址的操作过程与立即寻址不同。 为表示它们的区别,直接寻址的偏移量用一 对 “[ ]”表示。
立即寻址:MOV AX,1234H
直接寻址:MOV AX,[1234H]
b. 段基值乘以16,相当于段基值(二进
制表示)左移4位,或段基值(十六进制
表示)在末尾添一个0H。
-
23
(2) 间接寻址方式 以间接的方式得到有效地址EA,有几个专用 的寄存器可用于间接寻址:BX,BP,SI,DI。 a. 基址寻址方式 • 以BX作为基址寻址寄存器,操作数在数据段中。 • 以BP作为基址寻址寄存器,操作数在堆栈段中。
程序的执行一般是按指令的先后次序一条一 条执行,但遇到转移类指令时则可能改变指令的 执行次序。
-
5
四、指令包含的基本内容
1. 做什么操作 由指令的操作码字段规定。
2. 操作数的来源 操作数来自于什么地方。由指令的操作
数字段规定。
-
6
操作数的来源可以是:
a. CPU内的某个寄存器; b. 存储器内的某一个或几个单元; c. I/O端口; d. 立即数。
-
21
MOV AX, [1234H]
...
EA=1234H
A1
本例执行完后,
34
AX=3050H
12
...
设DS=3000H
DS16
= 3000H×16
=30000H
30000H
...
+ 1234H
31234H
31234H 50
30
5360 7580 AX
...
AH AL
-
指令 代码段
EA=1234H 数据段

微机原理第4章80868088指令系统

微机原理第4章80868088指令系统

第4章8086/8088指令系统指令是指挥计算机进行各种操作的命令。

指令系统是指微处理器所执行各种指令的集合。

指令系统中的每一条指令都对应着由微处理器所完成的一种功能: 操作。

4.1 概述计算机的语言可分为机器语言、汇编语言和高级语言。

机器语言是计算机能够识别的语言,它是由0和1组成的一种编码。

为解决某一具体问题或达到某些目的,将二进制数0和1组成不同的代码串,这些代码串称之为机器指令。

全部机器指令的集合构成了计算机的指令系统,被称为机器语言(Machine Language)。

指令和数据编写成一个相互联系的序列,称之为程序。

4.1.1机器语言机器语言的每一条指令是以二进制为代码的指令,它能够被计算机直接执行。

例如要将以基址指针为地址BP中的内容送入累加器AL,其机器指令为100010100100011000000000B写成16进制可以表示为(8A4600H)。

当微处理器将这条指令取出并执行这条指令时,微处理器会将以基址指针BP为地址单元中的内容送入累加器AL操作。

这是由于微处理器在设计时指定这样一组代码应完成这样的功能。

不同的代码完成不同的功能。

同时,对于不同型号的微处理器,完成相同的任务其指令的机器码各不相同,不同的代码完成的功能: 也各不相同。

每个微处理器都有一套自己特有的指令系统。

若要完成某种操作和运算,依据指令系统选择指令,并按一定规律排列起来存放到内存中,微处理器就可以运行程序。

采用机器语言编写程序的一个最大好处是,程序送入计算机后,可以直接执行,对于8位微处理器,我们只要有一张指令编码表,可以通过查表找出每条指令的机器编码。

根据设计任务很容易进行编程。

但对于8086系统,情况就不同了,这是因为8086系统的操作数比8位微处理器丰富的多,它可以选寄存器、存储器、立即数和端口地址等可以都用作目的操作数,并且可以有不同的组合。

而每一种组合又有几十种编码方式。

所以,很难列出一张8086指令与机器语言的对照表,很明显,用机器语言编写程序的缺点是,不容易书写,指令代码难于记忆,编写程序易于出错,出错后不易查找错误,编程效率非常低。

第4章 80868088指令系统3(算术运算指令)(楼俊君)

第4章 80868088指令系统3(算术运算指令)(楼俊君)
28
关于除法操作中的字长扩展问题
• 运算要求被除数字长是除数字长的两 倍,若不满足则需对被除数进行扩展,否则 产生错误。 8位16位 16位32位 ALAX(AH AL) AXDX AX • 对无符号数除法扩展,只需将AH或DX 清零即可。 • 对有符号数而言,则是符号位的扩展。 可使用符号扩展指令CBW和CWD
指令例子: SBB AX,CX SBB WORD PTR[SI],2080H SBB [SI],DX
16
(3) 减1指令DEC
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1
指令例子: DEC CL DEC BYTE PTR[DI+2] DEC SI
注:该指令与INC一样,它不影响CF标志,但对 AF/OF/PF/SF/ZF会产生影响。
17
(4) 求补指令NEG
格式: NEG opr 操作: opr← 0-(opr)
对一个操作数取补码相当于用0减去此操作数, 故利用NEG指令可得到负数的绝对值。 例: 若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后, 即得到4(-4的绝对值)。
20
根据标志位来判断比较的结果
1)根据ZF判断两个数是否相等。若ZF=1, 则两数相等。 2)若ZF=0,则两个数不相等,则分两种 情况考虑: ①比较的是两个无符号数 若CF=0,则dest>src; 若CF=1,则dest<src。 ②比较的是两个有符号数 若OF⊕SF=0,则dest>src; 若OF⊕SF=1,则dest<src。
19
(5) 比较指令CMP
格式: CMP dest, src 操作: dest←(dest)-(src) (而 SUB dest, src; dest←(dest)-(src) ) CMP也是执行两个操作数相减,但结果不送目标操 作数,其结果只反映在标志位上。 指令例子: CMP AL,0AH CMP CX,SI CMP DI,[BX+03]

第4章 8086(8088)CPU指令系统

第4章 8086(8088)CPU指令系统
数据段
3000H:0000H
◆存储器操作数都是给出其首地址 ◆存储器操作数无超越前缀时,默 认段地址为DS;有BP参入寻址时默 认为SS ◆双操作数指令中,两个操作数不 能都是存储器操作数
8
34H 12H
3000H:2000H
AH
AL

4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
MOD
8位位 没有 存储器寻址 移量 位移 R/M字段为存储器操作数 逻辑地址的计算公式 量
mod=00 mod=01
R/M 000 001 010 011 100 101 110 111
mod=10
16位 位移 量
R/M字段为 REG寻址 REG寻址 寄存器操作 数 W=0 W=1
mod=11 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI
AH
代码段
1000H:0000H
操作码 1000H:0100H
34H
AL
注:立即数可理解为常数,在指令中只能作为源操作数
5
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
2.寄存器寻址( Addressing) 2.寄存器寻址(Register Addressing) 寄存器寻址 寄存器寻址是指操作数存放在规定的寄存器中。 寄存器寻址是指操作数存放在规定的寄存器中。 16位寄存器:AX、BX、CX、DX、 16位寄存器:AX、BX、CX、DX、 位寄存器 SP、BP、DI、SI; SP、BP、DI、SI; 8位寄存器:AH、BH、CH、DH、 位寄存器:AH、BH、CH、DH、 AL、BL、CL、DL; AL、BL、CL、DL; 16位段寄存器:CS、DS、ES、SS。 16位段寄存器:CS、DS、ES、SS。 位段寄存器 SS、DS、ES既可以作为源操作数, SS、DS、ES既可以作为源操作数,也可 既可以作为源操作数 以作为目的操作数, 以作为目的操作数,但不能互为目的操 作数。作为目的操作数时, 作数。作为目的操作数时,源操作数不 能是立即数,CS只能作为源操作数 只能作为源操作数。 能是立即数,CS只能作为源操作数。

微型计算机第4章课件

微型计算机第4章课件

数 据


22064H 45
2020年6月18日
17
微型计算机原理
第四章 8x86指令系统
2020年6月18日
18
微型计算机原理
第四章 8x86指令系统
⑸ 基址加变址相对寻址
EA=
(BX) (BP) +
(DI) (SI)
+
8位 disp 16位 disp
MOV [BX+DI+1234H], AH
2020年6月18日
16
微型计算机原理
⑶ 寄存器相对寻址
第四章 8x86指令系统
MOV ((BBCXPL)) , [BX8位+1d0is6p4H]
EA= (DI) + 16位 disp
DS:(S2I0)000H
BX: 1000H
+
1064H
操作码


64

10
22064H
20000H
CL
45

21000H
000000DW mod reg r/m Disp-L
Disp-H
000000 1 1 10 000 001 00100110 00001000
03H
81H
26H
08H
2020年6月18日
7
微型计算机原理
第四章 8x86指令系统
4.1.2 8086/8088指令系统的寻址方式
所谓寻址方式就是寻找操作数存放地址 (位置)的方法。在8086/8088系统中操作数存 放的位置有以下4种:
opcode Mod字节 disp(低) disp(高)
Data 五字节指令
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档