92
第第第 第第第第第第第第第§ 第第第第第第第第第第第第 第第第第 一、 第第第第第第第第第第第第第第第第第第 一。 1 第第第第第 第第第第第第第第第第第第第第第第第第2 第第第第第 第第第第第第第第第第第第第第第第第第第第第第 . 第第第第 第第第第第第第第第第第第第第第第 ,。

第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

  • Upload
    rosa

  • View
    198

  • Download
    0

Embed Size (px)

DESCRIPTION

第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段 操作码字段表明指令执行何种性质的操作。 2 、操作数字段 操作数字段是指明指令执行的操作所需要的操作数 . 该字段中,可以是操作数本身或是操作数地址。. 二、操作数类型 操作数有以下三种类型:立即数操作数、寄存器操 作数和存储器操作数。 1 、立即数操作数 - PowerPoint PPT Presentation

Citation preview

Page 1: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

第三章 微型计算机的指令系统

§ 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段 操作码字段表明指令执行何种性质的操作。 2 、操作数字段 操作数字段是指明指令执行的操作所需要的操作数 . 该字段中,可以是操作数本身或是操作数地址。

Page 2: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

二、操作数类型 操作数有以下三种类型:立即数操作数、寄存器操 作

数和存储器操作数。 1 、立即数操作数

立即数只能作为源操作数,而不能作为目标操作 数。立即数可以是 8 位和 16 位带符号数或者无符号 数,并只能是整数,不能是小数。

2 、寄存器操作数 寄存器操作数可以存放于 CPU 内部寄存器中,即通 用

寄存器、地址指针寄存器、变址寄存器、段寄存 器。所有的通用寄存器和地址指针寄存器既可以用 作源操作数,又可以用作目标操作数。

3 、存储器操作数 存储器操作数的数据可能是 8 位、 16 位和 32 位的二

进 制数。在指令中,存储器操作数可以分别作为源操 作数和目标操作数,但是不允许二者同时都为存储 器操作数。

Page 3: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

§2 8086 的寻址方式 一、立即寻址 操作数包含在指令中 , 此操作数又称为立即数, ( 立

即数只能作源操作数 ) 立即数可为 8 位,也可为 16 位,它用来给寄存器存贮器赋初值。

二、寄存器寻址 操作数在某一寄存器中。一条指令中,可以对源

操作数采用寄存器寻址,也可对目的操作数采用 寄存器寻址,还可两者都用寄存器寻址。

寄存器可为: AX,BX,CX,DX,SI,DI,SP,BP AH,AL,BH,BL,CH,CL,DH,DL 。

Page 4: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

三、直接寻址 操作数的地址包含在指令中。

( 注意:此地址为 16 位偏移地址 ) 通常操作数一般在数据段区域中,如果要对其他段

寄存器所指出的存贮区进行寻址 ( 所谓段超越), 则在本条指令中,须用前缀指出段寄存器名。

Page 5: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

四、寄存器间接寻址 操作数的地址在某寄存器中,

这些寄存器可以为: BX,BP,SI,DI 之一。 有效地址: EA=[BX 或 BP 或 SI 或 DI] 注:如果指令前没有用前缀指明具体的段寄存器, � 则

寻址时默认为 DS/SS 。 采用寄存器间址允许在指令中指定一个位移量 (8位 或 16 位 ) 。其有效地址 EA 为寄存器内容加上此位移 量。 ( 称寄存器相对寻址 ) 有效地址: EA=[ ( BX 或 BP 或 SI 或 DI )+位移量 ( 带符号数 )]

Page 6: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

1、数据段基址寻址 用 BX 寄存器进行间接寻址 。 2、堆栈段基址寻址 用 BP 寄存器进行间接寻址。 3、变址寻址 用 SI,DI 寄存器进行间接寻址。 4、基址加变址寻址 用 BX 、 BP 和 SI 、 DI 寄存器组合起来进行间接寻址。 有效地址 EA=[ ( BX 或 BP )+( SI 或 DI ) ] 注:只要用上 BP 寄存器,那么默认的段寄存器就是 SS, 在其他情况,则为 DS 。否则应用前缀指出相应段 寄存器名。

Page 7: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

附:几种常见的书写形式 MOV AX,VALUE → MOV AX,[VALUE] (VALUE 为符号地址 ) MOV AX,ES:VALUE → MOV AX,ES:[VALUE] MOV AX,COUNT[SI]→ MOV AX,[COUNT+SI] (COUNT 为位移量的符号地址 ) MOV AX,[BX][DI] → MOV AX,[BX+DI] MOV AX,MASK[BX][SI] → MOV AX,MASK[BX+SI] → MOV AX,[MASK+BX+SI]

Page 8: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

5、例 1 : DS=2000H, ES=2100H, SS=1500H, SI=00A0H, BX=0100H, BP=0010H ,

VAL=0050H , 请指出下列的源操作数字段是什么寻址方式?

它的物理地址是多少? A、 MOV AX,OABH B 、 MOV AX,BX C、 MOV AX,[VAL+100H] D 、 MOV AX,[BX] E 、 MOV AX,ES:[BX] F 、 MOV AX,[BP] G 、 MOV AX,[SI] H 、 MOV AX,[VAL+BX+SI]

Page 9: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

