吉林大学远程教育学院

115
计计计计计计计计计计 COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 吉吉吉吉吉吉吉吉吉吉 计计计计计计计计计 计计计 计计计 计计 计计计 80 计计计计计计计计计计计计计计 计 计 计

Upload: gail-wiley

Post on 01-Jan-2016

72 views

Category:

Documents


0 download

DESCRIPTION

吉林大学远程教育学院. 微机原理及汇编语言. 主讲人: 赵宏伟 教授 总学时: 80 吉林大学计算机科学与技术学院. 第 六 讲. 第 2 章 8088 指令系统. 指令: 控制计算机完成指定操作的命令 指令系统: 所有指令的集合 8088/8086 指令系统是所有 x86 系列 CPU 指令系统的基础, 80286 、 80386 乃至于 Pentium 等新型 CPU 指令是在这个基础上做了一些扩充。 8088 指令系统共包含 92 种基本指令 8088 指令按照功能分为 6 大类: 数据传送类 算术运算类 - PowerPoint PPT Presentation

TRANSCRIPT

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 六 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

第 2 章 8088 指令系统

• 指令:控制计算机完成指定操作的命令• 指令系统:所有指令的集合• 8088/8086 指令系统是所有 x86 系列 CPU 指令

系统的基础, 80286 、 80386 乃至于 Pentium 等新型 CPU 指令是在这个基础上做了一些扩充。

• 8088 指令系统共包含 92 种基本指令• 8088 指令按照功能分为 6 大类: 数据传送类 算术运算类 逻辑运算和移位 串操作 控制转移类 处理器控制

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

指令的基本构成

• 指令助记符包括操作码和操作数,指令长度一般在 1 ~ 6个字节之间

• 操作码:表示指令完成什么样的功能• 操作数:指令的操作对象 ( 操作数可以是:双操作数,即

源操作数和目的操作数;单操作数;隐含操作数 )

• 指令的一般格式: 操作码 [操作数],[操作数];[注释]

• 操作数的一般形式: 1. 立即数操作数 ( 具有固定数值的操作数,即常数, 8 位或

16 位。只能用作源操作数 ) 2. 寄存器操作数 ( 如 8 个通用寄存器,段寄存器 ) 3. 存储器操作数 ( 可以作源操作数或目的操作数 ) 4.I/O 端口操作数 ( 可以作源操作数或目的操作数 )

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

2.1 8088 的寻址方式

• 寻址方式:获得操作数地址的方法• 寻址方式通常有 6 种: 1. 立即寻址 2. 直接寻址 3. 寄存器寻址 4. 寄存器间接寻址 5. 变址寻址 6. 基址加变址寻址• 为了适应各种数据结构,指令中的段内偏移量可

以由几个部分组成,称之为有效地址 EA 。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

立即寻址( Immediate Addressing)

• 操作数紧跟在操作码后面,与操作数一起存放在一个代码段区域中。可以是 8 位也可以 16 位。

• 例如: MOV AX, 3102H

31H

02H

操作码ALAH

码段

M

高 8 位

低 8 位操作码

码段

M

立即数

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

直接寻址( Direct Addressing)

• 直接寻址时,有效地址( EA )直接包含在指令中,紧跟在操作码之后。

20000 3102+23102

02000DS

30

40

31

02

操作码

23102

23103

码段

4030AX

• 例如DS=2000HMOV AX, [3102

H]

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

寄存器寻址( Register Addressing)

• 操作数存放在指定的寄存器中,对于 16 位数据,寄存器有 AX 、 BX 、 CX 、 DX 、 SI 、 DI 、 SP 、 BP

• 例如: MOV DS, AX

DS ALAH

执行结果送 DS

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

寄存器间接寻址 (Register Indirect Addressing)

• 寄存器中的内容是操作数的偏移地址,操作数存放在存储器中。 (SI 、 DI 、 BX 、 BP)

例如: MOV AX,[SI] DS=6000H SI=1200H

EA= (BX) (SI) (DI) ( BP )

ALAH

33H

44H 61200H

61201H

码段

数据段

执行结果( AX ) =3344H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

变址寻址( Index Addressing )

• 操作数放在存储器中,寄存器 (SI 、 DI 、 BX 、 BP) 内容作为间接地址,加上指令中给出的 8 位或 16 位偏移量(相对值),形成操作数的有效地址。

• 段寄存器由间址寄存器决定。• 例: MOV AX , DATA[BX]

60000 BX: 1000

DATA: + 0008 61008

ALAHAX

61008

0DS: 6000

数据段

码段操作码0800

低字节高字节

操作码

66H55H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 七 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

基址加变址寻址( 1 )• 有效地址为 : 基址寄存器( BX 、 BP )内容加变址寄存器 (

SI 、 DI) 内容。• BX 的默认段寄存器 DS 。 BP 的默认段寄存器是 SS.例如: MOV AX, [BX][SI]

DS : 80000BX: 1000SI: + 2000 83000H

08000DS

4030AX

30

40

操作码

8300083001

码段

数据段

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

基址加变址寻址( 2 )• 有效地址为基址寄存器内容加变址寄存器内容加 8

位或 16 位偏移量。默认段寄存器 DS 或 SS• 例如: MOV AX,DATA[BX][DI]

DS : 80000BX: 1000DI: + 2000DATA: + 0200 83200H

08000DS

4030AX

DATA

30

40

02

00

操作码

83200

83201

码段

数据段

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8086 指令格式(1)• 8086/8088 指令是由 1 ~ 6 个字节组成。• 第一字节通常为指令的操作码。它表示该条指令要进行什么样的操作。

DATAHDATALDISPHDISPLR/MREGMODwDOP code

操作码字节

字节 1 字节 2 字节 3 、 4 字节 5 、 6

7 2 1 0 7 6 5 4 3 2 1 0 7· · · 0 7· · · · ·0 7· · · · · 0 7· · · · · 0

寻址方式字节 位移量 立即数•OP code 为操作码,表示该指令要完成的操作。•D=0 :第一个操作数是目的操作数, 1:第二个操作数是目的操作数•W=0 : 8位操作数, 1 : 16 位操作数•MOD 指明寻址方式: MOD = 11 寄存器寻址

        MOD≠11 存储器寻址          00没有偏移量 01 8 位偏移量 1016 位偏移量

•REG 用编码方式指明操作中所使用的寄存器。•R/M 用编码方式指出存储器有效地址计算方法。•DISP 表示地址偏移量。 DATA 则指明立即数。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8086 指令格式( 2 )• R/M( 寄存器 /存储器)编码及有效地址计算方法

例: ADD DISP[BX][DI],DX DISP=2145H000000 0 1 10 010 001 01000101 00100001操作码 D W MOD REG R/M 位移量低 位移量高D=0 源操作数是寄存器操作数 W=1 操作数是 16位操作码是 : 01914521H

