2022年CPU指令系统 .pdf

上传人:Che****ry 文档编号:34243804 上传时间:2022-08-15 格式:PDF 页数:20 大小:211.39KB
返回 下载 相关 举报
2022年CPU指令系统 .pdf_第1页
第1页 / 共20页
2022年CPU指令系统 .pdf_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《2022年CPU指令系统 .pdf》由会员分享,可在线阅读,更多相关《2022年CPU指令系统 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章 8086CPU指令系统本章重点:1寻址方式 : 立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。28086指令系统:数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O 指令,中断指令。学习目标:1掌握寻址方式;2掌握常用指令的功能和用法。难点:区别指令的正确与错误。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 1寻址方

2、式指令在存储器中是顺序存放的, 而操作数的存放没有规律, 因此操作数的寻址方法相对比较复杂。一、 指令的基本格式1组成:一条指令包括操作码和操作数两部分。操作数:源操作数,目标操作数。2寻址方式:寻找指令中操作数的方法。3操作数类型:(8086系统)寄存器操作数, 存储器操作数, 立即数(在指令代码中) 和 I/O 端口操作数。二、 寻址方式1立即数寻址方式:指令中所需的操作数直接包含在指令代码中(即由指令直接提供),立即数可以是 8 位,也可以是 16 位。例:MOV AL ,80H ;将十六进制数80H 送入 AL MOV AX ,1090H;将 1090H送 AX :90HAL ,10H

3、AH 说明:采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从指令中直接取得, 不需要运行总线周期, 所以,其显著特点就是速度快。规定:立即数只能是整数,不能是小数,变量或者其他类型的数据;另外,立即数只能作为源操作数。2寄存器寻址方式:如果操作数就在CPU 的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址。对 16 位操作数来说,寄存器可以为AX ,BX,CX,DX,SI,DI,SP 或BP,而对 8 位操作数来说寄存器可以为AH,DH,AL ,DL。例: INC CX ;将 CX 内容加 1 名师资料总结 - - -精品资料欢迎下载 - - - - - -

4、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - ROL AH, 1 ;将 AH 中的内容循环左移1 位。说明:不需要使用总线周期,因此,执行速度快。一条指令中,可以对源操作数采用寄存器寻址方式,也可对目的操作数采用寄存器寻址方式,或两者都用。以下各种寻址方式,操作数都在存储器中。3直接寻址。方式:数据总是在存储器中,存储单元的有效地址由指令直接指出。例: MOV AX,1070H;将 DS 段的偏移量 1070H、1071H 的内容装入AX。即,若 DS=2000H,则将 21070H 和

5、 21071H两单元的内容取出送AX 。说明:直接寻址是对存储器进行访问时可采用的最简单的方式,且可用符号地址代替数值地址。若要对其它段寄存器所指出的存储区进行直接寻址,则必须指出段寄存器名。例:MOV BX ,CS:3000H;设 CS=5100H,则取 54000H和 54001H两单元内容送 BX。4寄存器间接寻址方式:将操作数所在的存储单元的偏移地址放在指令给出的寄存器中,而不像直接寻址那样直接给出。例:MOV AX ,SI;AX DS:SI MOV BX ,AX ;DS:BX AX 说明:可用于这种寻址方式的寄存器只能是SI、DI、BP 和 BX。SI,DI,BX 约定的段寄存器是D