例2:根据以下要求写出相应的汇编语言指令 A、把数 OB5H 与 (AL) 相加,结果送回 AL 中。 B、把 BX 和 DX 内容相加,结果存入 DX 中。 C、用位移量 0524H 的直接寻址方式把存贮器中一个

字 与数 2A59 相加 , 结果送回存贮单元中。 D、用 BX 和 SI 的基址变址寻址方式 , 把存贮器中一个

字 节与 AL 内容相加 , 结果存入 AL 中。 E、用 BX 和位移量 OB2H 的寄存器相对寻址方式把存

贮 器中一个字和 CX 相加,结果存入内存单元中。

Page 10: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

§ 3 8086/8088CPU 指令系统

一、数据传送指令 1、通用数据传送指令 <1> MOV传送指令 格式: MOV DST, SRC DST :目的操作 操作: DST SRC SRC :源操 A、立即数到寄存器存贮器 reg , data 注:不包括段寄 mem , data

Page 11: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、从寄存器到寄存器 reg , reg 从存贮器到寄存器 mem , reg 从寄存器到存贮器 reg , mem 注:不包括段寄

Page 12: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C、从存贮器/寄存器到段寄存器 (mem/reg,segreg)

注 : 不能往 CS 中传送数据 .

D、从段寄存器到存贮器/寄存器 (segreg,mem/reg)

Page 13: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

注: 1, 不影响标志

2, 不允许两操作数都使用存储器 3, 不允许往 CS 中送数

4,8 位传送/ 16 位传送决定于指令中寄存器及立 即数形式

5,凡给 SS 赋值时,系统会自动禁止中断,等下 条指令执行完后才会恢复

E 、例:一批数的传送

Page 14: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

<2> PUSH 进栈与 POP 出栈指令 A、堆栈

堆栈是以“后进先出”方式工作的一个存贮区。它存在于堆栈段中 . 堆栈在计算机工作中起着重要作

用, 它在子程序结构的程序以及中断程序中是不可少的。堆栈指针寄存器 SP 用来指示堆栈在那里。

它始 终指向当前堆栈的栈顶。 注:在 8086 中堆栈的存取是以字为单位进行的 B、 PUSH/POP 指令格式与操作 格式: PUSH SRC 操作: 1,SP-1 SP 2,高字节 (SP) 3,SP-1 SP 4,低字节 (SP) 格式: POP DST 操作: 1,低字节 弹出 2,SP+1 SP 3,高字节 弹出 4,SP+1 SP

Page 15: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 、注: PUSH/POP 指令可使用除立即数以外的所有寻址 方式。指令也可以指定段寄为操作数,但 POP 指

令不允许用 CS 寄存器。 所有标志不受影响。 D 、例 1 :两寄存器内容交换 分析下面程序段: 设 SP=2000H,SS=1000H ST : PUSH BX PUSH CX POP BX POP CX

Page 16: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

例 2 :设BX=2A0CH, CX=A530H, SS=2000H 程序执行后, BX= AX= CX= SP= ST : MOV SP, 1000H

PUSH BX PUSH CX MOV AX, 62CEH ADD AX, SP POP BX HLT

例 3 :分析下面程序: ST : MOV CX , 5 POP CX L1 : PUSH CX DEC CX MOV CX , 10 JNZ L1

L2 : DEC CX HLT JNZ L2

Page 17: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

<3> XCHG 指令 (交换 ) A、 XCHG 指令格式与操作 XCHG OPR1, OPR2 OPR1←→OPR2 B、 XCHG 指令可以在寄存器之间或寄存器与存贮器之

间交换信息。 C 、例

注:不允许使用段寄。

该指令不影响标志位。

Page 18: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2、累加器专用传送指令 <1> IN/OUT输入输出指令 A、指令的格式与操作 长格式: IN AL, PORT AL ←(PORT) IN AX, PORT AX ← (PORT+1,PORT) OUT PORT,AL (PORT)← AL OUT PORT,AX (PORT+1,PORT)← AX 短格式: IN AL,DX AL ← (DX) IN AX,DX AX ←( DX+1,DX ) OUT DX,AL (DX )← AL OUT DX,AX (DX+1,DX)←AX 注: I/O 指令中只能用 AX/AL 与 DX 和 8 位的端口地址。

Page 19: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、 用长格式时可以在指令中直接指定端口号 , 但只限 于外设的前 256 个端口,当端口号≥ 256 时,只能使 用短格式, ( 间接 ) ,必须注意端口号即为外设地 址,它与段寄无关。 I/O 指令不影响标志位。

C 、 例 1 : D 、 例 2 :

OUT DX, AL

Page 20: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

<2> XLAT换码指令 A、指令格式与操作 XLAT OPR 或 XLAT AL ←[ BX + AL ] B、注:使用 XLAT 指令,应先建立一个表格。

表格首址存入 BX 中,需转换的代码应是相对于 表格首址的位移量(即项号)也提前放入 AL 中。

表格的内容(即项值)则是所要换取的代码它将存入 AL 中。

指令格式中的 OPR为表格首址(符号地址)。 所有标志不受影响。

Page 21: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C、例 设: BX=0040H, AL=02H , DS=F000H

项号 项值

表格: 0 (F0040H)=11H ( 0040H 为表格首址)

1 (F0041H)=22H

