已阅读5页,还剩100页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/131,1/131,8086寄存器组,8086有14个寄存器,它们都是16位的,这些寄存器按功能可为6类: (1)通用寄存器(4个) (2)地址指针寄存器(2个) (3)变址寄存器(2个) (4)段寄存器(4个) (5)指令指针寄存器(1个) (6)标志寄存器(1个),1/131,8086寄存器组,1/131,1)、通用寄存器(1)数据寄存器(AX、BX、CX、DX) 数据寄存器用来保存操作数或运算结果等信息。 AX寄存器称为累加器。使用频度最高,用于所有的输入/输出操作。某些字串操作以及算术运算,如乘法、除法,某些翻译指令也使用AX寄存器。 BX寄存器称为基址寄存器。常用于存放存储器地址。用于扩展寻址,起变址作用。 CX寄存器称为计数器。一般作为循环或串操作等指令中的隐含计数器。 DX寄存器称为数据寄存器。常用于字乘法和除法中存放双字数据的高16位,或用来存放外设端口地址。,1/131,(2)变址寄存器 A、SI寄存器 源变址寄存器。在字串操作中,常用SI表示字串的源地址,段地址在DS中。 B、DI寄存器 目的变址寄存器。在字串操作中,常用DI表示操作的目的地址,它常和附加段寄存器ES相关连,如前述的字符串传递操作,DI就表示了传送的目的地地址偏移。 在字符串操作中,SI和DI都具有自动增量或减量的功能。,1/131,(3)地址指针寄存器 A、SP寄存器 堆栈指针寄存器。在访问堆栈时,段地址在SS中,SP则表示偏移地址。 B、BP寄存器 基址指针寄存器。在通过堆栈传递数据和地址时,段地址在SS,BP存放要传递的数据和地址的偏移地址。也可作为通用寄存器用。 当 SI、DI、BP不用作变址寄存器和指针寄存器时,也可以作16位数据寄存器使用,用来保存操作数和运算结果。,1/131,2)、段寄存器 8086设立了个16位的段寄存器用来保存4个当前段的起始基址(省略了地址的低位,即每段从内存段界开始,低位认为是), 分别称为代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加数据段寄存器ES。,(1)CS寄存器代码段寄存器。它含有当前执行程序所在段的首地址,这个段寄存器内容左移位(即乘)再加上指令指针寄存器(IP)的内容,就是下一条要执行的指令地址。 (2)DS寄存器数据段寄存器。它含有当前数据段的首地址,通常数据段用来存放数据和变量,数据段寄存器内容加上指令中的偏移值,即为对数据段指定单元操作的地址。,1/131,(3)SS寄存器堆栈段寄存器。它保存当前堆栈的首地址。堆栈是存储器中设置的一种数据结构,用于存放数据和地址,有先进后出的特点,在调用子程序时,保留返回主程序的地址,也用来保留进入子程序将要改变其值的各寄存器的内容等。(4)ES寄存器附加段寄存器。附加段是在进行字符串操作时,作为目的段地址使用,这个附加段是附加的一个数据段,如用DS作为数据段段地址,SI为源地址偏移,将一个字串从源传送到目的区去,这个目的区可设在附加段中,即ES装附加段地址,DI寄存目的区地址的偏移。如果要使用附加段,用户程序必须对ES初始化,即设置值,否则ESDS,即数据段和附加数据段重合。,1/131,3)、指令指针寄存器 8086CPU中有一个很重要的16位指令指针寄存器IP ,它总是保存下一次将要从主存中取出指令的偏移地址(简称EA),其值为该指令到所在代码段段首址的字节距离。在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。,1/131,4)、标志寄存器 程序有时需根据上次指令执行的结果,判断以决定执行的方向,为此8086设有一个很重要的16位标志寄存器,它包含9个标志位,共占用2个字节。它们主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征,其中六位作为指令执行结果的条件标志,三位用作控制标志。 这些标志位在标志寄存器中的位置如下:,1/131,A条件标志 (1)符号标志SF 第位。对带符号的数操作时,若产生一个负的结果,则SF1,否则为0,当算术、逻辑、移位或循环移位操作时,都将影响此位。(2)零标志ZF 第6位。当运算结果为零时,ZF1,结果非零,则ZF0。(3)溢出标志 OF 第11位。当带符号数算术运算时,商位溢出,则OF1,否则为0,它用来作错误指示标志。,1/131,(4)进位标志CF 第0位。如果算术指令执行完后,最高位产生进位或借位,则CF1,否则CF0。CF还可保存移位或循环移位时移出的一位值,也可给出比较操作的结果,也可作为乘法结果的指示器。(5)辅助进位标志AF第4位。当操作数第3位产生进位或借位时,AF1,否则AF0,这个标志多用于压缩的十进制数操作。(6)奇偶标志 PF 第2位。当操作结果含有偶数个1时,PF1,否则PF0,这个标志多用于数据输中。,1/131,B状态控制标志 (1)方向标志DF第10位。可用指令预置。当DF0时,执行串操作指令后,变址寄存器自动递增,当DF1时,则动递减。即该标志可控制地址朝增加的方向或减少的方向改变。(2)中断允许标志IF第9位。当用指令置为1时,则允许8088响应中断请求,若为0时,则禁止响应中断请求。(3)跟踪标志TF第8位。当置为1时,则8088处于单步执行指令方式,每执行一条指令,自产动产生一个类型为1的中断。,1/131,主存储器和堆栈,1. 主存储器存储单元的地址和内容 存储器是计算机的记忆部件,用来存放程序和数据。按所在的位置,存储器可以分成主存储器和辅助存储器。 主存储器的基本存储单位是位,它能容纳一个二进制数的0和1。整个主存由许多存储位构成,这些存储位每8位组合成一个字节,每相邻的2个字节又可组成一个字。一个字节或一个字就构成一个字节或字存储单元。,存储单元地址:8086系统中,为了标识和存取每一个存储单元,给每个存储单元规定一个编号,这就是存储单元的物理地址(简称PA)。,1/131,右图表明了存储器中部分存储单元存放信息情况。从图1.4可看到,地址为34560H的字节的存储单元中的内容是34H,而地址为34561H的字节存储单元中的内容是12H。,1/131,2、物理地址的形成 8086CPU的地址线是20位的,这样最大可寻址空间应为220=1MB,其物理地址范围从00000HFFFFFH。而8086CPU寄存器都是16位的。那么,这1MB空间如何用16位寄存器表达呢? 根据要求可把1M字节地址空间划成若干逻辑段。每个逻辑段必须满足两个条件:一是逻辑段的起始地址(简称段首址)必须是16的倍数,这就使段首址的最低4位总为0,高16位正好装入一个段寄存器中;二是逻辑段的最大长度为64K,这样某单元在段内的相对位置可用16位段内偏移地址表示。,由于CPU只设置了4个段寄存器,因此,CPU在当前某一时刻最多只能访问4个段,即当前代码段、当前堆栈段、当前数据段和当前附加数据段,它们的首址分别由CS、SS、DS、ES给出。,1/131,1)、代码段代码段是程序代码的存储区。当前代码段在主存中的起始地址由代码段寄存器CS确定,指令指示器IP总是保存着下一条将要取出指令相对于CS的偏移地址,如果要取出这条指令执行,它的物理地址PA应为: PA(CS)左移4位 (IP),2)、堆栈段堆栈段可以用来作程序的临时数据存储区,存放暂时不用的数据。往堆栈中压入数据和从栈中弹出数据时,栈顶的物理地址为: PA(SS)左移4位 (SP),1/131,3)、数据和附加数据段数据段是程序中所使用的数据存储区,分为数据段和附加数据段,其段首址分别由数据段寄存器DS与附加数据段寄存器ES确定。当访问数据段中某一变量时,其物理地址为:PA(DS或ES)左移4位 该变量的偏移地址,4)、段的分配存储器分段方式并非把1M字节划分成16个64K字节的段使用,而是指CPU每次只能访问4个段。这4个段可以分配在1M字节内的任何地方,它们可以是完全重叠的,也可以是部分重叠或不重叠的,而且可以按任意顺序存放在主存的可寻址空间中。,1/131,1/131,跨段前缀示例。,MOVAX,DS:BP MOVCX,SS:SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为: PA1 =(DS)左移4位+BP PA2 =(SS)左移4位+SI,1/131,汇编语言指令格式如下: 标号场: 操作场 操作数场 ;注释场其中: :表示该项内容可要可不要。 标号场:表示该指令的在代码段中的偏移地址,可以不要,标号后用“ :”与操作场连接。 操作场:表示该操作的功能,不能省略。 操作数场:表示该指令所需的操作数,各操作数之间用“ ,”隔开。当操作数为两个时,一般地前面的称为目的操作数DST,后面的称为源操作数SRC。 ;注释场:对该指令进行说明,起到帮助读者阅读理解的作用,不参加指令的执行。 例如:NEXT1: MOV AX,0 ;MOVE 0 TO AX,1/131,8086/8088寻 址 方 式,计算机指令寻找操作数存放地址的方式称为指令的寻址方式。数据类型操作数分为:(1)立即数操作数:指令中所需的操作数为立即数,即我们常说的常量或常数。(2)寄存器操作数:指令中所需的操作数放在指定的寄存器中。(3)存储器操作数:指令中所需的操作数放在指定的存储器中的存储单元中,而指令中的操作数提供存储单元的偏移地址。(4)I/O操作数:指令中所需的操作数来源于I/O端口。,1/131,以 MOV 指令为例 立即寻址 MOV AX , 3069H寄存器寻址 MOV AL , BH直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址寻址 MOV AX , MASK BX SI ,1/131, 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令,8086/8088指令系统,8086的指令系统可以分为6组:,1/131,一、数据传送指令: 通用数据传送指令 MOV、PUSH、POP、XCHG 累加器专用传送指令 IN、OUT、XLAT 地址传送指令 LEA、LDS、LES 标志寄存器传送指令 LAHF、SAHF、PUSHF、POPF 类型转换指令 CBW、CWD,1/131,(1) 传送指令: MOV DST, SRC 执行操作: (DST) (SRC)注意: * DST 不能是 CS* DST、SRC 不能同时为段寄存器 MOV DS, ES * 立即数不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即数* DST、SRC 不能同时为存储器寻址,1、 通用数据传送指令,1/131,(2) 进栈指令: PUSH SRC 执行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC)(3) 出栈指令: POP DST 执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2堆栈:先进后出的存储区,存在于堆栈段中,SP 在 任何时候都指向栈顶。 注意: * 堆栈操作必须以字为单位。 * 不影响标志位 * 不能用立即寻址方式 PUSH 1234H * DST不能是CS POP CS ,1/131,例:假设 (AX) = 2107 H , 执行 PUSH AX,1/131,例: POP BX,1/131,例: PUSH DS SUB AX, AX PUSH AX RET例: PUSH AX PUSH BX PUSH CX ;其间用到AX、BX、CX POP CX POP BX POP AX,1/131,(4) 交换指令: XCHG OPR1, OPR2 执行操作: (OPR1) (OPR2)注意: * 不影响标志位 * 不允许使用段寄存器 例:XCHG BX, BP+SI XCHG AL, BH,1/131,2、累加器专用传送指令(只限使用AX或AL)(1) 输入指令(I/O CPU) 长格式: IN AL, PORT (字节) IN AX, PORT (字) 执行操作:(AL) ( PORT ) (字节) (AX) ( PORT+1, PORT )(字) 短格式: IN AL, DX (字节) IN AX, DX (字) 执行操作:(AL) ( (DX) ) (字节) (AX) ( (DX)+1, (DX) )(字),1/131,(2) 输出指令(CPU I/O)长格式: OUT PORT, AL (字节) OUT PORT, AX (字)执行操作:( PORT ) (AL) (字节) ( PORT+1, PORT ) (AX)(字)短格式: OUT DX, AL (字节) OUT DX, AX (字)执行操作:( (DX) ) (AL) (字节) ( (DX)+1, (DX) ) (AX)(字),1/131,注意: * 不影响标志位* 前256个端口号00HFFH可直接在指令中指定(长格式)* 如果端口号 256,端口号 DX(短格式)例:测试某状态寄存器(端口号27H)的第2位是否为1 IN AL, 27H TEST AL, 00000100B JNZ ERROR ;若第2位为1, 转ERROR处理,1/131,(3) 换码指令:XLAT 或XLAT OPR 执行操作:(AL) ( (BX) + (AL) )例:MOV BX, OFFSET TABLE ; (BX)=0040H MOV AL, 3 XLAT TABLE 指令执行后 (AL)=33H注意:* 不影响标志位* 字节表格(长度不超过256) 首地址 (BX)* 需转换代码 (AL),1/131,3、 地址传送指令 (1) 有效地址送寄存器指令: LEA REG, SRC 执行操作: (REG) SRC (2) 指针送寄存器和DS指令: LDS REG, SRC 执行操作: (REG) (SRC) (DS) (SRC+2) 4个相继字节 寄存器(通常是SI)、DS (3) 指针送寄存器和ES指令: LES REG, SRC 执行操作: (REG) (SRC) (ES) (SRC+2) 4个相继字节 寄存器(通常是DI)、ES,1/131,4、标志寄存器传送指令 (1) 标志送AH指令: LAHF 执行操作: (AH) (PSW的低字节) (2) AH送标志寄存器指令: SAHF 执行操作: (PSW的低字节) (AH) (3) 标志进栈指令: PUSHF 执行操作: (SP) (SP) - 2 ( (SP)+1, (SP) ) (PSW) (4) 标志出栈指令: POPF 执行操作: (PSW) ( (SP)+1, (SP) ) (SP) (SP) + 2* 影响标志位,1/131,5、类型转换指令 (1) CBW AL AX执行操作: 若(AL)的最高有效位为0,则(AH)= 00H 若(AL)的最高有效位为1,则(AH)= 0FFH(2) CWD AX (DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)= 0000H 若(AX)的最高有效位为1,则(DX)= 0FFFFH注意: * 无操作数指令 * 隐含对AL 或AX 进行符号扩展 * 不影响条件标志位,1/131,二、算术指令: 加法指令 ADD、ADC、INC 减法指令 SUB、SBB、DEC、NEG、CMP 乘法指令 MUL、IMUL 除法指令 DIV、IDIV 十进制调整指令 DAA、DAS、 AAA、AAS、AAM、AAD,1/131,1、 加法指令(1) 加法指令: ADD DST, SRC 执行操作: (DST) (SRC) + (DST)(2) 带进位加法指令: ADC DST, SRC 执行操作: (DST) (SRC) + (DST) + CF(3) 加1指令: INC OPR 执行操作: (OPR) (OPR) + 1,注意: * 除INC指令不影响CF标志外,均对条件标志位有影响,1/131,加法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF 位表示 无符号数 相加的溢出。OF 位表示 带符号数 相加的溢出。,1/131,n=8bit 带符号数(-128127) 无符号数(0255),1/131,2、 减法指令(1) 减法指令: SUB DST, SRC 执行操作: (DST) (DST) - (SRC) (2) 带借位减法指令: SBB DST, SRC 执行操作: (DST) (DST) - (SRC) - CF(3) 减1指令: DEC OPR 执行操作: (OPR) (OPR) - 1,1/131,(4) 求补指令: NEG OPR 执行操作: (OPR) - (OPR)(5) 比较指令: CMP OPR1, OPR2 执行操作: (OPR1) - (OPR2),注意: * 除DEC指令不影响 CF标志外,均对条 件标志位有影响。,1/131,减法指令对条件标志位(CF/OF/ZF/SF)的影响:,CF 位表示 无符号数 减法的溢出。OF 位表示 带符号数 减法的溢出。,1/131,NEG 指令对CF/OF的影响:,1/131,3、乘法指令(1) 无符号数乘法指令: MUL SRC 执行操作: 字节操作数 (AX) (AL) * (SRC) 字操作数 (DX, AX) (AX) * (SRC)(2) 带符号数乘法指令: IMUL SRC 执行操作:同上,注意: * AL (AX) 为隐含的乘数寄存器。* AX (DX,AX) 为隐含的乘积寄存器。* SRC不能为立即数。* 除CF和OF外,对条件标志位无定义。,1/131,1/131,4、除法指令 无符号数除法指令: DIV SRC 执行操作: 字节操作 (AL) (AX) / (SRC) 的商 (AH) (AX) / (SRC) 的余数 字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX) / (SRC) 的余数 带符号数除法指令: IDIV SRC注意: * AX (DX,AX) 为隐含的被除数寄存器。 * AL (AX) 为隐含的商寄存器。 * AH (DX) 为隐含的余数寄存器。 * SRC不能为立即数。 * 对所有条件标志位均无定义。,1/131,5、十进制调整指令BCD码:用二进制编码的十进制数,又称二-十进制数压缩的BCD码:用 4 位二进制数表示 1 位十进制数 例:(59)10 (0101 1001)BCD非压缩的BCD码:用 8 位二进制数表示 1 位十进制数 例:(59)10 (0000 0101 0000 1001)BCD数字的 ASCII 码是一种 非压缩的 BCD 码 DIGIT ASCII BCD030H0011 0000131H0011 0001 939H0011 1001,1/131,例:写出(3590)10的压缩BCD码和非压缩BCD码,并分别 把它们存入数据区 PAKED 和 UNPAK压缩BCD:(3590)10(0011 0101 1001 0000)BCD非压缩BCD: (3590)10(00000011 00000101 00001001 00000000)BCD,1/131,问题的提出:,十进制调整指令,1/131,A、压缩BCD码调整指令: 加法的压缩BCD码调整指令DAA 减法的压缩BCD码调整指令DAS,1/131,(1)加法的十进制调整指令DAA,调整指令:DAA执行操作: 如果AL寄存器中低4位大于9或辅助进位(AF)=1,则(AL)=(AL)+6且(AF)=1; 如果(AL)=0A0H或(CF)=1,则(AL)=(AL)+60H且(CF)=1。同时,SF、ZF、PF均有影响。例:压缩BCD码的加法运算。 MOV AL,68H ;(AL)=68H,表示压缩BCD码68 MOV BL,28H ;(BL)=28H,表示压缩BCD码28 ADD AL,BL ;二进制加法:(AL)=68H+28H=90H DAA ;十进制调整:(AL)=96H ;实现压缩BCD码加法:68+28=96,1/131,(2)减法的十进制调整指令DAS,调整指令: DAS执行操作: 如果(AF)=1或AL寄存器中低4位大于9,则(AL)=(AL)6且(AF)=1;如果(AL)=0A0H或(CF)=1,则(AL)=(AL)60H且(CF)=1。同时SF、ZF、PF均受影响。例:压缩BCD码的减法运算。 MOV AL,68H ;(AL)=68H,表示压缩BCD码68 MOV BL,29H ;(BL)=29H,表示压缩BCD码29 SUB AL,BL ;二进制减法:(AL)=68H29H=03FH DAS ;十进制调整:(AL)=39H ;实现压缩BCD码减法:6829=39,1/131,B、非压缩BCD码调整指令: 加法的非压缩BCD码调整指令AAA 减法的非压缩BCD码调整指令AAS 乘法的非压缩BCD码调整指令AAM 除法的非压缩BCD码调整指令AAD,1/131,(1)加法的非压缩BCD码调整指令AAA 语句格式:AAA 指令功能: 如果AL的低4位大于9或(AF)=1,则: (AL)=(AL)+6 (AH)=(AH)+1 (AF)=(CF)=1 且AL高4位清零。 否则: (CF)=(AF)=0 AL高4位清零。,1/131,(2)减法的非压缩BCD码调整指令AAS 语句格式:AAS 指令功能: 如果AL的低4位大于9或(AF)=1,则: (AL)=(AL)6 (AH)=(AH)1 (AF)=(CF)=1 AL高4位清零。 否则:(CF)=(AF)=0 AL高4位清零。 其他标志位OF、PF、SF、ZF不确定。,1/131,(3)乘法的非压缩BCD码调整指令AAM 语句格式:AAM 指令功能: 被调整的乘积在AX中,对AL按10取模,则: (AL)0AHAH(商):AL(余数) 其中AH为商,AL为余数,标志位AF、CF、OF、 PF、SF、ZF受影响。,1/131,(4)除法的非压缩BCD码调整指令AAD 语句格式:AAD 指令功能: 除法运算前,先调整被除数AX内容,使: (AL)=(AL)+(AH)*0AH (AH)=0 即把非压缩型十进制数变成二进制数。,1/131,三、逻辑指令: 逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR,1/131,1、逻辑运算指令,1/131,例:屏蔽AL的第0、1两位 AND AL, 0FCH例:置AL的第5位为1 OR AL, 20H 例:使AL的第0、1位变反 XOR AL, 3例:测试某些位是0是1 TEST AL, 1 JZ EVEN,1/131,2、移位指令,1/131,循环左移 ROL OPR, CNT循环右移 ROR OPR, CNT带进位循环左移 RCL OPR, CNT带进位循环右移 RCR OPR, CNT,1/131,1/131,四、串处理指令: 设置方向标志指令 CLD、STD 串处理指令 串重复前缀 MOVSB / MOVSW REP STOSB / STOSW REPE / REPZ LODSB / LODSW REPNE / REPNZ CMPSB / CMPSW SCASB / SCASW,1/131,与 REP 配合工作的 MOVS / STOS / LODS REP MOVS / STOS / LODS 执行操作:(1) 如 (CX)=0 则退出 REP,否则转(2)(2) (CX) (CX) -1(3) 执行 MOVS / STOS / LODS(4) 重复 (1) (3),1/131,1、MOVS 串传送指令:MOVS DST, SRCMOVSB (字节)MOVSW (字)例:MOVS ES: BYTE PTR DI, DS: SI 执行操作: (1) (DI) (SI) (2) 字节操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2 方向标志DF=0 时用 + ,DF=1 时用 - 。REP MOVS:将数据段中的整串数据传送到附加段中。 源串(数据段) 目的串(附加段),1/131,执行 REP MOVS 之前,应先做好:(1) 源串首地址(末地址) SI(2) 目的串首地址(末地址) DI(3) 串长度 CX(4) 建立方向标志 ( CLD 使 DF=0,STD 使 DF=1 ),1/131,(SI) (DI),1/131,data segment mess1 db personal_computerdata endsextra segment mess2 db 17 dup (?)extra endscode segment lea si, mess1 lea di, mess2 mov cx, 17 cld rep movsb code ends,1/131,1/131,3、LODS 从串取指令: LODS SRC LODSB (字节) LODSW (字)执行操作: 字节操作:(AL)(SI), (SI)(SI)1 字操作:(AX)(SI), (SI)(SI)2,注意: * LODS 指令一般不与 REP 联用* 源串一般在数据段中(允许使用段跨越前缀来修改), 目的串必须在附加段中* 不影响条件标志位,1/131,与 REPE / REPZ(REPNE / REPNZ)配合工作的 CMPS 和 SCASREPE / REPZ (REPNE / REPNZ) CMPS / SCAS 执行操作: (1) 如 (CX)=0 或 ZF=0 (ZF=1) 则退出, 否则转(2) (2) (CX)(CX) -1 (3) 执行 CMPS / SCAS (4) 重复 (1) (3),1/131,4、CMPS 串比较指令: CMPS SRC, DST CMPSB (字节) CMPSW (字) 执行操作: (1) (SI) - (DI) 根据比较结果置条件标志位:相等 ZF=1 不等 ZF=0 (2) 字节操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2,1/131,5、SCAS 串扫描指令: SCAS DST SCASB (字节) SCASW (字)执行操作: 字节操作:(AL) - (DI), (DI)(DI)1 字操作:(AX) - (DI), (DI)(DI)2,1/131,五、控制转移指令: 无条件转移指令 JMP 条件转移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ 循环指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序调用和返回指令 CALL、RET 中断与中断返回指令 INT、INTO、IRET,1/131,1、无条件转移指令: 段内直接短转移:JMP SHORT OPR 执行操作:(IP) (IP) + 8位位移量 段内直接近转移:JMP NEAR PTR OPR 执行操作:(IP) (IP) + 16位位移量 段内间接转移: JMP WORD PTR OPR 执行操作: (IP) (EA),1/131,段间直接远转移:JMP FAR PTR OPR 执行操作:(IP) OPR 的段内偏移地址 (CS) OPR 所在段的段地址 段间间接转移: JMP DWORD PTR OPR 执行操作: (IP) (EA) (CS) (EA+2),1/131,1/131,(2) 比较两个无符号数,并根据比较结果转移* 格式 测试条件 = JNB(JAE,JNC) OPR CF = 0 JNBE(JA) OPR CFZF = 0* 适用于地址或双精度数低位字的比较,1/131,(3) 比较两个带符号数,并根据比较结果转移* 格式 测试条件 = JNL(JGE) OPR SFOF = 0 JNLE(JG) OPR (SFOF)ZF = 0* 适用于带符号数的比较(4) 测试 CX 的值为 0 则转移 格式 测试条件 JCXZ OPR (CX)=0,1/131,例:如果 X50,转到TOO_HIGH;计算 X-Y,如果溢出 转到 OVERFLOW,否则 |X-Y| RESULT,JGJOJNS,1/131,3、循环指令:注意:* CX 中存放循环次数* 只能使用段内直接寻址的8 位位移量LOOPLOOPZ / LOOPELOOPNZ / LOOPNE 执行步骤: (1) (CX) (CX) - 1 (2) 检查是否满足测试条件,如满足则 (IP) (IP) + 8位位移量,实行循环; 不满足则 IP 不变,退出循环。,先减cx,再判断,1/131,循环指令:LOOP OPR测试条件:(CX) 0为零或相等时循环指令:LOOPZ(LOOPE) OPR测试条件:ZF=1 且 (CX) 0不为零或不相等时循环指令:LOOPNZ(LOOPNE) OPR测试条件:ZF=0 且 (CX) 0,1/131,RET 返回指令段内近返回:RET执行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2段内带立即数近返回:RET EXP段间远返回:RET执行操作: (IP) ( (SP)+1,(SP) ) (SP) (SP) + 2 (CS) ( (SP)+1,(SP) ) (SP) (SP) + 2段间带立即数远返回:RET EXP,1/131,六、处理机控制与杂项操作指令: 标志处理指令 CLC、 STC、 CMC、 CLD、STD、 CLI、STI 其他处理机控制与杂项操作指令 NOP、HLT、WAIT、ESC、LOCK,1/131,1、标志处理指令: CLC CF 0 CMC CF CF STC CF 1 CLD DF 0 STD DF 1 CLI IF 0 STI IF 1 注意: * 只影响本指令指定的标志,1/131,2、其他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多功能农牧机械附件创新创业项目商业计划书
- 农产品自动化清洗流水线创新创业项目商业计划书
- 建筑用金属幕墙系统创新创业项目商业计划书
- 多功能天文摄影滤镜套装创新创业项目商业计划书
- 复古波点腋下包创新创业项目商业计划书
- 《大林和小林》阅读测试题和答案
- (2025年)伤口造口失禁专科护士护理理论考核试题及答案
- 2025年火星探测器的土壤样本微生物分析
- 人教版(2024)八年级上册英语 Unit 2 单元达标测试卷(含答案)
- 2025年黄山辅警协警招聘考试备考题库含答案详解(研优卷)
- 2025年人教版小学五年级语文(上册)期中试卷及答案
- 业主签证管理制度
- 工程试验原材料取样课件
- 外贸公司采购管理制度
- 2025春季学期国开电大专科《中级财务会计(二)》一平台在线形考(第一至四次形考任务)试题及答案
- 2025-2030年中国it服务外包行业市场发展前景及趋势预测与投资分析研究报告
- 建材采购合同协议
- 2024年成都市郫都区卫生健康局招聘基层卫生类人员真题
- 旅行社安全管理制度
- 2024年上海中考数学一模各区18、24、25试题及答案
- 第11课预防食物中毒
评论
0/150
提交评论