6、S;而 BP 约定的段寄存器是SS。5基址寻址:方式:操作数的有效地址偏移量是基址寄存器BX 或基址指针 BP 的内容与指令给名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - 定的位移量( 8 位或 16 位)之和。例:MOV AX ,ARRAYBX 等价MOV AX ,ARRAY+BX 将 DS:BX+ARRAY 的内容 AX 说明:BX 约定的段寄存器为DS,BP 约定 SS,可使用段跨越前缀。物理地址 =16(DS)+(B

7、X)+位移量( 8 或 16 位)或 16(SS)+(BP)+位移量( 8 或 16 位)6变址寻址操作数的有效地址是变址寄存器SI、DI 的内容与指令给定的位移量(8 位或16 位)之和。段寄存器约定在DS 中,允许段超越。例:MOV DI+12H ,AX ;DS:DI+12H AX MOV BX,SS:DI+45H ;BXSS:DI+45H 7基址变址寻址。方式:操作数的有效地址是指令给定的位移量和一个基址寄存器(BX 或 BP)及一个变址寄存器( SI 或 DI)的内容之和。段寄存器约定由基址寄存器决定,BX约定 DS,BP 约定 SS,允许段超越。例:MOV AX , ARRAYBX

8、SI ;等价MOV AX ,BX+SI+ARRAY ;即:AXDS:BX+SI+ARRAY 说明:基址寄存器 BX,BP 不能同时出现在一个方括号内;变址寄存器SI,DI 亦如此。8串操作寻址方式:用于串操作指令, 其操作数虽然也在寄存器中,但不使用上述寻址方式, 而是隐含地运用, SI 指出源串偏移地址, DI 指出目的串偏移地址。指令执行后,SI 和 DI 的内容根据方向标志DF 的值进行增减, DF=0 增,DF=1 减。若串操作按字节进行,增 /减“1” ;若串操作按字进行,增 /减“2” 。约定源串段地址在DS 中,目的串段地址在ES 中,不允许段超越。即SIDS DIES 名师资料

9、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 例:MOVSB ;字节传送: ES:DI DS:SI。传送完后, SI1,DI1。9I/O 端口寻址:操作数在外设端口中。直接端口寻址:指令中直接给出的8 位常数是外设端口地址。 (0255)例:IN AL ,34H;AL 34H OUT 34H,AL ;34H AL 间接端口寻址:指令中外设端口的16 位地址在 DX 中。例:MOV DX, 280H IN AX ,DX;AX 280H

10、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 2 指令系统目前在微机上常见的汇编语言是MASM (Macro Assembler Language 宏汇编语言) ,因此我们以 8086/8088 MASM 为主要介绍内容, 也涉及一些 MASM 5.0 ,MASM 6.0 等版本内容。OPR 指令助记符SRC 源操作数DEST 目的操作数零操作数在指令中隐含指明了操作数所处的地方。一、 传送类指令1数据传送指令( MOVE

11、)格式: MOV DEST ,SRC (不区分大小写)功能:可以进行字节数据传递,也可以进行字数据传送。但SRC 和 DEST 的长度必须一致,不能一个是字节数据,而另一个是字数据。举例:CPU 通用寄存器之间传递MOV CL,AL ;8bit MOV SI,AX ;16bit 通用寄存器与段寄存器之间传递。MOV DS,AX ;AX 中 16 位DS MOV AX,ES;ESAX 通用寄存器与存储单元之间MOV AL ,BX ;DS 数据段( BX)所指存储单元内容AL MOV DI ,AX;AX 中 16 位数据 DS: (DI)(DI)+1 MOV 2000H, CX; CX 中 16

12、位DS: (2000H) (2001H)段寄存器和存储单元之间MOV DS,2000H;DS:2000H 2001HDS MOV BXSI ,CS;CSDS:BX+ (SI) (BX)+(SI)+1 立即数到通用寄存器。MOV SP,2000H;2000HSP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - 立即数到存储单元。MOV WORD PTRSI ,4501H;4501HDS: (SI) (SI)+1 *PTR 汇编操

13、作符与 WORD 一起表示字操作,因为 4501H 类型不确定。BYTE PTR 限定字节。说明:MOV 指令数据传送方向如下图所示:除源操作数 SRC 是立即数的情况外, MOV 指令中 DST 和 SRC必须要用到一个寄存器,不允许用MOV 在两个存储单元之间传送数据。若需要时,可借助一通用寄存器为桥梁,即:MOV AL,SI MOV DI ,AL 不能用 CS 和 IP 作目的操作数,即这两个数的内容不能随便改变。不允许在段寄存器之间直接传送数据。不允许用立即数作目的操作数。不能向段寄存器送立即数, 因此,对段寄存器初始化赋值时, 要通过通用寄存器。MOV AX,DATA MOV DS,

