40
第第第 8088 第第第 第第 () 2006.11.7 第第第第 () 第第第第五 五五 五五五 五 五五 五五五 五五五五五五五 五五五五五五五

第八讲 8088 指令系统(续) 2006.11.7 (星期二)

Embed Size (px)

DESCRIPTION

第八讲 8088 指令系统(续) 2006.11.7 (星期二). 课程内容: 五、控制传送指令 六、处理器控制指令. 如何利用地址线产生脉冲. 两态总线. 三态总线. KKK : M OV AL ,( BX ) CALL DELAY INC BX MOV AL ,( BX ) CALL DELAY JMP KKK. 五.控制传送指令 ( Control transfer instructions ) 控制传送指令概述 控制传送指令包括四种: 转移指令,循环控制指令,过程调用指令,中断指令。. - PowerPoint PPT Presentation

Citation preview

Page 1: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

第八讲 8088 指令系统(续) 2006.11.7 (星期二)

课程内容:五、控制传送指令五、控制传送指令六、处理器控制指令六、处理器控制指令

Page 2: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

如何利用地址线产生脉冲

8284时钟

+5VMN/MX

A19-A16

CLKRESETREADY

AD15-AD0DEN DT/R

BHE

ALE STB

RD

WR

M/ I O

BHE

存储器 I /O接口

数据总线

地址总线

控制总线

8282锁存器(3 )片

OE

RESET

DI R TOE

8286收发器

(2 )片

8086

奇 偶

READY

三态总线

两态总线

KKK : MOV AL ,( BX )

CALL DELAY

INC BX

MOV AL ,( BX )

CALL DELAY

JMP KKK

Page 3: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

五.控制传送指令五.控制传送指令( Control transfer instructions )

控制传送指令概述控制传送指令概述

控制传送指令包括四种:控制传送指令包括四种:

转移指令,循环控制指令,过程调用指令,中断指令。转移指令,循环控制指令,过程调用指令,中断指令。

指令类型指令类型 助记符助记符无条件转移无条件转移 JMPJMP

条件转移条件转移 JE/JZ, JNE/JNZ, JS, JNS, JP/JPE, JNP /JPO,JO, JE/JZ, JNE/JNZ, JS, JNS, JP/JPE, JNP /JPO,JO, JNO, JC, JNC, JB/JNAE, JAE/JNB, JA/JNBE, JNO, JC, JNC, JB/JNAE, JAE/JNB, JA/JNBE, JBE/JNA,JG/JNLE, JGE/JNL, JL/JNGE, JBE/JNA,JG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG ,JCXZJLE/JNG ,JCXZ

循环控制循环控制 LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZLOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ

过程调用过程调用 CALL, RETCALL, RET

中断指令中断指令 INT, INTO, IRETINT, INTO, IRET

Page 4: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(一)、无条件转移指令无条件转移指令1. JMP ( jmp )目标标号

JMP 指令必须指定转移的目标地址(或转向地址)。

转移分成两类:段内或段间转移。

( 1 )段内直接转移:只要改变 IP 寄存器的内容

指在同一段的范围之内进行转移

( IP )←( IP )当前 + 目标标号所代表的地址偏移量

地址偏移量又称为符号地址

目标标号为 8 位,称为短转移。

目标标号为 16 位,称为近转移。

Page 5: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例如:代码段内有一条无条件转移指令在汇编语言中使用符号地址。JMP SHORT NEXT 指令执行过程:NEXT— 在汇编语言中使用符号地址( IP )←( IP )当前 +D8 ( 8 位带符号数)

源程序 :条件转移指令: JMP SHORT next

...

...

...

next: MOV AL,03H

OP

...

...

OP

03H

...

...

3000:1000H

3000:1050H

(IP)当前( NEXT 的值定义为 50H )

(IP)=(IP) 当前 +D8

内存

向前跳, D8 为正数,

往回跳, D8 用补码

JMP SHORT ABC

若 ABC = 0F0H ,则回跳 16字节

Page 6: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

( 2 ) 段内间接转移: ( CS) 不变,只改变 (IP)