MOD=11 MOD≠11 (存储器操作数)REG

W=0

W=1 R/M MOD=00 MOD=01 MOD=10

000 AL AX 000 [BX+SI] [BX+SI]+D8 [BX+SI]+D16

001 CL CX 001 [BX+DI] [BX+DI]+D8 [BX+DI]+D16

010 DL DX 010 [BP+SI] [BP+SI]+D8 [BP+SI]+D16

011 BL BX 011 [BP+DI] [BP+DI]+D8 [BP+DI]+D16

100 AH SP 100 [SI] [SI]+D8 [SI]+D16

101 CH BP 101 [DI] [DI]+D8 [DI]+D16

110 DH SI 110 直接地址 [BP]+D8 [BP]+D16

111 BH DI 111 [BX] [BX]+D8 [BX]+D16

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

2.2 8088的标志寄存器

标志寄存器 FLAG

• 16 位,其中有 6 个状态位、 3 个控制位• 6 个状态位: CF 、 PF 、 AF 、 ZF 、 SF 、

OF• 3 个控制位: IF 、 DF 、 TF

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 八 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8088的标志寄存器 (1)

标志寄存器 FLAG (状态位)•进位标志 CF,反映算术运算后,最高位(字节操作为 D7,字操作为 D1

5)出现进位(或借位)的情况,有则为“ 1”

•奇偶标志 PF,反映操作结果中“ 1”的个数的情况,若为偶数, PF=1

•辅助进位标志 AF,反映一个 8位量的低 4位向高 4位有无进位(或借位)的情况,有则置“ 1”

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8088的标志寄存器 (2)标志寄存器 FLAG (状态位)• 零标志 ZF,反映运算结果是否为零的情况,结果为零, ZF “置为 1”

• 符号标志 SF,反映运算结果的符号情况,若结果为负数, SF “为 1”。 SF的取值与运算结果最高位(字节操作为 D7,字操作为 D15)一致

• 溢出标记 OF ,反映带符号数运算结果是否超过机器所能表示的数值范围的情况,对字节运算为 -128 ~ +127 ,对字运算为 -32768 ~ +32767 。若超过上述范围则称为“溢出”, OF=1

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8088的标志寄存器 (3)

标志寄存器 FLAG (控制位)• 方向标志 DF,在进行字符串操作时,每执行一条串操作指令,对地址要进行一次调整,由 DF决定地址是增还是减。若 DF=1,则为减量;若 DF=0则为增量

• 中断允许标志 IF,表示系统是否允许外部的可屏蔽中断。若 IF=1,表示允许中断。 IF对非屏蔽中断及内部中断请求不起作用

• 跟踪标志 TF ,当 TF= 1 时, CPU每执行完一条指令,便自动产生一个内部中断,对程序进行逐条检查,常用于程序的调试

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

2.3 指令系统

• 六个功能组:①数据传送 ( Data Transfer)②算术运算 ( Arithmetic)③逻辑运算 ( Logic)④串操作 ( String manipulation )⑤控制传送 ( Control Transfer)⑥处理器控制 ( Processor Control)

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

8088 CPU 各类常用指令助记符

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

指令中的符号

•存储单元内容或偏移地址•[ ]

•存储器操作数•累加器操作数•目的操作数•源操作数地址

•8 位或 16 位偏移量•8 位或 16 位立即数•输入输出接口

•表示寄存器的内容

•mem•acc•dest•Src•disp•DATA•port•( )

•操作数•OPRD

•意义•寄存器、缩写、符号

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 九 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令

• 使用最频繁的指令,包括:– 一般数据传送: MOV 、 PUSH 、 POP 、 CBW– 输入输出指令: IN、 OUT– 地址传送指令: LEA– 标志传送指令: PUSHF 、 POPF

• 可以实现: 一次可以传送 8 位,也可以传送 16 位 传送的位数取决于寄存器长度和立即数长度 可以使用各种寻址方式

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (1)1 .传送指令  MOV• 指令格式: MOV dest , src• 功能:将一个操作数从源地址传送到目的地址,而源地址中

的操作数不变• 类型:

• ① 通用寄存器之间的传送 MOV AL, BL MOV AX, DX MOV SI, BP MOV BX, DI MOV DL, CH

段寄存器 CS,DS,ES,SS

立即数

存储器

通用

寄存

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (2)• ②寄存器与存储器之间的传送 MOV [BX],AX ;寄存器到存储器

若 (DS) = 6000H , (BX) = 1200H , (AX) = 1234H 执行后 (61200H) = 34H (61201H) = 12H

MOV CL,[BP][DI]将 SS 段的偏移地址( BP)+( DI )存储单元内容送 CL。

如 (SS) = 8000H , (BP) = 1020H , (DI) = 0383H , (813A3H) = 55H执行后 (CL)=55H

MOV AX , [6000H] 将 DS 段的 6000H 和 6001H 两个单元的内容送 AX。• ③立即数传送至 CPU 的通用寄存器 MOV AL , 5 MOV BX , 3078H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (3)

• 20H

• 00H •8000H

执行前 DS 81000H

81001H

•2000H

执行后 DS

• ④立即数到存储器的传送MOV BYTE PTR[BP+SI] , 5 ; 5→SS:(BP+SI)MOV WORD PTR[BX] , 1005H ; 05H→[DS:(BX)], 10H→[ DS:(BX+1)]MOV WORD PTR [DI] , 2000H ;将立即数 2000H 存放到以 DI的内容为地

址指针的相邻两个单元中• ⑤寄存器与段寄存器之间的传送

MOV DS , [1000H]MOV [BX] , ES若执行前 :DS=8000H(81000H)=00H(81001H)=20HES=4000H BX=1200H执行以上两条指令之后:DS=2000H ;第一条指令执行完(21200H)=00H ;第二条指令执行完(21201H)=40H 。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (4)

• 例:把内存中首地址为 MEM1 的 200 个字节送到首地址为 MEM2 的区域中,编程。

MOV SI,OFFSET MEM1 MOV DI,OFFSET MEM2 MOV CX,200NEXT:MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CX JNZ NEXT HLT

MEM1→SI,MEM2→DI,200→CX

[SI] →AL,AL →[DI]

INC SI,INC DIDEC CX

CX=0?

结束N

•00H

•01H

•C6H

•C7H

MEM1+199

MEM2+199

MEM2+0

MEM1+0

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (5)

2.堆栈操作指令• 堆栈的概念 堆栈是内存中一个特定的区域,用以存放寄存器

和存储器中暂时不用又必须保存的数据• 段寄存器是 SS

• 存取原则:以字为单位 从高地址向低地址存放 只能是寄存器或存储器操作 所在段由 SS决定 SP 总是指向栈顶。 遵循后进先出。 栈顶

SP