14、AX 2交换指令( Exchange )格式:XCHG DST,SRC 功能:源操作数和目的操作数两者的内容相互交换。存储器通用寄存器AX BX CX DX BP SP SI DI 立即数CS 段 寄 存 器DS ES SS 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - 举例;XCHG BX,BP SI 设指令执行前: (BX)=6F30H, (BP)=0200H, (SI)=0046H, (SS)=2F00H,(2F246

15、H)=4154H,SRC物理地址 =2F000+0200+0046=2F246 则:(BX)=4154, (2F246H)=6F30H 说明:两个操作数必须有一个在寄存器中。即可以在寄存器之间或寄存器与存储器之间交换信息。不允许使用段寄存器。允许字或字节操作,且不影响标志位。3堆栈操作指令( PUSH/POP)堆栈是以“后进先出” 的原则暂存一批需要保护的数据或地址的一个特定存储区。堆栈段段地址由 SS提供,偏移地址由SP提供, SP始终指向栈顶。堆栈操作有压栈( PUSH)和出栈( POP)两种,均以字为单位。压栈过程:例 PUSH AX SPSP1 (SP)AH SPSP1 (SP)AL

16、出栈过程:例 POP BX BL(SP)SPSP+1 BH(SP)SPSP+1 4标志位传送指令。对标志位寄存器进行操作有4 条指令,都是零操作数。取标志寄存器指令( Load register AH from Flag)格式: LAHF 功能:把标志寄存器的低8 位传送给 AH 寄存器,即把SF,ZF,AF,PF名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - 和 CF 标志位分别送至AH 的第 7、6、4、2、0 位,AH

17、的第 5、3、1 位是任意的,指令对标志寄存器的各位无影响。存储标志寄存器( store register AH into Flag)格式: SAHF 功能:把寄存器 AH 中的第 7、6、4、2、0 位的内容送至 FR 的 SF、ZF、AF、PF、CF 标志位,而 FR 的 OF、DF、IF、TF 各位不受影响。标志位进栈 (Push Flag) 格式: PUSHF 功能:将 FR 压入堆栈。该指令首先把堆栈指针SP减 2,然后将 16 位标志寄存的全部内容送入SP 指向的堆栈顶部字单元中。FR 中各标志位本身不受影响。进栈步骤: SPSP-1; (SP)( FR)HSPSP-1; (SP)

18、( FR)L堆栈采用“后进先出”原则。标志位出栈( POP Flag )格式: POPF 功能:将堆栈顶部的内容弹入标志寄存器。该指令首先根据SP找到堆栈顶部,并将堆栈顶部的一个字的内容送入FR,然后 SP加 2。FR 中各标志位的状态,由从堆栈中弹出内容的相应位决定。出栈步骤:(FR)L(SP) ;SPSP+1 (FR)H(SP) ;SPSP+1;PSHF 和 POPF 一般用在子程序和中断处理程序的首尾,起保存和恢复主程序标志的作用。FR 中 CF、DF、IF 有专门指令进行修改,其余标志位都没有指令对它们直接进行设置或修改。若要修改这些位,可首先用LAHF 把含 SF 的FR 低 8 位

19、送入 AH,对 AH 相应位进行修改,然后用SAHF 送回 FR。对 TF 位修改可先用 PSHF将 FR 压入堆栈,在堆栈中设置TF,然后用POPF返回。5地址传送指令。该指令传送的是存储单元的地址,而不是它的内容。装入有效地址( Load effective address ): 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 格式:LEA DST, SRC 功能:将源操作数的有效地址(即偏移量EA)送到指定的寄存器。举例