格式: JMP OPR

OPR — 为 16 位寄存器、

或存储器(除立即数以外的任何一种寻址方式)

执行操作: ( IP ) ( EA ) 或( IP ) (reg16)

IP 指针的内容根据寄存器或存储器(数据段、附加段、堆栈段)的内容而改变。

指令格式举例:

JMP BX JMP SI

JMP TABLE [BX] ; 操作数已定义为 16 位存储器

JMP ALPHA_WORD ;操作数已定义为 16 位存储器

JMP WORD PTR [BP][DI] ;操作数已定义为 16 位存储器

Page 7: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例: (IP)=5000H, (CS)=3000H , (DS)=1000H, (BX)=1000H

(11000H)=1234H,

JMP BX ; (IP)=1000H, 在当前段内,属于 ;寄存器寻址

JMP WORD PTR [BX] ;(CS)=3000H , (IP)=1234H

在当前段内, (PA)=(16d(DS)+(BX))=(11000H) 为 1234H

将 PA 地址存储器的内容( 1234H )给 IP

;属于寄存器间接寻址。

Page 8: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

( 3 )段间直接转移:要修改 IP 、 CS 寄存器的内容。 转到另一段去执行程序。

转移目标地址 = 新的段地址和偏移地址两部分组成。

格式: JMP FAR PTR OPR ;

OPR— 在汇编语言中使用 符号地址

( 如标号 AKK, 假设定义在另一程序段 CC00 : 0044) 。

转移地址与指令不在同一个段里。

在机器语言中则要指定转向地址的偏移地址和段地址

JMP FAR PTR AKK

执行操作: ( IP )← OPR 所在的段内偏移地址 0044H 。

( CS )← OPR 所在的段的段址 CC00H 。

直接转移通过符号地址加载 IP 和 CS ,间接转移通过存储器内容加载 IP 和 CS .

Page 9: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

( 4 ) 段间间接转移:( CS) 、 (IP) 都改变格式: JMP DWORD PTR OPR

OPR — 存储器操作数(除立即数和寄存器以外的任何一种寻址方式)

执行操作:将 4 字节连续地址分别送给 IP 和 CS

( IP )←( EA ) ( CS )←( EA+2 )例:已知 ( BX ) =1000H ,( SI ) =2000H , (DS)=2000H

(23000H)=2212H, (23002H)=4434H

JMP DWORD PTR [BX][SI]

则: ( BX ) + ( SI ) =3000H

(IP)= ( PA ) =(16d(DS)+(BX)+(SI))=(23000H)=2212H

( CS ) =(PA+2)=4434H

Page 10: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

2. 条件转移指令

指令格式: J cc OPR

操作:根据上一条指令所设置的条件码来判别测试条件转移。

每一种条件转移指令都有它的测试条件。

满足条件时 :

( IP )←( IP )当前 + OPR ( D8 )

使用相对寻址方式,范围 -128~+127 个字节

不满足条件时:( IP )不变,顺序执行下一条指令

(该指令为两字节长度,一字节为指令功能码,一指令为一个字节的相对跳转地址偏移量)

Page 11: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

按转移条件不同,条件转移指令可以分为四大类:① 以单个状态标志作为转移条件助记符 转移条件

助记符助记符 转移条件转移条件 助记符助记符 转移条件转移条件

JZ/JEJZ/JE ZF=1ZF=1 JNZ/JNEJNZ/JNE ZF=0ZF=0

JSJS SF=1SF=1 JNSJNS SF=0SF=0

JOJO OF=1OF=1 JNOJNO OF=0OF=0

JP/JPEJP/JPE PF=1PF=1 JNP/JPOJNP/JPO PF=0PF=0

JCJC CF=1CF=1 JNCJNC CF=0CF=0

② 以 CX 的值为 0 作为转移条件

助记符助记符 转移条件转移条件

JCXZ CX=0

Page 12: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

助记符助记符 转移条件转移条件

JA/JNBE CF ZF=0∨ 高于 / 不低于等于不低于等于