增长方向

SS 低

::

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (6)

• ①入栈指令  PUSH• 指令格式: PUSH Src• 将 16位操作数送至由堆栈指针 SP所指向的堆栈的顶部,

然后修改堆栈指针 SP。• Scr 可以是:

• 寄存器(数据寄存器、 IP、变址寄存器)• 段寄存器• 两个连续地存储单元

• 例: PUSH AX• 操作过程 AH→[(SP)-1 ] ; AH 入栈 AL→[(SP)-2] ; AL 入栈 (SP)-2→(SP)

•AL•AH

SP-2

SP-1

SP

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (7)

• ②出栈指令  POP• 指令格式: POP dest• 把 SP指向的栈顶的一个字送至目标地址, 并修改堆栈指针 SP。(不能 POP CS )

• 例: POP BX (SP )→ BL ;栈顶数据送 BL (SP+1)→BH ; 下一单元内容送 BH SP+2→( SP );堆栈指针加 2• SP 总是指向下一个要出栈的存储单元。

•BL•BH

SP

SP+1

SP+2

xxHyyH

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (7- 1)

• 例

MOV AX, 9000H

MOV SS, AX

MOV SP, 0E200H

MOV DX, 38FFH

PUSH DX

PUSH AX

:

POP DX

POP AX

00H

38 38H

90HFFH

FF

90 00

DH DL

AH AL

9E200H

9E1FCH

执行 PUSH 指令之后

38 FF

90 00DH DL

AH AL

92000H

执行 POP 指令之后

00H90HFFH38H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十一 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-通用数据传送指令 (8)

3. 交换指令• XCHG dest , src• 功能:把一个字或一个字节的目的操作数与源操作数交换。• 类型:

• 说明:不能在存储器与存储器之间进行,交换不能是段寄存器的内容,字长必须相同

• 例: XCHG AX, BX ; AX↔BX XCHG BL, [2000H] XCHG CL , DL ; CL ↔DL XCHG AX , BUFFER ; AL ↔(BUFFER) ; AH ↔(BUFFER+1)

通用寄存器 AX,BX,CX,DX,SP,BP,SI,DI 存储器

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-累加器专用指令 (1)

1. 输入指令  IN• 直接寻址 I/O 指令和寄存器间接寻址 I/O 指令• 直接寻址指令包含了一个 8位的 I/O 地址,允许寻址 256

个端口。• 间接寻址指令由 DX指出,包含了一个 16位的 I/O 地址,

允许寻址 65536 个端口。• 直接寻址端口地址 00H ~ FFH• 间接寻址端口地址 0000H ~ FFFFH• IN AL , n ; [n] →AL , n是 8位数据端口地址 • IN AX , n ; [n + 1] , [n] →AX• IN AL , DX ; [(DX)] →AL , (DX) 是 8位数据端口地

址 • IN AX , DX ; [(DX) + 1] , [(DX)] →AX

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-累加器专用指令 (2)

2. 输出指令  OUT

• OUT n , AL ; AL→[n]• OUT n , AX ; AX→[n + 1] , [n] • OUT DX , AL ; AL→[(DX)]• OUT DX , AX ; AX→[(DX) + 1] , [(DX)]

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-累加器专用指令 (3)

3 . XLAT (查表转换)• 格式: XLAT 转换表• 功能:从转换表中查找出一个字节的内容,取代

AL内容。隐含寻址,有效地址 EA= (BX)+(AL) 即将 EA为偏移地址的存储单元单字节内容 → A

L• 过程:转换表最长 256 字节, BX←表始址, AL←表内位移• 例:有 0 - 9 的 ASCII 码表,首地址 TABLE, 要

求将 2转换成对应的 ASCII 码。 MOV BX, OFFSET TABLE MOV AL, 02H XLAT TABLE

30H31H

38H

TABLE+0TABLE+1::TABLE+8

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-地址目标传送指令 (1)

1. LEA (装入有效地址)• 格式: LEA 寄存器,存储器• 功能:把存储器操作数所在的 16 位偏移量传送到 16位长的通用寄存器中。

• 例: LEA BX , MEM 结果: BX = 2000H

LEA BX , BUFFER ;将 16 位偏移地址→寄存器 MOV AL , [BX] ;存储单元 [BX] 内容→ AL MOV AH , [BX+1] ;存储单元 [BX + 1] 内容内容→ AH,

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-地址目标传送指令 (2)

2. LDS (装入数据段指针)• 格式: LDS 寄存器 16 ,存储器 32• 功能:将源操作数的双字指针(段基址:偏移量)低字送

目标寄存器,高字送 DS 。 16 位寄存器操作数可为 BX 、BP 、 SI 、 DI 中的一个。 32 位存储器操作数,给出内存连续 4个单元的首地址:

低地址单元相邻两个字节是偏移量→寄存器 高地址单元相邻两个字节是段基址→ DS • 例: LDS SI , ADDR

ADDR 65

SI 00

DS 4C

3B

0065

3B4C

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-地址目标传送指令 (3)

3. LES (装入附加段指针)• 格式: LES 寄存器,存储器• 功能:将源操作数的双字指针(段基址:偏移

量)低字送目标寄存器,高字送 ES。• 例: LES DI , ADDR

ADDR 11

DI 22

ES 33

44

2211

4433

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

数据传送类指令-状态标志传送指令1. LAHF (装入 AH)• 格式: LAHF• 功能:把 FLAG 低 8位送入 AH, 标志本身不受影响 .

2. SAHF (设置标志)• 格式: SAHF• 功能: AH→FLAG 低 8位3. PUSHF (标志入栈)• 格式: PUSHF• 功能:① SP-2→SP ②FLAG→( SP )4. POPF (标志出栈)• 格式: POPF• 功能:①( SP)→ FLAG ②SP + 2→SP ③ 原 FLAG 内容被破坏

CF

PF

AF

ZF

SF

AH→FLAG→

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令

• 8088提供了加减乘除 4组基本算术运算指令。• 可以实现字、字节、无符号数和有符号数运算。• 可以:

– 单操作数,不能是立即数,– 双操作数,立即数只能作源操作数。– 隐含操作数

• 无符号组合 BCD适用加、减十进制运算。• 无符号未组合 BCD适用加、减、乘、除十进制运

算。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–加法指令( 1 )1 . ADD 不带进位加法指令• 格式: ADD OPRD1 , OPRD2• 功能: OPRD1+ OPRD2→ OPRD1 ,完成两个字节或字操作数的相加,

并将结果送目的操作数。– OPRD1 和 OPRD2均可以是 8位或 16位寄存器或存储器操作数– 源操作数可以是立即数– 可以是无符号数或有符号数– 但不能同时是存储器数– 不能对段寄存器进行运算