2 (F0042H)=33H

3 (F0043H)=44H

4 (F0044H)=55H

5 (F0045H)=66H

则:执行 XLAT后, AL=

Page 22: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

3、地址传送指令 A、指令格式与操作 偏移地址送寄存器 LEA REG REG SRC

把源操作数的偏移地址送寄存器。 指针送寄存器和 DS LDS REG,SRC REG (SRC) DS (SRC+2)

把源操作数提供的 32 位数送寄存器与段寄 DS 指针送寄存器和 ES LES REG,SRC REG (SRC) ES (SRC+2) 把源操作数提供的 32 位数送寄存器与段寄 ES 注:所有标志不受影响 REG必须为 16 位通用寄存器 SRC 为内存单元地址。

Page 23: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B、例LEA BX,[BX+SI]

执行前: BX=0400H SI=003CH执行后: BX=

LDS SI,[10H] 执行前: DS=C000H, (C0010H)=0180H

(0012H)=2000H执行后: SI= DS=

LES DI,[BX] 执行前: DS=B000H, BX=080AH

(B080AH)=05AEH, (B080CH)=4000H

执行后: DI= ES=

Page 24: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

4、标志寄存器传送指令 标志送 AH : LAHF AH← PSW的低字节 AH 送标寄: SAHF PSW的低字节← AH 标志进栈: PUSHF SP←SP-2;

( SP+1,SP )← PSW 标志出栈: POPF PSW←( SP+1,SP )

SP← SP+2 PSW 15 8 7 0

AH

/ / / / OF DF IF TF SF ZF / AF / PF / CF

/ / /

Page 25: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

三、算术运算指令 1、加法指令

加: ADD DST,SRC DST←SRC+DST

reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data

带进位加: ADC DST,SRC (DST)← (SRC)+(DST)+CF

reg,reg; reg,mem; mem,reg reg,data; mem,data; ac,data 加 1 : INC OPR (OPR)←─ (OPR)+1 (reg;mem)

注: INC 指令不影响 CF 标志

Page 26: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2、减法指令 减: SUB DST,SRC

DST←DST-SRC 带借位减: SBB DST,SRC

OST←DST-SRC-CF 减1: DEC OPR OPR←OPR-1 求

补: NEG OPR OPR←0-DPR 比较: CMP OPR1,OPR2 OPR1 - OPR2

注: CMP 指令执行减操作,但它不保存结果 , 只是

根据操作结果设置条件标志位。 CMP 指令后 往往跟着一条条件快移指令,实现程序分支。 DEC 指令不影响 CF 标志。 �

Page 27: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

3、乘法指令 格式:无符号数乘 MUL SRC (reg/mem) 带符号数乘 IMVL SRC 操作:字节操作 AL*(SRC) AX 字操作 AX*(SRC) DX,AX 注:执行前 ,必须将被乘数送入 AX/AL 中。 MUL :当积的高位为 0 ,则 CF=0,OF=0 否则均为1 。 IMVL :当积的高一半是低一半的符号扩展则

CF=OF=0 ,否则为 1 。 例:设 AL=04H BH=02H AH=E5H 则 执行 MUL BH 后 AX=

Page 28: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

4、除法指令 格式:无符号数除 DIV SRC (reg/mem) 带符号数除 IDIV SRC 操作:字节操作: AX÷(SRC)→商 AL ,余 AH 字操作: DX,AX÷(SRC)→商 AX ,余 DX 注: IDIV 、 DIV 执行前 ,必须将被除数送入指定寄存器

AX,DX 中。 用除法指令时,必须注意它要求商为 8 位 ( 字节 )/

16 位 ( 字 ) ,如果被除数的高 8 位 ( 字节 ) 或 16位 ( 字 )大于除数的绝对值,商就会产生溢出,此时 会作除数为 0 的情况来处理。 例:设 AX=0009H BH=02H 则 执行 DIV BH 后 AL= AH=

Page 29: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

D 、字节转换为字指令: 格式: CBW 操作: AL 的内容符号扩展到 AH 。

字转换为双字指令: 格式: CWD 操作: AX 的内容符号扩展到 DX 。

注: CBW,CWD 指令不影响条件码。 例:设有两个 16 位数存于 AX,BX 中,求 Z=AX/BX

5、十进制调整指令 A、压缩的 BCD 码:用 4 位 2 进制表示一个十进制数位。 如 502D─→0101,0000,0010B 非压缩的 BCD 码:以 8 位为一组表示一个十进制数

位,其中低 4 位为 BCD 码,高 4 位没 有意义

如: 502D─→00110101,00110000,0011,0010B 。 注: ASCII 码是一种非压缩的 BCD 码。

Page 30: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B、压缩的 BCD 码调正指令 DAA : 条件:用 ADD 或 ADC将两个压缩 BCD码 相加,和存于 AL 中。 操作:将和 AL调正到压缩的 BCD格式存入 AL 中。

DAS : 条件:用 SUB 或 SBB将两个压缩 BCD码 相减,差存于 AL 中。 操作:将 AL 中的差调正到压缩的 BCD格

式存入 AL 中。 注: DAA/DAS 对 OF 标志无定义对其他标志有影响。

Page 31: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

例 1 : 设: AL=28H, BL=68H

执行: ADD AL,BL