JAE/JNB/JNC CF=0 高于或等于 / 不低于不低于 / 无进位

JB/JNAE/JC CF=1 低于低于 / 不高于等于 / 有进位

JBE/JNA CF ZF=1∨ 低于或等于低于或等于 / 不高于

③ 以两个无符号数比较的结果作为转移条件

④ 以两个带符号数比较的结果作为转移条件

助记符助记符 转移条件转移条件JG/JNLE ( SF OF⊕ )∨ ZF=0 大于 / 不小于等于不小于等于JGE/JNL SF OF=0⊕ 大于或等于 / 不小于不小于JL/JNGE SF OF=1⊕ 小于小于 / 不大于等于

JLE/JNG ( SF OF⊕ )∨ ZF=1 小于或等于小于或等于 / 不大于

Page 13: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

注意几点:注意几点:

① 所有条件转移指令都是相对转移形式,(两字节指令)

范围( -128~+127 )。

当需往一个较远地方进行条件转移时,

选用条件转移转到附近一个单元,

然后,再用无条件转移转到较远的目的地。

② 条件转移指令中,相当一部分指令是在比较完二个数大小后,根据结果而决定是否转移,

③ 条件转移指令不影响标志位

例: 程序段 2000H : 3040H DONE : MOV AX , 05H

  …………

  2000H : 3079H JNE DONE

求 DONE 为何值

Page 14: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(IP)=(IP) 当前

程序段

2000H : 3040H DONE : MOV AX , 05H

…………

2000H : 3079H JNE DONE

执行此指令时,

IP 指针为何OP

05H

...

...

OP

C5H

...

...

2000:3079H

2000:3040H(IP)当前

内存

2000:307BH

DONE

0011000001111011

1111111111000101

0011000001000000

+

307BH

C5H

Page 15: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

条件转移指令应用

例:比较二个数是否相等 如相等做动作 1 否则做动作 2

……

CMP AX , BX

JE action_1JE action_1

Action_2: ……

……

action_1 action_1 : : ……

或 …… CMP AX , BX

JNZ action_2JNZ action_2

action_1: ……

action_2action_2 :: ……

=?AX BXY

action_1action_1 action_2action_2

N

=?AX BXN

action_2action_2 action_1action_1

Y

Page 16: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例:在 M 中有一个首地址为 array 的 N 字数组 ,

要求测试其中正数、 0 及负数的个数 . ( 带符号数判断 )

正数个数放在 : ( DI )中, 0 的个数放在 : ( SI )中,

负数的个数放在 : N- ( DI ) - ( SI )送( AX )

如果没有负数转 skip, 如果有负数转 neg_val

程序: mov cx,N ; N 字数组 mov bx,0

mov di,bxmov si,bx ag

ain: cmp word ptr arrary[bx],0 jle less_or_ag inc di ; 正数个数 jmp short neat

less_or_ag: jl neat inc si ; 0 的个数

neat: add bx,2 dec cx jnz again

mov ax,Nsub ax,disub ax,sijz skip; 没有负数jmp near ptr neg_val; 有负

数skip: ……neg_val: ……

Page 17: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(三) 过程 ( 子程序 ) 调用指令子程序—程序中具有独立功能的部分编写成独立程序模块。子程序(过程)定义格式: 符号名 ( AA ) PROC 类型( FAR/NEAR ) ……

RET ( RETURN ) 符号名( AA ) ENDP

子程序调用和返回指令: CALL AA

过程有两种类型:按过程与调用语句间的位置,过程有两种类型。NEAR 类型:调用指令与过程在同一个段中FAR 类型:调用指令与过程不在同一个段中

CALL 指令和 RET 指令都不影响条件码。

Page 18: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

CALL( Call a procedure) 调用 CALL 调用指令 调用地址由指令给出

调用时:将当前地址入栈 ( CS )。

( IP )。

CALL 调用指令有 4种:

段内直接调用 段间直接调用

段内间接调用 段间间接调用

Page 19: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例 :

CSEG1 SEGMENT

CALL FAR PTR subp ;此处的 CS : IP入栈转 subp