ADD AL , 30HADD AX , SIADD BX , 3FEHADD DX , DATA[BX+SI] ;基址间址变址寻址ADD DATA [SI] , 100ADD DATA [SI] , Al ; ; Al+[DATA+[SI]] → [DATA+[SI]]

例:MOV AL , 7EH ; AL←7EHADD AL , 5BH ; AL←7EH+5BH最后两条执行后 AL=D9H,7FH<D9H<FFH,各寄存器的状态: AF=1,CF=0,OF=1,PF=0,SF=1,ZF=0CF=0,无进位OF=1, 若有符号数相加则产生溢出。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–加法指令(2)2. ADC  带进位加法指令• 格式: ADC OPRD1,OPRD2 • 功能: PRD1+OPRD2+CF→OPRD1 ,能够完成两个

源操作数及进位位 CF的相加,结果送目的操作数。• 例如:求两个 4字节无符号数 0107A379H+10067E

4FH=?程序如下:MOV DX,0107H ;高 16位→ DXMOV AX,0A379H ;低 16位→ AXMOV BX,1006H ;第二个数高 16位→ BXMOV CX,7E4FH ;第二个数低 16位→ CXCLC ; 清进位标志ADD AX,CX ;AX+CX→AX (低位)ADC DX,BX ;DX+BX+CF→DX (高位)

结果在 DX和 AX 寄存器= 110E21C8H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–加法指令(3)

3. INC  加 1指令( Increment )• 格式: INC OPRD• 功能: OPRD+1→OPRD ( B/W ),不影响 CF • 例如:   INC AL       ;AL+1→AL   INC BX ;BX+1→BX  INC WORD PTR 4[BX] ;((BX)+4)+1→ ((BX)+4)• WORD PTR就是指明要对存储单元中的一个 16位数加

1,而不是 8位数。– 操作数是寄存器和存储器操作数– 可以是 8位也可以是 16位– 不能是段寄存器和立即数

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十二 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–加法指令(4)4 . AAA  指令(未组合 BCD 加法调整)• 格式: AAA• 功能:对 AL中未组合 BCD调整。• 调整过程: IF (AL&0FH)>9 OR AF=1 THEN AL←AL+6 AH←AH+1 AF←1 CF←AF AL←AL&0FH• 影响 AF 和 CF ,但对 OF、 PF 、 SF 、 ZF未定义。

AAA 指令调整如下:AL=09BCD 00001001 BL=04BCD +) 00000100ADD AL , BL 00001101 ;低 4位> 9 ,加 06H调整AAA +) 00000110 00010011 ; AF=1 , AL∧OFH→AL ; AH=AH + 1, CF=1

例如: MOV AL, 09H MOV BL, 04H ADD AL, BL AAA

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–加法指令(5)5 . DAA  指令(组合 BCD 加法调整) (Decimal adjust additio

n)• 格式: DAA• 功能:对 AL中组合 BCD调整。• 调整过程: (1) IF (AL&0FH)>9 OR AF=1 THEN AL←AL+6 AF←1 (2) IF AL>9FH OR CF=1 THEN AL←AL+60H CF←1• 影响 AF 、 CF 、 PF 、 SF 和 ZF ,但对 OF未定义。

DAA 指令调整如下:AL=48BCD 01001000 BL=27BCD + )00100111ADD AL,27H 01101111 ;AL 中值> 9 ,须加 6调整。DAA + )00000110 01110101

•例如: MOV AL,48H ADD AL,27H ; AL=6FH, 不正确,须调整 DAA ;( 48 ) BCD+(27)BCD=(75)BCD

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(1)

1. SUB  不带借位( CF)的减法• 格式: SUB OPRD1,OPRD2• 操作数为累加器,寄存器或立即数( B/W ) 。• 例如: SUB CX , BX   ;寄存器之间

SUB DX , TOTAL[SI]     ;寄存器与存储器SUB [BP+2] , CL   ;存储器与寄存器SUB AL , 02   ;累加器和立即数SUB [BP]BALANCE , 100   ;存储器和立即数

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(2)

2. SBB  带借位减法 (Subtract with Borrow)• 格式: SBB OPRD1,OPRD2• 功能: OPRD1-OPRD2-CF→OPRD1 , B/W ,除了把借位位再减去而外,均同 SUB 指令。

• 状态寄存器中的进位标志 CF,同时也是借位标志。3. DEC  减 1 指令 (Decrement)• 格式: DEC OPRD ; B/W• 例如: 编写延时程序

MOV CX,0FFFFH

NEXT:DEC CX

JNZ NEXT

HLT

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(3)

4 . NEG  求补指令 (Negate)

• 格式: NEG OPRD• 功能: 0-OPRD→OPRD , B/W• 例如:

  NEG AX ;对累加器 AX求补

NEG BYTE PTR[DI]   ;对存储器内容求补

NEG WORD PTR 4[BX]  ;对存储器内容求补

如果 AX=00F2H , NEG AX , 求补后 AX=FF0EH

( n位长的 X补码相当于模减去 2n-︱ X︱)

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(4)

5. CMP  比较指令 (Compare)

• 格式: CMP OPRD1,OPRD2• 功能:完成两个数相减,结果不送回目的操作数

( OPRD1 的内容不变),而只影响相应的标志位,B/W 。

• 例: CMP A , B ( 1) A, B为有符号数:  ①  OF=0 ,则 SF=0 时 A>B , SF=1 时 A<B  ②  OF=1 ,则 SF=0 时 A<B , SF=1 时 A>B  ③  OF⊕SF=0 ,则 A>B ; OF⊕SF=1 ,则 A<B ( 2) A=B 则 ZF=1 ; A≠B则 ZF=0 ( 3) A, B为无符号数:则 CF=1 时 A<B , CF=

0 时 A≥B

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(5)

6 . AAS 未组合 BCD减法调整指令• 格式: AAS• 功能:对 AL中未组合 BCD减法调整。• 调整过程: IF (AL&0FH)>9 OR AF=1 THEN AL←AL - 6 AH←AH - 1 AF←1 CF←AF AL←AL&0FH• 影响 AF 和 CF ,但对 OF、 PF 、 SF 、 ZF未定义。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–减法指令(6)7 . DAS  指令(组合 BCD减法调整)• 格式: DAS• 功能:对 AL中组合 BCD减法调整。• 调整过程: (1) IF (AL&0FH)>9 OR AF=1 THEN AL←AL - 6 AF←1 (2) IF AL>9FH OR CF=1 THEN AL←AL - 60H CF←1• 影响 AF 、 CF 、 PF 、 SF 和 ZF ,但对 OF未定义。• 例: SUB AL,13H

DASAL=22H 00100010 ; 22H -) 00010011 ; 13H , AF=1 00001111 ;个位向十位借 16 ,多 6 -) 00000110 ;低位﹥ 9 ,- 06H调整 00001001 ;得到正确结果

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十三 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–乘法指令(1)• 包括有符号和无符号乘法两种,隐含目标操作数,