DAA

指令后: AL= CF= AF=

例 2 : 设: AL=86H, BL=07H

执行: SUB AL,BL

DAS

指令后: AL= CF= AF=

Page 32: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C、非压缩的 BCD 码调整指令 AAA :加法的 ASCII调正指令 条件:用 ADD/ADC将 2 个非压缩 BCD 码相加,

和存于 AL 中。 操作:将 AL 中和调正到非压缩的 BCD格式。将 调正产生的进位值加到 AH 中。 AAS :减法的 ASCII调正指令 条件:用 SUB/SBB将 2 个非压缩 BCD 码相减,

差存于 AL 中。 操作:将 AL 中差调正到非压缩 BCD格式,其调 正产生的借位从 AH 中减去。

Page 33: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

AAM :乘法的 ASCII调正指令。 ( 对结果调正 ) 条件: 用 MUL将 2 个非压缩 BCD 码相乘 ( 要求

高 4 位为 0) , 结果存于 AL 中。 操作: 将 AL 内容除以 OAH ,其商存于 AH 中,

余 数存于 AL 中。 AAD :除法的 ASCII调整指令 ( 对被除数必须进行调整 ) 操作: AH*10+AL→AL; 0→AH 将 AX 中的被除数 (非压缩 BCD 码,高 4 位为 0)调 整成二进制数 例: a、设: AX=0505H , BL=09H 执行: ADD AL,BL AAA 后: AX= b、设: AL=07H, BL=09H 执行: MUL AL,BL AAM 后: AH= AL= c、设: AX=0604H 执行: AAD 后: AX=

Page 34: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

6 、编程举例: A 、试编一程序计算一批数中, 0 的个数。

Page 35: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、设有 100 个无符号字节数存于以 TAB 为首址的单元

中,试将其最大值存于 AL 中 .最小值存于 BL 中。

Page 36: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 、 试分析下面程序功能: ST : LEA SI,DATA1 LEA DI,DATA2 MOV CX,5 CLC L1 : MOV AL,[SI] MOV BL,[DI] ADC AL, BL DAA MOV [SI],AL INC SI INC DI LOOP L1 MOV AL, 0 ADC AL, 0 MOV [SI], AL HLT

Page 37: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

四、逻辑运算和移位指令 1、逻辑运算指令 (按位操作 ) 逻辑与: AND DST,SRC DST← DST∧SRC reg,reg reg,mem mem,reg

reg,data mem,data 逻辑或: OR DST,SRC DST← DST∨URC 逻辑非: NOT OPR OPR ← OPR 异或: XOR DST,SRC DST←DST V SRC 测试: TEST OPR1,OPR2 OPR1∧OPR2 注: NOT 不影响标志位 , 其余 4 条将使 CF=OF=0 , AF 无 定义 ,对 SF,ZF,PF 有影响。 逻辑运算指令对处理操作数的某些位很有用。它可

屏蔽某些位,可使某些位置“1”,可测试某些位等 .

Page 38: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2、移位指令 逻辑左移: SHL OPR,CNT 逻辑右移: SHR OPR,CNT 算术左移: SAL OPR,CNT

算术右移: SAR OPR,CNT

Page 39: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

循环左移: ROL OPR,CNT

循环右移: ROR OPR,CNT

带进位循环左移: RCL OPR,CNT

带进位循环右移: RCR OPR,CNT

其中 : OPR: reg;mem CNT : 1 或 CL

Page 40: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

注:移位指令: OF 位当 CNT=1 有效,在移位后 D7值发 生变化时 1→OF, 否则为 o。

它影响 SF,ZF,PF, 对 AF 无定义。 循环指令:不影响除 OF,CF 以外的其它条件标志。

OF影响同移位指令 例: a、设: SI=1450H 则:执行 MOV CL,2 SHL SI,CL 后 , SI= CF= b、计算 BX*6 c、计算 AX/256, 结果存于 AL 中

Page 41: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

五、串处理指令 串处理指令是指用一条指令实现对一串字符或数据

的操作。 8086 的串处理指令有如下几个特点: a、通过加重复前缀 (REP REPNZ等 )实现串操作。 b、可以对字节/字串进行操作 c、用 SI 对源操作数进行间接寻址 ( 在 DS 段中 ), 用 DI对 目的操作数进行间接寻址 ( 在 ES 段中 ) 。 d、串操作时,地址的修改与方向标志 DF 有关,当 DF=1 时, SI/DI 作自动减量修改,当 DF=0 时, SI/DI作 自动增量修改。 e、在执行串操作指令过程中, IP保持指向重复前缀

( 前缀本身也是一条指令 ) 的偏移地址。

Page 42: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

1、字符串传送指令与重复前缀指令 A、 REP CX←CX-1,当 CX=0退出重复 , 否则 执行其后的串指令。 B、 MOVSB (DI)←─(SI) MOVSW SI←SI±1 或 2

DI←DI±1 或 2 。 ( DF=0 为 "+"; DF=1 为 "-") 注: MOVSB( 字节 )/MOVSW( 字 ) 指令前通常加 REP,

该指令不影响 F 标志。

Page 43: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C、例:一批数的传送 ( 1 )

Page 44: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

( 2 )

( 3 )