CSEG1 ENDS

CSEG2 SEGMENT

subp PROC FAR

RET

subp ENDP

CSEG2 ENDS

Page 20: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(2) 、 RET ( Reture from procedure)返回 RET返回指令

放在子程序的末尾

使子程序在功能完成后返回调用程序继续执行。

* 为能准确返回 ,返回指令类型与调用指令类型相对应。

RETRET返回指令有返回指令有 44种:种:

段内返回 段间返回

段内带立即数返回 段间带立即数返回

在子程序调用时,返回地址入栈

返回时:将返回地址出栈 ( IP )(段内或段间)。

( CS )(段间)。

Page 21: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

操作数 执行操作符号地址 (SHORT ) (IP) ← (IP) 当前 + 8 位符号地址位移量(段内短跳)符号地址 ( NEAR 属性 ) (IP) ← (IP) 当前 + 16 位符号地址位移量(段内近

跳)reg ( 16 位)或 mem (W 类型 )

(IP) ← ( reg ) 或 (IP) ← (mem) (段内间接跳)

符号地址 ( FAR 属性 ) (IP) ← 符号地址的偏值 (段间直接跳)

(CS) ← 符号地址的段值mem ( DW 类型 ) (IP) ← ( mem ), (CS) ← (mem+2 ) (段内短跳)

◢ 当前 IP 的值为控制转移指令下一条指令的偏移地址。

◢ 位移量 = 符号地址的偏移量 - 当前 IP 的值。

◢ 符号地址(目标地址) = 当前 IP 的值 + 位移量

(3) (3) 、小结 :、小结 :

指令格式: JMP 操作数

Page 22: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

转移方式:转移方式:由 CS 是否变化、以及操作数类型决定情况如下表

转移方式 CS 操作数 跳转范围段内直接短 方 式 不变 符号地址 (SHOR

T )-128 ~ 127 即 0~FF

H

段内直接近 方 式 不变 符号地址 (NEAR 属性 )

一个段内 0~FFFFH

段 内间接方式 不变 Reg mem (W 类型 ) 一个段内 0~FFFFH

段 间直接方式 变 符号地址 (FAR 属性 )

整个内存 0~FFFFFH

段 间间接方式 变 mem(DW 类型 ) 整个内存 0~FFFFFH

Page 23: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

各控制转移指令允许使用的转移方式

转移方式 无条件转移JMP

条件转移Jcc

循环转移LOOPxx

子程调用CALL

段内直接短 方 式 √ √ √ ×

段内直接近 方 式 √ × × √

段 内间接方式 √ × × √

段 间 直接方式 √ × × √

段 间间接 √ × × √

Page 24: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例 : JMP again (√)

JMP BX (√)

JMP WORD PTR [BX] (√)

JMP DWORD PTR (√)

JZ AX ( 不能是字, AX) (×)

JNZ next (?)

(若 next 的位移量超出 -128~127)

Page 25: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(四)循环控制指令格式  : LOOPxx  符号地址

执行 操作 :

① ( CX ) ← ( CX ) - 1 此操作不影响标志

② 检查转移条件 xx ,满足转向目标地址去执行 ;

   不满足执行 LOOPxx 后一条指令

转移方式 只允许段内直接短方式,跳转范围 -128~127

助记符 转移条件 不转移条件LOOP CX≠0 CX=0

LOOPZ CX≠0且 ZF=1 (相等) CX=0 或 ZF=0 (不等)

LOOPNZ CX≠0且 ZF=0 (不等) CX=0 或 ZF=1 (相等)

Page 26: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

与条件转移指令不同的是:循环指令隐含 ( CX ) 减1操作。

例:用循环指令将 BL 寄存器的内容按二进制形式显示出来

学习: LOOP 指令MOV CX , 8

next: ROL BL , 1

MOV DL , BL

AND DL , 0000 0001B

ADD DL , 0011 0000B

MOV AH , 2

INT 21H

DEC CX

JNZ next

……

LOOP next

Page 27: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

循环指令说明:• LOOP退出循环条件是( CX ) =0