20、:LEA BX,0F62H BXSI 若指令执行前:(BX)=0400H,(SI)=003CH 则指令执行后:(BX)=0400+003C+0F62=139EH 说明:目的操作数一定是16 位的通用寄存器;此指令对FR各位无影响。存放一个存储单元逻辑地址的地址指针需要4 个 byte,其中高 16 位(两个高字节)用来存放基址,低16 位(两个低字节)用来存放偏移量。LDS(Load DS with Pointer)指针送寄存器和DS:格式:LDS DST,SRC 功能:把源操作数指定的4 个相继字节送到由指令指定的寄存器及DS 寄存器中。该指令常指定SI 寄存器。举例:LDS SI ,10H

21、 若指令执行前:(DS)=C000H, (C0010H)=0180H, (C0012H)=2000H,则指令执行后:(SI)=0180H, (DS)=2000H LES(Load ES With Pointer)指针送寄存器和ES 格式:LES DST,SRC 功能:把源操作数指定的4 个相继字节送到由指令指定的寄存器及ES 寄存器中。该指令常指定DI。二、 算术运算类指令。1加法指令( Addition)格式:ADD DEST ,SRC 功能: 目的操作数和源操作数相加,它们的和存放在目的操作数中,源操作数内容不变,即, DST(DST)+(SRC)说明:DST:通用寄存器,存储器SRC:通

22、用寄存器,存储器,立即数FR:影响 CF、DF、AF、ZF、SF、OF 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 两操作数不能同时为存储器操作数。参加运算的数可以是带符号数或无符号数。OF 位用来表示带符号数的溢出, CF 位用来表示无符号数的溢出。例:ADD AX ,BX ADD AL ,CL ADD CX,34 ADD DL,DA_BYTE 2带进位加法指令。格式: ADC DST ,SRC 功能: DST(DST

23、)+(SRC)+CF 用于双精度加法,即低16 位向高 16 位有进位的情况,其余同ADD 指令。3加“ 1”指令( Increment)格式:INC DST 功能:DST(DST)+1 说明:操作数可以是 8 位或 16 位通用寄存器或存储单元,但不能是立即数。FR:影响 PF、AF、ZF、SF、OF;不影响 CF 这条指令一般用在循环程序中修改指针和循环次数(即用于计数器)。4减法指令格式: SUB DST ,SRC 功能; DST(DST)( SRC)说明:DST:通用寄存器,存储器SRC:通用寄存器,存储器,立即数FR:影响 CF、DF、AF、ZF、SF、OF 两操作数不能同时为存储器

24、操作数。参加运算的数可以是带符号数或无符号数。OF 位用来表示带符号数的溢出, CF 位用来表示无符号数的溢出。例:SUB BX ,CX ;BX( BX)( CX)5带借位减法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - 格式:SBB DST,SRC 功能:DST(DST)( SRC)CF 说明:同 SUB 指令。6减“ 1”指令格式:DEC DST 功能:DST(DST)1 说明:操作数可以是 8 位或 16 位通用寄存

25、器或存储单元,但不能是立即数。FR:影响 PF、AF、ZF、SF、OF;不影响 CF。这条指令一般用在循环程序中修改指针和循环次数。7求负数指令( Negative)格式:NEG DST 功能:DST0(DST)说明:也称取补指令。影响: CF,PF,AF,ZF,SF,OF 8乘法指令无符号数乘法指令: MUL SRC 功能: AXAL *( SRC)(字节乘法)DXAX AX * (SRC)(字乘法)说明:操作数可以是通用寄存器、存储器,不能是立即数。字节乘:若乘积高8 位 AH0,则 CF=1,OF=1;若乘积高 8 位 AH=0,则 CF=0,OF=0。字乘:若乘积高16位 DX0,则