源操作数由指令给出,可以 8位或 16位数相乘。• 8 位数的积在 AX中, 16位数乘,积在 DX AX 中。1. MUL  无符号数乘法指令• 格式: MUL  源• 功能:累加器内容与源操作数相乘,保存结果。• 例: MUL BX   MUL BYTE PTR[SI]  MUL DL   MUL WORD PTR[DI] • 如果乘积的 AH或 DX 不为 0,则 CF=OF=1 。说明

AH和 DX 中已经有数据。否则, CF=OF=0。• 影响 CF 和 OF ,对 AF 、 PF 、 SF 和 ZF未定义。

AL

AL AH

×

8 位

8 位

16 位

AX

AX DX

×

16 位

16 位

32 位

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–乘法指令(2)2. IMUL  有符号数乘法指令• 例:计算 AL=FEH , CL=11H 的积• 解: MUL CL  执行结果: FEH×11H→AX=10DEH , CF=OF=0 IMUL CL

执行结果: AX=FFDEH , CF=OF=0 ( - 02H)补 =FEH ,- 02H×11H→AX= - 0022H

( - 0022H)补= FFDEH• 要求两乘数都有符号,正数 D7=0,负数 D7=1• 指令中给出的源操作数应满足带符号数的表示范围。

• 运算结果使得标志位 CF=OF=0, 说明积的高半部分是符号扩展。若 CF=OF=1 ,说明 AH和 DX中已经有数据(不光是符号部分)。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–乘法指令(3)

3 . AAM 未组合 BCD乘法调整指令• 格式: AAM• 功能:对 AL 中未组合 BCD乘法结果调整,调整

结果存于 AX 中。• 调整过程: AH←AL/0AH ( AL被 10除的商→ AH) AL←AL%0AH ( AL被 10除的余数→ AL) 此操作就是对 AL取模 10 的运算• 影响 PF 、 SF 和 ZF ,但对 AF 、 CF 、 OF未定义。• 例: AH=06H AL=07H

MUL AH ;相乘= 002AH→AX AAM ; AH = 04H , AL=02H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–除法指令(1)

1. DIV无符号数除法指令• 格式: DIV  源• 功能:累加器内容除以源操作数,保存结果。

• 说明:执行除法操作后,所有标志位不确定,当除数为 0或商超出寄存器所能表示的范围时,产生除法错中断( 0型中断)。

• 例: DIV BL ;AX/BL 商→ AL,余数→ AH    MOV WORD PTR[SI]       ; DX:AX除以( [SI+1],[SI] )商→ AX,余数→ D

X• 隐含了被除数,立即数不能作除数。• 规定被除数字长须是除数的 2倍。不够用 CWD扩展。

商 8

AH AL

AL AH

余数 8

除数 8

被除数 16

字节操作

商 16

DX AX

AX DX

余数 16

除数 16

被除数 32

字操作

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–除法指令(2)

2. IDIV  有符号数除法指令• 格式: IDIV  源• 功能:累加器内容除以源操作数,保存结果。与 D

IV 不同在于是有符号数运算,数的范围不同,字节(字)扩展方法不同。

• 例:   IDIV CX ; (DXAX)÷(CX),商→ AX,余数→ D

X  IDIV BYTE PTR[ BX]     ; (DXAX)÷[BX] ,商→ AX,余数→ DX• 商和余数均为带符号数,余数的符号数与被除数相

同。• 执行除法操作后,所有标志位不确定。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–除法指令(3)3 . AAD 未组合 BCD除法调整指令• 格式: AAD• 功能:两个未组合 BCD 数相除前,对被除数进行十进制除法调整。

• 调整过程: AL←AH* 0AH + AL ; AH←0。• 说明:  ①未组合 BCD除法与加、减、乘不同之处在于:除法调整要

在除法之前调整,而其他调整是在运算后调整。原因是 DIV 要求操作数是二进制数,为此,上述操作被除数变成二进制数,而除数本身就是二进制数,不需调整。相除后二进制商就是未组合 BCD 数。

  ②组合 BCD 数在乘除前,应先转换为未组合 BCD ,因 80X86只提供未组合 BCD乘除调整。

• 例:被除数 AX=00000110 00000010=62 BCD 除数 BL=00001000 = 08 BCD

执行: MOV AX,62H AAD ;00000110×1010 + 00000010 = 00111110→AL ,0→AH DIV BL ;AX/BL=00111110÷00001000 ; 商 07BCD→AL,余数 06BCD→AH

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

算术运算类指令–除法指令(4)4 . CBW 字节转换为字指令• 格式: CBW• 功能:按 AL 的符号位扩展到整个 AH 中。字节除法之前,

用该指令产生双字节被除数。5. CWD 字转换为双字指令• 格式: CWD• 功能:按 AX 的符号位扩展到整个 DX中。进行字除法之前,

用该指令产生双字长的被除数。• 例如:将 24H 扩展为一个字 执行: MOV AL,24H

CBW ; AX=0024H 将 84H扩展为一个字 MOV AL,84H CBW ;AX=FF84H• 扩展规则: 对于 CWB ,当 AL<80H , AH=00H ,否则 AH=FFH 。 对于 CWD,当 AX<8000H 时, DX=0000H ,否则 DX=FFFFH

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令

• 逻辑运算指令可以对 8位或 16 位的寄存器、存储器内容进行按位操作。

• 分三类:一般逻辑运算、移位和循环指令。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十四 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-一般逻辑运算指令(1)

1.逻辑“与”指令• 格式: AND OPRD1,OPRD2• 功能:逻辑“与”操作, B/W• 说明:影响 PF 、 SF和 ZF ,对 AF未定义, CF、 OF清 0 。

AND 指令完成原操作数和目的操作数按位“与”操作。源操作数可以是寄存器、存储器和立即数。目的操作数只能是寄存器和存储器操作数。

• 用途:对目的操作数的某些位清 0 ,即屏蔽某些位,如: AND AL,0FH ;屏蔽 AL 高 4位

AND AX,AX ; CF=OF=0 改变标志位• 例: AND AX,BX ;AX∧BX→AX AND AX,[BX]DATA ;   AND AL,01H  ; AL∧01H→AL JNZ THERE ; D0≠0转 THERE 执行

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-一般逻辑运算指令(2)

2.逻辑“或”指令• 格式: OR OPRD1,OPRD2 • 功能: B/W , OPRD1∨OPRD2→OPRD1• 例: OR AL,20H   ;置 D5 = 1   OR AX,00FFH  ;令 AL=FFH   OR [BX],AL• 用途:保持源操作数的某些位不变,而将其他的