• LOOPZ 和 LOOPNZ提供了提前结束循环的可能 ,

不一定要等到 (CX)=0才退出循环。

▲ 在串中查找字符,查到了,就可退出,

     可用 LOOPNZ ,不相等时继续查找。

▲比较两串时,当有字符不等,就可退出,说明两字符串不等。

     可用 LOOPZ ,当相等时继续比较。

▲执行完 LOOPNZ 或 LOOPZ 后,根据 ZF 标志的值判断结果

对查找字符, ZF=1,说明找到;否则没有找到。

对串比较, ZF=1, 说明两串相等;否则不等。

Page 28: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例: 在 string 字符串中查找空格字符,串长度为 N 。

用条件转移: JZ MOV CX , N MOV AX, SEG string MOV DS, AX LEA BX , string MOV AL , 20H next : CMP AL , [BX]

JZ find INC BX DEC CX JNZ next

未找到处理 ……

Find: 找到处理 ……

修改偏址 BX

Y

N

AL 关键字

CX 串长度N

DS : BX 串首址

判 [BX] 是关键字?

(CX) (CX)-1

找到处理未找到处理

(CX) = 0 ?Y

N

结束出口

Page 29: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

MOV CX , 28H

MOV SI , 0FFFFH

NEXT1 : INC SI

CMP BYTE PTR [SI] , 0

LOOPZ NEXT1 ;当 Z=1 、( CX )≠ 0 循环;

当 Z=0 ,或( CX ) =0 结束循环。

JNZ OKK ;当找到非零元素转 OKK 。

CALL DISPLAY1 ;当找不到非零元素转 DISPLAY1

……OKK : CALL DISPLAY2

……

用 LOOPZ 和 LOOPNZ 指令提供提前结束循环的可能性。有时需要字符串中查找一个字符,找到后可提前结束循环,

用 LOOPZ 、 LOOPNZ 来处理。

例: 40 个元素构成的数组,找出第一个非零元素。DISPLAY1 ……

RETDISPLAY2 ……

RET

指令 JMP 、 CALL 、 Jcc 、 LOOPxx 本身对标志无影响。

Page 30: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

4 、中断指令 中断( Interrupt ):

有时当系统运行或程序运行期间遇到某些特殊情况,

需要计算机自动执行一组专门的例行程序来进行处理。

中断例行程序(或中断子程序)( Interrupt routine ) :所执行的这组程序就称为中断子程序。

种类:

中断分为内部(软)中断和外部(硬)中断两种。

内部中断—如除法运算中除数为 0 、中断指令引起的中断。

外部中断—处理 I/O 设备与 CPU 之间的通信。

Page 31: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

CPU 响应一次中断自动完成三件事情:

( PSW )入栈 — 保护现场,

( CS ),( IP )保存入栈 — 保留断点,

转中断例行程序去执行。 中断返回时:

恢复( IP )、( CS )及( PSW )

中断向量:中断例行程序入口地址。

IBM-PC 中,存储器的最底地址 00000H——003FFH 为中断向量区, 存放 256 种类型中断例行程序入口地址,每个中断向量占 4 个单元。

中断指定类型号 N × 4——取得指定类型的中断向量地址。

Page 32: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

例:中断类型 9 , 9 ×× 4=36

00024H——00027H 单元中放中断向量。

IBM-PC 机中为每个类型规定了一种功能。

中断类型 功能类型 0 除数为 0 中断例行程序

类型 1 单步

类型 2 非屏蔽中断, NMI类型 3 设置断点

类型 4 溢出处理中断, INTO 指令

类型 10 显示设备中断

类型 20 程序结束中断

类型 21 DOS系统功能调用功能程序

* 除非特别注明,类型号是以 16 进制形式表示的。

Page 33: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

(1). 介绍几条指令: INT n , IRET

格式: INT n ; n—常数或表达式, n=0—255

或 INT

执行操作:

(SP)←(SP)-2 , (SP)) ←(PSW)

(SP)←(SP)-2 , (SP)) ← (CS)