Page 45: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2、取字符串指令 LODSB AC←(SI) LODSW SI←SI±1减 2 ( DF=0 为 "+"; DF=1为 "-") 注:此指令前,通常不加 REP ,它不影响 F 标志。 例:数 0 的个数存于 CH 中

Page 46: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

3、存字符串指令 STOSB (DI)←AC STOSW DI←DI±1 或 2. DF=0为 "+"; DF=1 为 "-" 注:该指令前加 REP后,可以使一批内存单元,填满

相同的数。 该指令不影响 F 标志。 例:使 0400H开始的 256 个单元清 0

Page 47: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

4、 字符串比较指令与相等/不相等,为 0/不为 0 ,重 复前缀指令 A、 REPE CX←CX-1,当 CX=0 或 ZF=0 REPZ 退出重复 , 否则执行其后的串指令 B、 REPNE CX←CX-1,当 CX=0 或 ZF=1 REPNZ 退出重复 , 否则执行其后的串指令

C、 CMPSB (SI)- (DI) CMPSW SI←SI±1 或 2;

DI←DI±1 或 2 。 DF=0 为“ +”; DF=1 为“ -”

Page 48: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

D、例:判一批数是否与要求的数相同

Page 49: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

5、字符串检索指令 按累加器中给出的字节/字对 ES:DI 所指的字节/字 串进行检索 ,建立相应标志。 A、 SCASB AC -(DI) SCASW DI←DI±1 或±2 B、例: 100 个字符存于以 TAB 为首址单元中,试检索 A 字符的位置 , 位置值存于 DX 中 ,若无 A 字使 A=-1

Page 50: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

六、控制转移指令 1、转移指令 <1> 段内与段间:段内转移 : 在同一段内进行的转移

段间转移 : 段与段之间进行的转移 <2> 转移指令的寻址方式 A 、段内直接寻址 它是一种相对寻址 , 其转移的有效地址为 IP� 的当 前值与位移量 8 位 /16 位 ( 带符号数 ) 之和,其中条 件转移指令只能采用这种寻址方式,位移量为 8 位 . B 、段内间接寻址: ( 只适用于无条件转移指令 ) 段内间接寻址的转移有效地址为寄存器的内容或

存贮单元的内容。它可以用数据寻址方式中除立即数以外的任一种寻址方式取得。

Page 51: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 、段间直接寻址: ( 只适用无条件转移指令 ) 段间直接寻址的转移地址的段值和偏移量直接由指

令给出。产生转移时 , 其段值送 CS, 偏移量送 IP 。 D 、段间间接寻址: ( 只适用无条件转移指令 ) 段间间接寻址用存贮器中 2� 个相继字的内容取代 IP

与 CS 内容,以达到段间转移之目的。其中相继字的 存贮单元地址将由指令指定的除立即数/寄存器方

式以外的任一种数据寻址方式取得。 两个相继字中 , 前一个为偏移量 ,后一个为段值。 <3> 无条件转移指令 JMP SHORT PTR OPR IP←IP+8 位位移量 段内直接短转移 JMP NEAR PTR OPR IP←IP+16 位位移量 段内直接近转移 JMP WORD PTR OPR IP←─(EA) 段内间接转移

Page 52: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

JMP FAR PTR OPR IP←OPR( 偏移地址 ) 段间直接转移 CS←OPR( 段地 ) JMP DWORD PTR OPR IP←(EA) 段间间接转移 CS←EA+2 <4> 条件转移指令 A、 JZ(JE) OPR 条件ZF=1 结果为零 ( 相等转 ) JNZ(JNE) OPR ZF=0 结果不为零 ( 不等转 ) JS OPR SF=1 为负转 JNS OPR SF=0 为正转 JO OPR OF=1 有溢出转 JNO OPR OF=0 无溢出转 JP OPR PF=1 偶转 JNP OPR PF=0 奇转

Page 53: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B、无符号数条件转移JB(JNAE,JC) OPR 条件: CF=1 小于转

JNP(JAE,JNC)OPR CF=0 大于等于转 JBE(JNA) OPR CFVZF=1 小于等于转 JNBE(JA) OPR CFVZF=0 大于转

C、带符号数条件转移JL(JNGE) OPR 条件: SF≯OF=1 小于转

JNL(JGE) OPR SF≯OF=0 大于等于转 JLE(JNG) OPR (SF≯OF)∨ZF=1 小于等于转 JNLE(JG) OPR (SF≯OF)∨ZF=0 大于转

D、 JCXZ OPR CX=0 CX=0转

Page 54: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

<5> 例:

A、设: DS=2600H, BX=1256H, SI=528F

TAB( 位移量 )=20A1H PC当= 2000H

[232F7H]=3280H, [264E5H]=2450H

执行 JMP 1000H 后 IP=

JMP BX 后 IP=

JMP [BX+TAB] 后 IP=

JMP [BX+SI] 后 IP=

JMP 2000H : 1000H 后 IP= CS=

Page 55: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B、试分析下面程序 ST : MOV AL, X SHL AL,1 JC L2 CMP AL,Y JNZ L1 MOV Z,0 HLT L1 : JB L3 L2 : MOV Z,1 HLT L3 : MOV Z,-1 HLT

Page 56: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2、子程序调用和返回指令 A、调用指令:把下一条指令的地址 (CS/IP 即断点)