26、CF=1,OF=1;若乘积高 16 位 DX=0,则 CF=0,OF=0。例:MUL BX ;DXAX AX *BX MUL BYTE PTR SI ;AXAL*(DS:SI)带符号数乘法指令: IMUL SRC 功能:同 MUL 指令说明:同 MUL 指令,但若乘法结果AH 或 DX(高位部分)只是低( 8 或16)位部分的符号扩展,则OF=0,CF=0。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - 9除法指令无符号数除

27、法指令:DIV SRC 功能: ALAX/(SRC) ,余数在 AH 中, (字节除)AXDXAX/ (SRC) ,余数在 DX 中(字除)说明:若商超过 AL(字节除)或 AX(字除)的范围( FFH 或 FFFFH)时,系统会自动产生 0 类中断,且商和余数都不确定。其他与乘法指令同。对FR 无定义。带符号数除法指令:IDIV SRC 功能:同上说明:余数符号和被除数符号相同。三、 位操作类指令。1逻辑运算指令。格式:逻辑“与”:AND DST,SRC 逻辑“或”:OR DST,SRC 逻辑“异或”:XOR DST, SRC 逻辑“非”:NOT DST 功能:对字节或字进行逻辑运算。 主要

28、用于字节或字中某些位的组合,分离或位设置。例:AND AL, 0FH;分离 AL 低 4 位AND AL, F0H;分离 AL 高 4 位OR AL, 04H;AL 第 4 位置“ 1”说明:SRC 可以是寄存器,存储器或立即数。而DST 只能是通用寄存器或存储器。且二者不能同为存储器。运算结果均送回目的操作数。FR:NOT 指令对 FR 各位无影响;其它三条指令影响相同,SF、ZF、PF,另外, CF 和 OF 总是置“ 0” ,AF 不确定。2测试指令( TEST)格式: TEST DST,SRC 功能:与AND 指令相同,但运算结果不送回DST,只根据运算结果设置FR。该指令主要用来测试

29、一个操作数的某一位或某几位的状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - 通常将被测试数置于DST,测试用的位模式置于SRC。例:TEST AL,01H ;测试 AL 最低位是否为“ 1”若 AL 最低位为“ 0” ,则 ZF=1;若 AL 最低位为“ 1, 则 ZF=0;3移位 /循环,移位指令 算术左移SAL DST, COUNT 逻辑左移SHL DST, COUNT 功能:0 SAL 指令相当于乘以 2n,n

30、为左移位数。说明:COUNT 为移位次数,可以是1,若 COUNT 大于 1 时,必须放在 CL中,移位结束后, CL 值不变。因此移位位数可以是0255,一般选 016即可。算术右移SAR DST, COUNT 功能:等效于除以 2n,n为右移次数。逻辑右移SHR dst,count 功能:0循环左移ROL dst ,count 功能:循环右移ROR dst, count 功能:带进位循环左移RCL dst, count 功能:带进位循环右移RCT dst count 功能:说明:每条指令只需一个操作数,可以是字或字节,也可以是寄存器或存储器CF CF CF CF CF CF CF 名师资料

31、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 操作数。影响 AF 以外的各标志位,而AF 不定;当 Count= 1时,OF 才有意义,当移位前操作数的最高两位相同时,移位后 OF=0;当最高两位不同时,OF=1。四、 串操作指令串操作指令中源操作数地址由DS:SI提供,目的串操作数地址由ES:DI提供。每条串操作数指令每次仅对串中一个字或一个字节单元进行查找,且根据DF 标志自动修改 SI/DI 。为了便于对串中多个字或字节单元

32、进行串操作,指令系统设置有重复前缀,重复次数由 CX 中的内容确定,每执行一次,CX 内容减 1,而对 CX 的检测是在执行指令前进行的,最多64K。1重复前缀( Repeat )REP 功能:若 CX0,重复执行后缀的串指令,CXCX-1 若 CX=0,重复执行结束。例:REP MOVSB REPE/REPZ 当相等 /为零时重复串操作。功能:若 CX0,且 ZF=1,重复执行后缀的串指令,CXCX- 1 若 CX=0,或 ZF=0,重复停止。REPNE/REPNZ 当不相等 /不为零时重复串操作。功能:若 CX0,且 ZF=0,重复执行后缀的串指令,CXCX- 1 若 CX=0 或 ZF=