(SP)←(SP)-2 ,← (IP)

(IP) ←(N×4)

(CS) ←(N×4+2)

清除 IF 、 TF ,避免进入中断以后不被外面其它中断所打断

及进入中断以后按单步执行。

Page 34: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

类型 0~3 的中断称为内部中断。

类型 0 :指令系统没有 INT0这条指令

除数为 0 中断

除数为 0 :它既不是外部中断 也不是软件中断。

是由 CPU自身产生的,所以无对应中断指令。

有符号数进行除法所得的商超出规定范围

有符号数进行除法运算,所得的商超出规定范围,

CPU自动产生类型为 0 的中断,转入响应的中断处理程序。

Page 35: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

内存内存 00 :: 0000H~0:03FFH0000H~0:03FFH 区域中,构成中断向量表,存放中断处理程序入口地区域中,构成中断向量表,存放中断处理程序入口地址。址。每每 44 个单元对应个单元对应 11 个中断源。关系如下表:个中断源。关系如下表:

中断处理程序入口地址的地址 类型

00000H~00001H 类型 0(IP)

00002H~00003H 类型 0(CS)

00004H~00005H 类型 1(IP)

00006H~00007H 类型 1(CS)

00008H~00009H 类型 2(IP)

0000AH~0000BH 类型 2(CS)

0000CH~0000DH 类型 3(IP)

0000EH~0000FH 类型 3(CS)

00010H~00011H 类型 4(IP)

00012H~00013H 类型 4(CS)

…… ……

003FCH~003FDH 类型 255(IP)

003FEH~003FFH 类型 255(CS)

Page 36: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

∴ INTO跟在有符号数 + 、 - 后面:

* 这条指令可以写在一条算术指令后面。

若产生溢出, OF=1 ,则启动中断过程,不进行任何操作。

(2) IRET——从中断返回指令( Interrupt return ) 所有中断过程(服务程序)不管是硬还是软,最后一条指令一定是:

IRET退出中断过程,返回中断时断点。

格式: IRET

执行操作:执行操作: (IP)←((SP)+1,(SP)) , (SP) ←(SP)+2

(CS)←((SP)+1,(SP)) , (SP) ←(SP)+2

( PSW)←((SP)+1,(SP)) , (SP) ←(SP)+2

Page 37: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

六、处理器控制指令

(一)标志处理指令

1 、 CLC ( Clear carry flag ) 清 CF 标志2 、 STC ( Set carry flag ) 置 CF 标志3 、 CMC ( Complement carry flag ) 对 CF 求反4 、 CLD ( Clear direction flag ) 清 DF 标志5 、 STD ( Set direction flag ) 置 DF 标志6 、 CLI ( Clear interrupt flag ) 清 IF 标志7 、 STI ( Set interrupt enable flag ) 置 IF 标志 (二)其他处理机控制指令

1 、 NOP ( No operation ) 空操作2 、 HLT ( Halt ) CPU暂停状态3 、 WAIT ( Wait while pin not asserted ) CPU 等待状态4 、 ESC ( Escape ) 交权5 、 LOCK ( Lock bus ) 总线锁定

TEST

Page 38: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

标志处理指令

▲ 设置和清除标志的指令,只影响指令指定的标志。

指令格式 执行操作CLC CF=0

STC CF=1

CLM CF ←

CLD DF=0

STD DF=1

CLI IF=0

STI IF=1

CF

Page 39: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

子程序设计寄存器的保存与恢复

FFF PROGPUSH BXMOV BX, AXSHL BX, 1ADD AX, BXPOP BXRET

SUB ENDP

AX 内容乘以11H 的积

CALL 子程序调用指令

CALL FFF

RET

Page 40: 第八讲   8088 指令系统(续) 2006.11.7 (星期二)

作业:

• P119( 1 ) 3.42 ,( 2 ) 3.43 ,( 3 ) 3.47 , 3.83 ,

( 4 )程序段 2000H : 3062H JNE DONE

  ………… 2000H : 3090H DONE : MOV AX ,

05H 执行后 DONE 为何值