压栈,并实现转移( DST 送 IP/CS) CALL DST 段内直接 SP←SP-2 调用 [SP+1,SP]←IP / IP←IP+D16 段内间接 SP←SP-2 调用

[SP+1,SP]←IP / IP←EA 段间直接 SP←SP-2 [SP+1,SP]←CS 调用 SP←SP-2 [SP+1,SP]←IP IP←偏移地址 CS←段地址

Page 57: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

段间间接 SP←SP-2, [SP+1,SP]←CS 调用 SP←SP-2, [SP+1,SP]←IP IP←(EA) CS←(EA+2) B、返回指令 RET 段内返回

IP← [SP+1,SP] SP←SP+2

RET EXP 段内带立即数返回 IP←[SP+1,SP] SP←SP+2

SP←SP+D16 ( 出栈后修改 SP)

Page 58: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

RET IP←[SP+1,SP] 段间返回 SP←SP+2 CS←[SP+1,SP] SP←SP+2 RET EXP IP←[SP+1,SP] 段间带立即数返回 SP←SP+2

CS←[SP+1,SP] SP←SP+D16

注: EXP 是一个表达式,其值为 D16( 位移量 ) 。它用来在 返回地址出栈后修改堆栈指针。这便于调用程序在

用 CAIL 之前把子程序所需参数入栈,以便子程序使 用。当子程序返回后,这些参数已不再有用,就可

以修改栈指针使其指向参数入栈以前的值。

Page 59: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 例:

CALL 1000H

CALL AX

CALL 2500H:3600H

CALL DWORD PTR[DI]

RET6

Page 60: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

3、循环控制指令 LOOP OPR CX←CX-1,当 CX≠0 时: 则: IP←IP+D8实现循环

否则: IP 值不变 ,退出循环 LOOPZ(LOOPE) OPR

CX←CX-1,当 CX≠0,ZF=1 时: 则: IP←IP+D8实现循环

否则: IP 值不变 ,退出循环 LOOPNZ(LOOPNE) OPR

CX←CX-1,当 CX≠0,ZF=0 时: 则: IP←IP+D8实现循环 否则: IP 值不变 ,退出循环

注:循环控制指令不影响条件码。 LOOPZ/LOOPNZ提供了提前结束循环的可能性。

Page 61: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

例:试分析下面程序 ST : MOV CX, M MOV AX, 0 MOV SI, AX L1 : ADD AX,[ARRAY +SI] ADD SI, 2 LOOP L1 MOV [ TOTAL], AX

HLT

Page 62: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

4、中断指令和中断返回指令 A、 INT SP←SP-2;[SP+1,SP]←PSW INT TYPE SP←SP-2;[SP+1,SP]←CS SP←SP-2;[SP+1,SP]←IP IP←(TYPE*4) CS←(TYPE*4+2) 注: TYPE 为类型号,其值为 0~ 255 。 (TYPE 不能为 0) INT 是一个字节的中断指令,它隐含的类型号为 3 。

(断点中断 ) INT 指令在执行完上述操作后,将 0→IF→TF 。

Page 63: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B、 INTO 若 OF=1 则: SP←SP- 2;[SP+1,SP]←PSW, SP←SP- 2;[SP+1,SP]←CS SP←SP- 2;[SP+1,SP]←IP IP←[00010H,00011H] CS←[00012H,00013H] 注: INTO 为若溢出则中断的指令。 ( 类型号为 4) C、 IRET IP←[SP+1,SP] , SP←SP+2 CS←[SP+1,SP] , SP←SP+2

PSW←[SP+1,SP] , SP←SP+2 注:中断指令:保存现场: PSW、 CS 、 IP 实现转移: [TYPE*4]→IP

[TYPE*4+2]→CS

Page 64: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

5、处理器控制指令 A、 CLC 0→CF 进位位置 "0" CMC CF→CF 进位求反 STC 1→CF 进位置 "1" CLD 0→DF 方向标志置 "0" STD 1→DF 方向标志置 "1" CLI 0→IF 中断标志置 "0" STI 1→IF 中断标志置 "1" B、 NOP 无 (空 ) 操作 HLT 停机 WAIT 等待

Page 65: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C、 ESC mem 交权 (调用协处理器工作 ) ESC 指令把mem存贮单元的内容送到 数据总线。这条指令在使用协处理器 执行某些操作时,可以从存贮器取得 指令或操作数。 D、 LOCK 封锁 该指令是一种前缀,它可以与其它指 令联合,用来维持总线的锁存信号直 到与其联合的指令执行完为止。 当 CPU 与其他处理机协同工作时,该

指令可避免破坏有用信息。

Page 66: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