33、1,重复停止。说明;LODS、STOS、MOVS 不影响 FR,所以使用 REP。CMPS、SCAS,结果要反映在FR 上,所以常使用REPE/REPZ 和REPNE/REPNZ。2串传送:不影响FR MOVSB 功能: ES:DI DS:SI,DIDI 1,SISI1 MOVSW 功能: ES:DI DS:SI,但 DIDI2,SISI2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 3串取出:不影响FR LODSB 功

34、能: ALDS:SI,SISI1 LODSW 功能: AXDS:SI,SISI2 4串存入:不影响FR STOSB 功能: ES:DI AL,DIDI1 STOSW 功能: ES:DI AX ,DIDI2 5串比较:比较方法:将源串中的一个字或字节减去目的串中的一个字或字节,不保留相减结果,但在 FR 中反映。CMPSB 功能: DS:SIES:DI CMPSW 功能:同上,按字比较。6串搜索:在目的串中查找 AX 或 AL 指定的内容。查找方法是用AX 或 AL 的内容减去目的串中一个字或一个字节,相减结果反映在FR 中。SCASB SCASW 五、 循环和转移指令1转移指令转移指令分为:无

35、条件转移指令和条件转移指令无条件转移指令格式: JMP DST 功能:使程序无条件的转移到“目标”处,“目标”通常用标号来表达。例:JMP TARGET TARGET:,说明:JMP 指令不影响 FR。段内转移:只改变 IP 指针的内容,有直接寻址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - 和间接寻址两种;段间转移:CS、IP 都改变,也分直接寻址和间接寻址两种。段内转移:只改IP,CS 不变。I段内转移直接寻址:格式同

36、上,DST 只需使用符号地址。短转: IPIP+8bit 位移如:JMP SHORT DST 近转: IPIP+16bit 位移如:JMP NEAR PTR DST II 段内转移间接寻址: 目标地址在某一个通用寄存器或某一字存储单元中。例:JMP CX 或JMP WORD PTRBX 即 DS:BX IP 段间转移: CS,IP 都要修改I 段间转移直接寻址: 要转移的“目标”地址在指令中直接给出。例:JMP FAR PTR TARGET 即 TARGET 所对应物理地址应为20250H II段间转移间接寻址: 目标地址在一个做地址指针的双字单元中。地址指针的前2 个 byte 存放偏移量(

37、 IP) ,后 2个 byte存放目标的段基址( CS) 。例:JMP DWORD PTR ADDRBX JMP DWORD PTR BXSI 条件转移指令: 8086共有 18条格式: JXX DST 简单条件转移指令: 10 条标志位指令转移条件含义CF JC CF=1 有进位 /借位JNC CF=0 无进位 /借位ZF JE/JZ ZF=1 相等/等于 0JNE/JNZ ZF=0 不相等 /不等于 0SF JS SF=1 是负数JNS SF=0 不为负OF JO OF=1 有溢出CS 段OP 码50020020JMP 指令新(IP)=0250H新(CS)=2000H名师资料总结 - -

38、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - JNO OF=0 无溢出PF JP/JPE PF=1 有偶数个 1JNP/JPO PF=0 有奇数个 1功能:根据单个条件(状态)标志的设置情况转移。一般适用于测试某一次运算的结果并根据其不同特征产生程序分支作不同处理的情况。无符号数条件转移指令:4 条指令转移条件含义JA/JNBE CF=0 AND ZF=0 AB JAE/JNB CF=0 OR ZF=1 AB JB/JNAE CF=1 AND