位置“ 1”• 例: OR AL,AL ;不改变 AL值,影响标志位  JPE CONTINUE ;PF=1,AL 中“ 1”的个数为偶数

  OR AL,08H ; 否则进行偶数调整, D7=1CONTINUE:…

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-一般逻辑运算指令(3)

3.逻辑“非”指令• 格式: NOT OPRD• 功能: B/W , OPRD 可以是寄存器、存储器,不能

是立即数• 对标志位无影响• 例: NOT AX ;将 AL内容按位取反→ AL  NOT CL NOT WORD PTR[SI];将 [SI][SI+1] 内容按位取反

4.异或指令• 格式: XOR OPRD1,OPRD2• 功能: B/W ,异或操作• 用途:检测对应位是 1还是 0。常用操作数自身异

或,使操作数清 0

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-一般逻辑运算指令(4)

5.位测试指令• 格式: TEST OPRD1,OPRD2• 功能: B/W ,相当于“与”操作• 例: TEST AL , 01H ; AL∧01H ,若 D1=0, 则 ZF = 1  JZ THERE ; ZF=1 则转移• 用途:

测试 8 位或 16 位操作数中的任何一位 测试结果不改变原操作数的值 对标志寄存器的影响同 AND

• 例:从 4000H开始的单元中存放 32个有符号数,要求统计负数的个数,并将结果存入 BUFFER 单元。

分析:用 SI指向表的首址, CX作计数器, DX作负数个数计数器。然后用 TEST命令对每一个存储单元的符号位进行测试, D7= 1则该数为负数。

程序: XOR DX, DX ;MOV DX,0, 主程序 MOV SI, 4000H MOV CX, 32 AGAIN: MOV AL, [SI] INC SI TEST AL, 80H; 测试符号位 D7 JZ NEXT INC DX NEXT: LOOP AGAIN MOV BUFFER, DX

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十五 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-移位指令( 1 )1.移位指令• 格式: 算术左移 SAL 目标, 计数 ; shift arithmetic left 算术右移 SAR 目标, 计数 ; shift arithmetic right 逻辑左移 SHL 目标, 计数 ; shift logical left 逻辑右移 SHR 目标, 计数 ; shift logical right • 类型:寄存器,存储器。计数可以是 1 ,或是 CL ( CL 先赋值移位次数)。

• 说明: ①右移 /左移相当于减半 /倍增,显然,逻辑右移 /左移对无符号数减半 /倍增;算术右移 /左移对有符号数减半 /倍增。

② 移位后若符号位改变,则 OF = 1 ,若不改变,则 OF = 0 。 ③影响 CF 、 OF 、 PF、 SF和 ZF ,对 AF未定义。

CF SAL 高 ← 低 0

CF SAR 高 → 低

CF SHL 高 ← 低 0

0 CF SHR 高 → 低

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-移位指令( 2 )

• 例: SHL OPRD,1 SHL OPRD,CL ;CL 中是移位次数• 例 : MOV AL,11H ; 11H→AL MOV CL,03 ; 03→CL SHL AL,CL ; AL左移三次 , 相当于 AL×8→

AL SAR AL,1 ; 符号位保持不变 SAR SI,CL ;移位 CL中指定的次数 SAR WORD PTR [BX],1 ;寄存器数移位 1次

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-移位指令( 3 )

• 例:已知 AL= X ,求 X×10 MOV AH, 0 ;AL 扩展为字,无符号数 SAL AX, 1 ;2X MOV BX, AX ; SAL AX, 1 ;4X SAL AX, 1 ;8X ADD AX, BX ;8X+2X • 例:将 AL 中的组合 BCD 码转换为 ASCII 码 MOV AH, AL ; AL 组合 BCD 码 AND AL, 0FH ; OR AL, 30H ;低位 ASCII 码在 AL 中 MOV CL, 4 ; SHR AH, CL ; OR AH, 30H ;高位 ASCII 码在 AH 中, ; AX 中为 2 个 ASCII 码。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

逻辑运算类指令-移位指令( 4 )

2 .循环移位指令• 格式: 循环左移 ROL 目标, 计数 ; rotate left 循环右移 ROR 目标, 计数 ; rotate right 带进位循环左移 RCL 目标, 计数 ; rotate through CF left 带进位循环右移 RCR 目标, 计数 ; rotate through CF right• 类型:寄存器,存储器。计数可以是 1 ,或是 CL ( CL 先赋值移位次数)。

• 说明:只影响 CF 、 OF 。

CF ROL 高 ← 低

CF ROR 高 → 低

CF RCL 高 ← 低

CF RCR 高 → 低

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令

• 8088串操作指令有5种:传送、比较、扫描、装入、存储• 串操作指令具有一些共同特点: 1.源串:DS:SI 2. 目标串:ES:DI 3.串长度:CX 4. 存储器地址修改方向:DF( DF= 0 增量,DF= 1 减量)• 重复操作前缀 1.REP:无条件重复(重复执行指令规定的操作,直到CX=

0) 2.REPE: 相等时重复( ZF = 1,且 CX≠0时重复) 3.REPZ: 结果为零时重复( ZF = 0,且 CX≠0时重复) 4.REPNE: 不相等时重复( ZF = 1,且 CX≠0时重复) 5.REPNZ: 结果不为零时重复( ZF = 0,且 CX≠0时重复)

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串传送指令( 1 )Move String

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串传送指令( 2 )

例:将 2000H : 1200H 地址开始的 100 个字节传送到 6000H : 0000H开始的内存单元中去。

MOV AX , 2000H MOV DS , AX ;设定源串段地址 MOV AX , 6000H MOV ES , AX ;设定目标串段地址 MOV SI , 1200H ;设定源串偏移地址 MOV DI , 0 ;设定目标串偏移地址 MOV CX , 100 ;串长度送 CX CLD ; (DF)=0 ,地址指针按增量方向修改NEXT : REP MOVSB ;每次传送一个字节,并自动修改 ;地址指针及 CX 内容 , ( CX )≠ 0就继

;续传送,直到( CX) =0

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串比较指令( 1 )

Compare String

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串比较指令( 2 )例:比较两个字符串是否相同,并找出其中第一个不

相等字符的地址,将该地址送 BX ,不相等的字符送 AL 。两个字符串的长度均为 200 个字节, M1 为源串首地址, M2为目标串首地址。

LEA SI , M1 ;( SI)←源串首地址 LEA DI , M2 ;( DI)←目标串首地址 MOV CX , 100 ;( CX)←串长度 CLD ;( DF) =0,地址按增量方向修改 REPE CMPSB;若相等则重复比较 AND CX , 0FFH ;检查( CX)是否等于零 JZ STOP ;( CX) =0则转 STOP DEC SI ;否则( SI)- 1,指向不相等单元 MOV BX , SI ;( BX)←不相等单元的地址 MOV AL , [SI] ;( AL)←不相等单元的内容STOP: HLT ;停止

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串扫描指令( 1 )Scan String

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串扫描指令( 2 )