小 结 一、 CPU 结构 1 、通用寄存器: AX,BX,CX,DX/AH,AL,BH,BL,CH, CL,DH,DL 专用寄存器: SP,BP,SI,DI 。 标志寄存器: F,(AF,CF,OF,SF,PF,ZF//DF,IF,TF,) 段地址寄存器: CS,DS,ES,SS 指针寄存器: IP 2 、一个 20 位的物理地址可表示成段地址:偏移地址,

其计算方法如下: 物理地址= ( 段地址 X10H ) +偏移地址

Page 67: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

二、寻址方式 1 、立即寻址:操作数由指令给出 MOV DX,100H 2 、寄存器寻址:操作数在寄存器中 ADD AX,BX 3 、直接寻址:操作数有效地址由指令给出 MOV AX,[100] MOV AX,VAR 4 、寄存器间接寻址: 操作数的地址在寄存器中,这些寄存器可以 为 BX,BP;SI,DI. 其操作数地址为: A 、┌ BX┐ ( 数据段基址寻址 ) │SI│+位移量+ [DS]* 16 ( 变址寻址 ) └DI┘ ( 变址寻址 ) [BP] +位移量+ [SS]* 16 ( 堆栈段基址寻址 )

Page 68: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、┌ SI┐ │ │+ [BX] +位移量+ [DS]*16 ( 基址加变址 ) └DI┘ ┌SI┐ │ │+ [BP] +位移量+ [SS]*16 ( 基址加变址 ) └DI┘ 注:只要用上 BP ,那就默认段寄为 SS ,其他情况为DS 5 、编写指令时应注意的几个问题 A 、注意区别立即寻址方式和直接寻址方式 如: MOV AX,126 与 MOV AX,[126] B 、使用寄存器间址时,应注意和寄存器寻址方式的 区别 如: MOV AX,BX 与 MOV AX, [BX]

Page 69: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 、在双操作数指令中 , 源操作数和目的操作数的地 址不能同时为存贮器地址。 如: M1 和 M2 为两个存贮器变量, 则: ADD [M1], [M2] 是错误指令。 D 、代码段寄存器 CS 不能用作指令的目的寄存器。 三、指令 1 、数据传送指令 A 、 MOV DST,SRC (DST: 目的操作数, SRC 源操作数 ) 指令的 7种格式与注意事项。 PUSH SRC 指令的操作过程, SP 的变化情况

Page 70: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

POP DST 指令的操作过程, SP 的变化情况 XCHG OPR1 ,OPR2 (交换 ) B 、 IN AC,PORT 只能用 AX/AL,DX//64K空间 OUT PORT, AC XLAT (换码 ) AL←[BX + AL] BX 为表格首址, AL 为项号 C 、 LEA REG,SRC 有效地址送寄存器 REG 为通用寄存器 LDS REG,SRC 指针送寄存器和 DS LES REG,SRC 指针送寄存器和 ES

Page 71: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

D 、 LAHF 标志送 AH SAHF AH 送标寄 2 、算术运算指令 A 、 ADD DST,SRC ADC DST,SRC INC OPR INC 指令不影响 CF B 、 SUB DST,SRC SBB DST,SRC DEC OPR DEC 指令不影响 CF NEG OPR CMP OPR1 ,OPR1 建立标志/后跟条转

Page 72: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

C 、 MUL SRC 字节: AL*(SRC)→AX 字: AX*(SRC)→DX,AX IMUL SRC (带符号) DIV SRC 字节: AX÷(SRC)→AL (余在 AH) 字: DX,AX÷(SRC)→AX (余在 DX) IDIV SRC ( 带符号 ) D 、 CBW ( 字节转换为字 )/ (AL扩展到 AH) CWD ( 字转换为双字 )/ (AX扩展到 DX) E 、 DAA (BCD 码加调正/压缩码 ) DAS (BCD 码减调正/压缩码 ) AAA (非压缩 BCD 码加调正 ) AAS (非压缩 BCD 码减调正 )

Page 73: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

AAM 非压缩 BCD 码乘调正 将 AL积除 OA,商存 AH; 除数存 AL 中。 AAD 非压缩 BCD 码除调正 将被除数 AX调正为 2 进制数 ; H*10+AL→AL 3 、逻辑运算和移位指令 A 、 AND DST,SRC OR DST,SRC NOT OPR XOR DST,SRC TEST OPR1 ,OPR2 (OPR1∧OPR2)

Page 74: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、 SHL OPR,CNT (CNT 为 1 或 CL) SAL OPR,CNT 算术左移 SHR OPR,CNT 逻辑右移 SAR OPR,CNT 算术右移 ROL OPR,CNT 循环左移 ROR OPR,CNT 循环右移 RCL OPR,CNT 带进位循环左移 RCR OPR,CNT 带进位循环右移 4 、串处理指令 (使用串指令的条件 ) A 、 REP 重复前缀 CX≠0重复 MOVSB 字符串传送 ( DI )←( SI ) MOVSW 指针自动修改 条件: SI,DI,CX及 DF 赋值后 才可用 MOVSB/W)

Page 75: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、 LODSB 取字符串 AC←(SI) LODSW C 、 STOSB 存字符串 (DI)←AC STOSW D 、 REPE/REPZ 重复前缀 CX≠0,ZF=1 时重复 REPNE/REPNZ 重复前缀 CX≠0,ZF=0 时重复 CMPSB 字符串比较 (SI)- (DI) CMPSW 自动修改指针 E 、 SCASB 字符串捡索/ AC- (DI) SCASW 关键字要事先存入 AL,AX 中

Page 76: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

5 、控制转移指令 A 、 JMP SHORT PTR OPR 段内直接短转移 JMP NEAR PTR OPR 段内直接近转移 JMP WORD PTR OPR 段内间接转移 JMP FAR PTR OPR 段间直接转移 JMP DWORD PRT OPR 段间间接转移 B 、 JZ/JE OPR ZF=1 JNE/JNE OPR ZF=0 JS OPR SF=1 JNS OPR SF=0