39、ZF=0 AB JBE/JNA CF=1 OR ZF=0 AB 功能:在条件转移指令前使用比较指令(CMP) ,比较两个无符号的数(AB) ,并根据比较的结果转移。说明:A:ABOVE 高于,B:BELOW 低于, E:EQUAL 等于带符号数条件转移指令:4 条指令转移条件含义JG/JNLE SF=OF AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 AB JL/JNGE SFOF AND ZF=0 AB JLE/JNG SFOF OR ZF=1 AB 功能:在条件转移指令前使用比较指令(CMP) ,比较两个带符号数,并根据比较的结果转移。说明:G:Greater 大于,

40、L:Less 小于比较指令格式: CMP DST,SRC 功能:减法类型指令。(DST)-(SRC) ,其结果不送回( DST) ,仅根据结果设置 FR。说明:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - ZF=1 时,表示( DST)=(SRC)无符号数:CF=0,表示( DST)( SRC) ;CF=1,表示( DST)( SRC)有符号数:OF=SF,表示( DST)( SRC) ;OFSF,表示( DST)( SR

41、C)2循环指令: 4 条特点:都是段内短距离相对转移指令,转移范围在-128+127(8bit)之间;都隐含使用 CX 寄存器作为循环次数计数器,都需要把循环次数送给CX;执行后对 FR 均无影响。LOOP 指令格式: LOOP DST 功能: CXCX-1,若 CX0 则转移到目标地址;若CX=0 则顺序执行。例:有一个首地址为ARRAY 的 M 个字的数组,试编一程序,求出该数组的内容之和(不考虑溢出) ,并把结果存入 TOTAL 中。MOV CX,M MOV AX,0 MOV SI,AX START-LOOP:ADD AX ,ARRAYSI ADD SI,2 LOOP START-LOO

42、P MOV TOTAL,AX LOOPE/LOOPZ 指令格式: LOOPE DST 或LOOPZ DST 功能: CXCX-1 若 CX0,且 ZF=1,则转移到目标地址;否则顺序执行。LOOPNE/LOONZ 指令格式: LOOPNE DST 或 LOOPNZ DST 功能: CXCX-1 若 CX0,且 ZF=0,则转移到目标地址;否则顺序执行。LOOPZ、LOOPNZ 指令提供了提前结束循环的可能性。譬如,有时需要在字符串中查找一个字符,找到后可提前结束循环而不需要一查到底。例:NEXT:,CMP AL,ASC STRSI 名师资料总结 - - -精品资料欢迎下载 - - - - -

43、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - LOOPNE NEXT ,JCXZ 指令格式: JCXZ DST 功能:若 CX=0,则转移到目标地址;否则顺序执行。六、 子程序的调用和返回指令断点:子程序调用指令的下一条指令的首字节地址。1子程序调用指令格式: CALL 过程名功能:先保护程序断点段内调用:当前 IP 内容压栈保护。段间调用:先把CS 压栈,再把 IP 内容压栈保护。然后无条件转移到目标地址。2返回指令格式: RET 或 RET n 功能:执行与 CALL 相反的操作

44、,从子程序返回主程序。若指令不带操作数段内返回: IPSP SPSP+2 段间返回: IPSP,SPSP+2;CSSP,SPSP+2 若带立即操作数,上述功能完成后,再次修改SP的值,即: SPSP+n ,n为偶数。七、 输入输出指令1输入指令格式: IN OPRN1,OPRN2 说明:OPRN1 是 AL 或 AX ;OPRN2 是端口地址。若采用直接寻址, OPRN2可以是立即数形式,端口地址在0255(8 位)之间;间接寻址时,需要用DX寄存器存放 16 位端口地址,地址范围在065535之间。2输出指令格式: OUT OPRN1,OPRN2 说明; OPRN1 为端口地址; OPRN2 为累加器 AL 或 AX 。端口地址的确定方法同站上。无影响对间接寻址(间接调用)直接寻址(直接调用)段间调用与返回段内调用与返回类型FR名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