• 例:在一个目的串 string中查找关键字’ A’,找到将该地址存入 POINT ,否则将 0存入 POINT 。

LEA DI , STRING MOV CX , COUNT MOV AL ,’ A’ ; 关键字→ AL

CLD ;DF=0 增量为 1 REPNE SCASB ;CX≠0且 ZF=0重复搜索 JE FOUNT ;相等,找到则转移 MOV DI , 0 JMP DONEFOUNT: DEC DIDONE: MOV POINT , DI HLT程序中使用了 REPNE ,其含义是当 CX≠0且本次搜索没有找到时 (ZF=0) ,继续进行下次搜索。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十六 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串装入指令( 1 )Load String

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串存储指令( 1 )Store String

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串存储指令( 2 )

• 例:利用 STOS 指令,将 MEM1开始的 100 个字单元清 0

LEA DI, MEM1 MOV AX ,0 MOV CX, 100 CLD REP STOSW HLT

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

串操作类指令-串存储指令( 2 )例:利用 LODS 和 STOS 指令,将 MEM1开始的 100 个字节数据传送到 MEM2开始的

区域,两个区域出现的位置不定,数据为 0结束传送。分析:( 1)区域不定,可能重叠,采用条件分支实现增址或减址传送。 ( 2 )传送的数据与 0比较,为 0退出,不宜用 MOVS ,宜采用 LODS 和 STO

S 指令。 LEA SI, MEM1 ;源首址 LEA DI, MEM2 ; 目标首址 MOV CX, 100 ;长度 CMP SI, DI ; JA INC_ADDR ; 源首址 >目标首址 JE EXIT0 STD ; 减址 ADD SI, 99 ADD DI, 99 JMP NEXTINC_ADDR: CLD ; 增址 NEXT: LODSB ;取字节数据送 AL CMP AL, 0 ;与 0比较 JE EXIT0 ;为 0退出 STOSB LOOP NEXT ; CX 不等于 0 循环 EXIT0: HLT

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送类指令

• 也叫控制转移指令• 共有 4 种:转移指令,循环控制指

令,过程调用指令,中断指令

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令( 1)

1 .无条件转移指令 JMP ( jumps )• 本指令无条件转移到指定的内存地址,执行从该地址开始的程序段。无断点,无返回,无堆栈操作。

• 分为:段内直接转移、段内间接转移。  段间直接转移、段间间接转移。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令(2)(1)段内直接转移指令• 格式: JMP LABLE• 功能: LABLE 是一个标号,也称为符号地址,它表示转移的目的

地。转向的地址是 IP的当前值与指令中给定的位移量之和。• 若给定的位移量 8位,称为段内直接短转移,范围是- 128 ~+

127• 若给定的位移量 16位,称为段内直接近转移,范围是- 32768

~ 32767• 转移地址是相对与 IP的当前值的位移量表示的,所以称相对寻

址。• 例: JMP 2500H• JMP SHORT DISP ;短转移( IP)+DISP8→IP

• JMP NEAR DISP ;近转移( IP)+DISP16→IP• MOV AX,BX JMP SHORT NEXT ; NEXT 段内标号 ,短转移

AND CL,OFH ;(IP)+DISP8→IP ;

NEXT: OR CL,7FH 从 AND 指令到 NEXT 之间距离就是相对位移量 JMP 转移的地

址 IP=当前 (IP)+ 位移量

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令(3)( 2)段内间接转移指令• 转移地址为指令指定的 16位寄存器或存储器相

邻两个单元中• 可以采用各种寻址方式• 例: JMP BX ;执行后( IP) =( BX ) JMP WORD PTR[BX+DI]

•23H

•50H

•JMP

23H 50H

3000 DS 1300 BX +1200 DI 32500

地址计算

32500

IP 指针寄存器

加上 WORD PTR, 说明是字

操作

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令(4)

( 3)段间直接转移指令• 格式: JMP FAR PTR NEXT• 功能:将指令操作码后连续两个字作为立即数,

用来修改 CS : IP 内容,然后转移到 CS:IP 指示的地址。

• 例:

•操作码

•80

•00

•12

•00

•操作码

•8000 •1200

CS IP

81200H

JMP 8000H:1200H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令( 5)

( 4)段间间接转移指令• 格式举例: JMP DWORD PTR[BX] • 功能:转向 [BX] 指示的 32位存储器地址,将连

续 4个单元的内容低字送 IP,高字送 CS,程序转向 CS:IP 。

• 例:

3000 DS +) 3000 BX 33000

•80

•10

•20

•0B

•操作码

•8010 •200B

CS IP

33000H

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十七 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令( 6)

2 .条件转移指令• 格式: JCC OPRD• J是转移,转移依据是此前的标志位状态与条件 CC

相符。• 当条件 CC 成立, (IP)+DISP→IP,程序转移至 I

P;• 当条件 CC 不成立, (IP)+2→IP,程序顺序执行。• DISP 是单字节符号偏移地址• 所有条件转移指令都是直接寻址方式的短转移,

即只能在以当前 IP为中心的- 128~+ 127 字节范围内转移。

• 也称该指令为条件相对转移指令。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令( 7)条件转移指令格式

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-转移指令( 8)

• 例:在以 DATA 为首地址的内存中存放 200 个 16 位的带符号数,试找出其中最大和最小的符号数,分别放在 MAX 和 MIN 中。

• 分析:可先取出表中一个数作为标准,分别存放在 MAX 和 MIN中,然后顺序取出其他的数分别与 MAX 和 MIN 进行比较,大于则取代 MAX,小于则取代 MIN ,直到 200 个 16 位数都比较完。

• 关键指令:用 CMP AX,MAX JG LABLE ;有符号数条件转移指令 AX> MAX 则转移标号处。 JL LABLE ; AX< MIN 则转移标号处。

STASRT:LEA SI,DATAMOV CX,200

CLD LODSW MOV MAX,AX MOV MIN,AX DEC CXNEXT: LODSW CMP AX,MAX

JG LARGER CMP AX,MIN JL SMALL JMP GOODLARGER:MOV MAX,AX JMP GOODSMALL: MOV MIN,AXGOOD: LOOP NEXT HLT

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-循环控制(1)

• 指令格式: LOOP   LABLE• LABLE 相当于近地址标号,指令的执行是:

• (CX)-1→CX ,若 (CX)≠0则指令转到目标操作数指定的标号执行,否则退出循环。

•循环次数在 CX中•控制转移的目标地址是以当前 IP的内容为中心的- 128 ~+ 127 的范围内。

•不影响标志位。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-循环控制(2)

• 循环控制指令格式

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-循环控制( 3)

• 例:统计 BUFER起始地址的 100 个单元中负数的个数,将统计结果送 NUM 单元。