Page 77: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

JO OPR OF=1 JNO OPR OF=0 JP OPR PF=1 JNP OPR PF=0 JB/JNAE/JC OPR CF=1 无符号数小于转 JNB/JAE/JNC OPR CF=0 无符号数 大于等于转 JBE/JNA OPR CF∨ZF=1 无符号数 小于等于转 JNBE/JA OPR CF∨ZF=0 无符号数 大于转 JL(JNGE) OPR SF≯OF=1 带符号数 小于转

Page 78: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

JNL(JGE) OPR SF≯OF=0 带符号数 大于等于转 JLE/JNG OPR (SF≯OF)∨ZF=1 带符号数 小于等于转 JNLE/JG OPR (SF≯OF)∨ZF=0 带符号数 大于转 JCXZ OPR (CX)=0 CX=0转 C 、 CALL DST 指令的操作过程 RET (EXP) 指令的操作过程 /EXP 的含义

Page 79: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

D 、 LOOP OPR 循环控制, CX≠0转移 LOOPZ/LOOPE OPR 循环控制 , CX≠0;ZF=1 则转移 LOOPNZ/LOOPNE OPR 循环控制, CX≠0;ZF=0 则转移 E 、 INT 指令操作过程 INT TYPE INTO IRET F 、 CLC 进位位 (CF)置 "0" CMC 进位位 (CF) 求反 STC 进位位 (CF)置 "1" CLD 方向标志置 "0"

Page 80: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

STD 方向标志置 "1" CLI 中断标志置 "0" STI 中断标志置 "1" NOP HLT WAIT 等待 ESC mem 交权 LOCK 封锁 / 前缀 6 、使用指令时,应注意的几个问题 A 、指令对地址还是对地址中的内容进行操作, 要严加区分。 如: LEA BX,MESS MESS 的偏移地址→ BX

Page 81: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

B 、使用指令时,要清楚指令隐含的操作寄存器 如:乘法隐含的目的操作数 : AX/AL 除法隐含的目的操作数 : DX,AX/AL 串指令隐含的操作数为: SI,DI 与 AL等。 重复前缀 : CX 十进制调正指令隐含地使用了 AL 换码指令 :XLAT [BX+AL]→AL 循环指令 : CX 输入、输出指令 : AX/AL, DX C 、对带符号数和无符号数的操作应正确选择相应的条 件转移指令。

Page 82: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

D 、用移位指令来倍增或倍减一个值时,要注意对 带符号数和无符号数所使用的指令应是不同的。 如: AX=8520H 当 AX 为无符号数时 ,AX/2 可用 SHR AX,1 结果为 4290H ; 当 AX 为带符号数时, AX/2 应用 SAR AX,1 结果为 C290H 。 E 、标号是程序中指令的符号地址,要注意和变量 ( 数据符号 ) 的区别。 如:定义 VAR为一变量, LAB 为一标号 JMP LAB 指令的转移地址为 LAB JMP VAR为一非法指令。

Page 83: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

四、举例 1 、指出下列指令的错误 A 、 MOV AH,BX B 、 MOV [BX],[SI] C 、 MOV AX,[SI][DI] D 、 MOV [BX][SI],ES:AX E 、 MOV BYTE PTR[BX],1000H

F 、 MOV CS,AX G 、 MOV DS,BP H 、 INC [AX]

Page 84: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

2 、求双字长数 DX:AX 的补码数

3 、将 DX:AX 中双字长数乘以 2 / 除以 2

Page 85: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

4 、两字节数相加 ,设两字节数存于 BL 、 DL 中 , 和存于 AX 中。 A 、无符号数

B 、带符号数

Page 86: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

5 、比较 AX,BX,CX 中带符号数大小, 将最大数存于 AX 中。

6 、已知内存中有一以 ARRAY为首址的 100 个字的数组 , 试将数组中每个数加 1

Page 87: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

7、试将 ELEMS 中的 100 个字节数据的位置颠倒过来

Page 88: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

1 X>0

8 、设 Y = 0 X=0 已知一个 8 位带符号数存于 X 单

-1 X<0 元中试求 Y值存于 AL 中。

Page 89: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

9 、有 3 个数存于 TAB 为首址单元中,试将中值存于 A中 设数为带符号数

Page 90: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

10 、有 3 个无符号字节数存于 BUF 为首址单元中 ,若3 个 数都不为 0, 则求 3 个数之和 , 存于以 BUF + 3 为首址 单元中;若 3 个数有 1 个为 0, 则将其它 2 个单元清零

Page 91: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

11 、设有 50 个 ASCLL 字符存于 BUF 为首址单元中,求出 字符串中 A 字符的个数存于 DL 中,并将 A 字符的地

址顺序存于以 ADRY为首址的单元中。

Page 92: 第三章 微型计算机的指令系统 § 1 指令的构成和操作数的类型 一、指令构成 一条指令由操怍码字段和操作数字段构成。 1 、操作码字段

12 、设有 50 个 ASCLL 字符存于 STG 为首址单元中,求出 字符串中 0-9 字符的个数存于 DL 中,并将 0-9 字符

顺序存于以 BUF 为首址的单元中。