程序如下:

XOR BL,BL ; 0→BL MOV CX,100

LEA SI,BUFFER ;数据首址 CLDNEXT:LODSB ;( [SI] )→ AL TEST AL,80H ;符号位= 1?

JZ GOOD ; AL 的 D7=0 则转移 INC BL ; D7=1,负数计数器加 1

GOOD:LOOP MEXT ; CX - 1→CX,CX≠0继续 MOV NUM,BL

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十八 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回(1)

• 在编写程序过程中,将反复使用的模块独立出来,编成子程序,主程序在需要的时候进行调用,执行完子程序又再返回到主程序继续执行。

• 调用指令: CALL• 返回指令: RET• CALL 指令分段内调用和段间调用:

段内调用:子程序名中包含 NEAR 段间调用:子程序名中包含 FAR 以上两种调用可以直接寻址也可间接寻址。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回( 2)

1.段内直接调用• 格式: CALL NEAR PROC• 功能: PROC 是近过程的符号地址执行 CALL 操作: (SP)-2→SP当前指令指针 (IP) →(SP+1) , (SP)调用过程的入口地址送 IP (IP)+disp→IPdisp 是 IP 的下一条指令与被调用过程之间相差的

16位偏移量。

dispHdispLopcode

操作码 偏移量

•栈

•IP 高

•IP 低SPSP+

1

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回( 3)

2 .段内间接调用• 格式: CALL BX • 功能:子程序的入口地址由 BX给出 , (BX) →IP 具体操作 :(SP)-2→SP   (IP) →(SP+1) , (SP) ; IP 入栈   (BX) →IP ;修改 IP值• 格式: CALL WORD PTR [BX]• 功能:子程序的入口地址 [BX][BX+1] 两个单元的

内容。 ((BX+1),(BX)) →(IP)

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回( 4)

3.段间直接调用• 格式: CALL FAR PROC • 功能: PROC 可以是程序名或地址符号, PROC属性是 Far ,表示被调用过程在其他代码段,所以要修改 CS和 IP 的值,

• 例如: CALL 3000H:2100H 执行步骤 :   (SP)-2→SP ; (CS)→ ((SP+1 ) , (SP))  (SP)-2→SP ; (IP)→((SP+1 ) , (SP)) 2100H→IP ; 3000H→CS

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回( 5)

4.段间间接调用指令• 格式: CALL DWORD PTR [BX]• 功能:若 DS=6000H BX=0560H 执行步骤如下:    (SP)-2→SP;(CS)→(SP+1),(SP)    (SP)-2→SP;(IP)→(SP+1),(SP)   [60561H],[60560H]→IP    [60563H],[60562H]→CS• 以上调用指令的地址由 [BX] 为间接地址的相邻 4

个单元给出。前两个单元为偏移地址,后两个单元为段地址

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-过程调用和返回( 6)

• 返回指令 RET 是 CALL 指令的逆操作。• RET n 是调整堆栈指针的返回指令,允许废除一些在执行

CALL 指令以前入栈的参数。• 例:阅读程序,分析堆栈的变化。 MOV SP, 1009H MOV AX, 2000H MOV BX, 4000H PUSH AX PUSH BX CALL NEAR ADDPRG MOV AX, MEM1 HLT;ADDPRG: PUSHF MOV BP, SP MOV AX, [BP+4] ADD AX, [BP+6] MOV MEM1, AX POPF RET 4

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

吉林大学远程教育学院

微机原理及汇编语言 微机原理及汇编语言

主讲人: 赵宏伟 教授 总学时: 80

吉林大学计算机科学与技术学院 第 十九 讲

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-中断和中断返回(1)

• 中断概念:   计算机暂时中止正在运行的程序,转去处理

一组专门的服务程序,完毕又返回到原被中止的程序继续执行,这样过程称为中断。

• 外部中断也叫硬中断:主要用来处理外设和 CPU之间的通讯。

• 内部中断也叫软中断:主要用来处理类似除数为零或中断指令所引起的中断。

• 8086 中断向量区占 1024 个字节,共 256 个向量。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-中断和中断返回(2)• 8086/8088 的中断向量区

IP

CS

IP

CS

IP

CS

IP 中断向量类型 0(除法 )

类型 1(单步 )

类型 2(非屏蔽中断 )

类型 3(断点)

类型 4(溢出 INT0)

00000H

00004H

00008H

0000CH

00010H

CS

IP

:CS

IP

:

:

中断指令及可屏蔽的外部中断

00014H

003FFH

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-中断和中断返回(3)1.内部中断指令 INT n ; n= 0~ 255• 执行该指令功能:

将 FLAG 、 CS 、 IP压入堆栈 根据中断类型号 n×4 到中断向量表中查到中断处理程序的入口地址 IP和 CS 前两个是偏移量赋给 IP,后两个是段地址赋给 CS

CPU 转去处理该中断程序。• 例: INT 3 ;向量表地址: 4×n ( 3)= 0CH  执行步骤:

①( SP)-2→SP , F入栈② 0→( TF ) ,0→(IF)③(SP)-2→SP , CS 内容入栈④查向量表,第二个字内容 F000H→CS⑤(SP)-2→SP , IP 内容入栈⑥查向量表中第一个字内容 0200H→IP

程序转移到 CS:IP=F000:0200处执行

00

F0

0002

0000CH0000DH0000EH0000FH

IP

CS

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

控制传送指令-中断和中断返回(4)

2. IRET(Interrupt return )中断返回指令• 放在中断处理程序的最后一条,它通过堆栈自动

完成断点恢复和堆栈指针的修改,使程序返回到断点处继续执行。

• 操作步骤:①弹栈→ IP,恢复断点指针, SP+2→SP②弹栈→ CS,恢复断点处段地址, SP+2→SP③弹栈→ FLAG ,恢复断点处的 FLAG 寄存器 SP+2→SP

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

处理器控制--标志操作指令

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

处理器控制--外部同步指令

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

处理器控制--其他指令

1 . HLT (Processor Halt )处理器暂停指令• 功能:执行该指令 CPU处于暂停状态,不做任何

操作,不影响标志位。在以下情况才能脱离暂停 : ①在 CPU 的 RESET线上有复位信号。

②在 NMI线上有非屏蔽请求信号。③在 INTR线上有可屏蔽中断请求信号。

2. NOP空操作指令• 功能:此调指令的执行不产生任何的结果,仅消耗 3 个时钟周期的时间,常用来延时。

计算

机科

学与

技术

学院

COMPUTER SCIENCE AND TECHNOLOGYCOMPUTER SCIENCE AND TECHNOLOGY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

CO

MP

UTER

SC

IEN

CE A

ND

TEC

HN

OLO

GY

吉林

大学

请同学们按教材后的习题及时复习

第2章 结束

吉林大学远程教育学院