[小学教育]第三章 8086指令系统.ppt_第1页
[小学教育]第三章 8086指令系统.ppt_第2页
[小学教育]第三章 8086指令系统.ppt_第3页
[小学教育]第三章 8086指令系统.ppt_第4页
[小学教育]第三章 8086指令系统.ppt_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及接口技术 第三章 第三章 8086的寻址方式 和 指令系统 微机原理及接口技术 第三章 1. 基本概念 2. 8086 CPU的寻址方式 3. 数据传送指令 4. 数据操作指令 5. 串操作指令 6. 控制类指令 微机原理及接口技术 第三章 3.1 概 述 1. 指令 (Instruction): 让计算机完成某种操作的命令。 2. 指令系统 (Instruction System): 指令的集合。 微机原理及接口技术 第三章 3. 8086汇编语言指令的语句格式 标号: 指令助记符操作数 ;注释 (1) 标号:指令所在地址的符号,符合以下规则: 由字母(az, AZ)、数字(09)或某些特殊 字符(,_,?) 等组成; 首字符是字母或某些特殊字符,但“ ?”不能单 独作标识符; 有效长度为131个字符。 微机原理及接口技术 第三章 (2) 指令助记符:指出指令的操作类型。 (3) 操作数:参加本指令运算的数据。 (4) 注释:指令功能的说明。 微机原理及接口技术 第三章 4. 有效地址EA(Effective Address) 内存单元的地址:段基址 16 + 段内偏移量 EA 微机原理及接口技术 第三章 5. 指令包含的信息 (1) 做什么操作 (2) 操作数的来源 (3) 操作结果的存储 (4) 下一条指令的位置 微机原理及接口技术 第三章 3.2 寻址方式 1. 立即数寻址 (操作数在指令中,紧跟在操 作码的后面)。 MOV AL,80H;80H AL MOV AX,1090H;1090H AX OP 90H 10H 码段 AH AL 微机原理及接口技术 第三章 2. 直接寻址 操作数地址的EA直接包含在指令中。 (1) MOV AX,2000H;DS:2000H AX OP 00H 20H 50H 30H 码段 数据段 设DS 3000H AHAL 32000H 微机原理及接口技术 第三章 (2) CS: MOV BX,3000H;CS: 3000H BX 00H 10H 码段 BH BL 54000H 54001H 设CS 5100H 微机原理及接口技术 第三章 3. 寄存器寻址 操作数在CPU的某个寄存器中,指令 中指出该寄存器名。 MOV DS,AX;AX DS INC CX;CX+1 CX 微机原理及接口技术 第三章 4. 寄存器间接寻址 操作数在存储器中,EA由寄存器指出。 MOV AX,SI;DS: SI AX MOV AX,BP;SS: BP AX (1) EA = BX SI DI 若没有前缀指明具体的段寄存器 ,则操作数在数据段中 (2) EA = BP 若没有前缀指明具体的段寄存器 ,则操作数在堆栈段。 微机原理及接口技术 第三章 5. 寄存器相对寻址 MOV AX,BX+2000H XX XX 码段 AH AL 36000H 36001H 00H 20H 数据段 DS = 3000H BX = 4000H 微机原理及接口技术 第三章 (1) 若EA = BX SI DI + 8位或16位偏移量 则操作数地址 DS: EA 微机原理及接口技术 第三章 (2) 若EA = BP + 8位或16位偏移量 则操作数地址:SS: EA 微机原理及接口技术 第三章 6. 基址加变址寻址 8086CPU中,BX,BP 基址寄存器 SI,DI 变址寄存器 微机原理及接口技术 第三章 (1) 若EA = BX + SI DI 则操作数地址:DS: EA 例 MOV AX,BX+SI 若 DS = 1000H, BX = 5000H, SI = 2000H 则 EA = 5000H + 2000H = 7000H 操作数地址 10000H + 7000H = 17000H 17000H AL 17001H AH 微机原理及接口技术 第三章 (2) 若EA = BP + SI DI 则操作地址:SS: EA 7. 相对的基址加变址寻址 则操作数地址:DS: EA 例 MOV AX,BX+SI+0250H 若 DS = 3000H, BX = 2000H, SI = 1000H 则操作数 PA=30000H+2000H+1000H+250H=33250H (1) 若EA = BX + SI DI + 8位或16位偏移量 微机原理及接口技术 第三章 (2) 若EA = BP + SI DI 则PA = SS 16 + EA + 偏移量 8086操作数寻址方式小结: 数据 EA数据 寄存器数据 寄存器EA数据 寄存器位移量 地址 数据 指令 指令内存 指令寄存器 寄存器指令内存 指令 内存 + (a) (b) (c) (d) (e) 基址寄存器变址寄存器变址值 基址值 数据 内存 + 基址寄存器变址寄存器位移量 变址值 数据 内存 + 基址值 EA 指令 指令 (f) (g) 8086寻址方式 微机原理及接口技术 第三章 3.3 数据传送指令 分为四类 通用数据传送指令 目标地址传送指令 标志位传送指令 输入/输出指令 微机原理及接口技术 第三章 一、通用数据传送指令 1. 最基本的传送指令 MOV 实现CPU内部寄存器之间的数据传送 MOV AL,BL;BL AL MOV ES,DX;DX ES MOV BX,DI;DI BX 微机原理及接口技术 第三章 实现寄存器与内存单元之间的数据传送 MOV DI,AX;AX DI DI+1 MOV CX,1000H; 1000H 1001H CX MOV AX,BX; BX+1 AX BX 微机原理及接口技术 第三章 把一个立即数传送给CPU内部寄存器或内存单元。 MOV BL,40H;40 BL MOV DX,5040H;5040H DX MOV AX,03FFH;03FFH AX MOV SI,6070H; SI SI+1 6070H 微机原理及接口技术 第三章 2. 堆栈操作指令 (1) 对堆栈的认识 堆栈是按照“ 后进先出”(Last in First out) 原 则组织的一段特殊的内存区域。 堆栈由SP自动管理,SP始终指向当前的栈顶。 堆栈主要用于中断调用,子程序调用以及数 据的暂时存储等。 堆栈有压入和弹出两种操作。 8086CPU的堆栈在压栈时,由上往下生长(堆 栈指针减量修改)。 (2) 入栈指令 PUSH PUSH CX 若已知SS=0200H, SP=0008H, CX=12FAH, 操作示意图如图5.2所示 : 0200 0008 12FA 2000SS段 首地址 新栈顶FA 12 原栈顶 2006 2007 2008 + 2 SS SP CX 12FAH PUSH CX 的 操作过程 (3) 出栈指令POP POP CX 操作示意图 如图5.3所示 : 0200 0006 12FA2000SS段 首地址 原栈顶FA 12 新栈顶 2006 2007 2008 + +2 SS SP CX 12FAH POP CX的操作过程 16 微机原理及接口技术 第三章 3. 交换指令 XCHG 可以实现字节交换,也可以实现字交换。 XCHG AL,BL;AL BL XCHG BX,CX;BX CX XCHG 2530H,CL;2530H CL 可以实现CPU内部寄存器之间,寄存器与内 存单元之间的数据交换,但不能实现两个内存单 元之间的数据交换。 微机原理及接口技术 第三章 4. 换码指令 XLAT XLAT;BX+AL AL 可以使AL中的值变换为内存表格中的某一 个值,实现码制的转换,又称查表指令。 例如:用XLAT将数字09转换为七段显示码。 表3.1 十进制数的七段显示码 十进制数字 七段显示码 gfedcba g bf e d c a 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 微机原理及接口技术 第三章 (1) 建立内存表格 (长度 256),使BX指向表首。 (2) 数字入AL中。 (3) XLAT指令查表转换, MOV BX,2000H MOV AL,2 XLAT BX2000H40H 79H 24H 10H “ 0” “ 1” “ 2” “ 9” 微机原理及接口技术 第三章 二、目标地址传送指令 1. 取有效地址指令LEA (Load Effective Address) 将内存操作数的EA送到一个16位的通用寄存器中 。 LEA AX,2728H;将2728H单元的EA,即 2728H AX。 LEA BX,BP+SI;指令执行后,BX=BP+SI。 LEA SP,0400H;使SP=0400H 微机原理及接口技术 第三章 2. LDS (Load pointer into DS) 把地址指针 DS和另一个寄存器中 LDS DI,2130H DS: 2130H 偏移量 DI 段基址 DS 微机原理及接口技术 第三章 3. LES (Load pointer into ES) 将地址指针 ES和另一个寄存器 LES DI,BX AEH 05H 00H 40H B080AH 偏移量 DI 段基址 ES 若DS=B000H, BX=080AH B080AH=05AEH B080CH=4000H 微机原理及接口技术 第三章 三、标志位传送指令 1. 读取标志指令LAHF (Load AH with Flags) D15D8D7D0 FR AH 微机原理及接口技术 第三章 2. 设置标志指令SAHF (Store AH into Flags) D15D8D7D0 FR AH 微机原理及接口技术 第三章 3. 标志寄存器入栈指令PUSHF FR07新栈顶 FR815 原栈顶 SP 微机原理及接口技术 第三章 4. 标志寄存器出栈指令 POPF 原栈顶 新栈顶 D15D8D7D0 FR 微机原理及接口技术 第三章 四、输入输出指令 I/O指令完成AL(AX)与I/O口之间的数据传送。 端口地址可以用 1. 8位立即数寻址 2. DX间址 微机原理及接口技术 第三章 1. IN指令 IN AL,70H;70H端口输入数据 AL IN AX,80H;80H端口输入数据 AL 81H端口输入数据 AH IN AL,DX;DX指定端口数据 AL 微机原理及接口技术 第三章 2. OUT指令 OUT 40H,AL;AL 40H端口 OUT 80H,AX;AL 80H端口 AH 81H端口 OUT DX,AL;AL DX指定的端口 微机原理及接口技术 第三章 数据传送指令小结 表32 数据传送指令 指令类型指令格式指令功能 状态标志位 通用 数据传送 目标 地址传送 标志位 传送 I/O 数据传送 MOV 目标, 源 PUSH 源 POP 目标 XCHO 目标, 源 XLAT LEA 目标, 源 LDS 目标, 源 LES 目标, 源 LAHF SAHF PUSHF POPF IN 累加器, 端口 OUT 端口, 累加器 传送字节或字 字压入堆栈 字弹出堆栈 交换字节或字 字节翻译 装入有效地址 装入数据段指针到DS 装入附加段指针到ES 把FR低字节装入AH寄存器 把AH内容装入FR 低字节 把FR内容装入堆栈 从堆栈弹出FR内容 输入字节或字 输出字节或字 OSZAPC 注: 运算结果影响标志位 运算结果不影响标志位 微机原理及接口技术 第三章 3.4 数据操作类指令 两类 算术运算指令 逻辑运算指令和移位指令 微机原理及接口技术 第三章 一、算术运算指令 包括加、减、乘、除和十进制调整五类指令。 1. 加法指令 1) 不带进位的加法指令ADD(Addition) ADD AL,50H; AL+50HAL ADD CX, 1000H; CX+1000H CX ADD SI, DI; SI+DI SI ADD BX+DI, AX; BX+DI BX+DI+1 +AX BX+DI BX+DI+1 ADD AX, 2000H 微机原理及接口技术 第三章 (2) 带进位位加法指令 ADC (Add with Carry) ADC AX, SI; AX+SI+CFAX ADC BX, 3000H;BX+3000H+CFBX ADC AL, SI; AL+SI+CFAL ADC 指令主要用于多字节的加法运算。 微机原理及接口技术 第三章 (3) 增量指令 INC (Increment) INC AL; AL+1AL INC CX; CX+1CX INC BYTE PTR BX+DI+500H; 数据段中BX+DI+500H单元的内容加1 。INC指令又称加1指令。 微机原理及接口技术 第三章 2. 减法指令 (1) 不带借法的减法指令SUB (Subtraction) SUB BX, CX; BX-CXBX SUB BP+2, CL; SS: (BP+2) -CL SS: (BP+2) SUB AL, 20; AL-20 AL SUB WORD PIRDI, 1000H 微机原理及接口技术 第三章 (2) 带借位的减法指令SBB (Subtract with Borrow) SBB AX, 2030H; AX-2030H-CFAX SBB WORD PTR DI+2, 1000H SBB指令多用于多字节的减法操作。 微机原理及接口技术 第三章 (3) 减量指令DEC (Decrement) DEC AX; AX-1 AX DEC BL; BL-1 BL DEC BYTE PTRDI+2, DI+2-1 DI+2 微机原理及接口技术 第三章 (4) 取补指令NEG (Negate) NEG AL; AL取负 AL NEG CX;CX取负 CX 例 MOV AL,7FH NEG AL;AL81H 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 微机原理及接口技术 第三章 (5) 比较指令 CMP (Compare) CMP指令使两操作数做减法操作,但 不送回相减的结果,只影响标志位。 CMP AX, 2000H;AX-2000H CMP AL, 50H CMP AX, BX+DI+100 CMP DX, DI 微机原理及接口技术 第三章 CMP指令执行后对标志位的影响 目的操作数与源操作数关系CF ZF SF OF 带符号 位的操 作数 不带符 号位的 操作数 目的操 作数 源操作数 目的操 作数 源操作数 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 微机原理及接口技术 第三章 3. 乘法指令 乘法指令中只指定一个操作数,另一操 作数是隐含的,为AL或AX。 两个8位数乘法 操作数 (8位) (8位) (16位) AL AL AH 两个16位数乘法 操作数 (16位) (16位) (32位) AX AX DX 微机原理及接口技术 第三章 (1) 不带符号数乘法 MUL (Multiplication) MUL 源操作数 源操作数可以是寄存器操作数或存储器 操作数。 MUL BL MUL BYTE PTR SI MUL BX 微机原理及接口技术 第三章 (2) 带符号数乘法IMUL (Integer Multiplication) 完成两个带符号数相乘,其它约定同MUL 指令。 微机原理及接口技术 第三章 4. 除法指令 除法指令也只指定一个操作数,另一 操作数是隐含的。 8位除法 AL (8位)操作数 AH AL AH余数 . 微机原理及接口技术 第三章 16位除法 AX (16位)操作数DX AX DX余数 . 商 微机原理及接口技术 第三章 (1) 无符号数除法 DIV (Division) (2) 带符号数除法 IDIV (Integer Division) DIV CL DIV BX IDIV BL IDIV CX 微机原理及接口技术 第三章 在除法运算时,若除数为8位,则要 求被除数是16位,若除数为16位,则要求 被除数是32位。如果被除数位数不够,要 先扩展,可以使用下面(3), (4)两条指令。 微机原理及接口技术 第三章 (3) CBW (Convert Byte to Word) 若AL9或AF=1 则 AL+6AL AH+1AH AL AND 0FHAL 所以调整以后 AH=0000 0001 B 1 AL=0000 0011 B 3 微机原理及接口技术 第三章 (3) AAS (unpacked BCD ASCII adjust for Subtraction) 减法的ASCII码调整 对AL中由两个未组合的BCD数相减的 结果进行调整。 微机原理及接口技术 第三章 (4) DAS (Decimal Adjust for Subtraction) 对AL中由两个组合的十进制数相减 以后的结果进行调整。 减法的十进制调整 微机原理及接口技术 第三章 (5) AAM (unpacked BCD ASCII adjust for multiplication) 能对AX中由两个未组合的十进制 数相乘的结果进行调整,得到正确的 结果(高位在AH,低位在AL中)。 乘法的ASCII码调整 微机原理及接口技术 第三章 MOV AL, 08H 89=72, 即AL=72=48H MOV BL, 09H MUL BL AAM 调整AL/0AH=48H/0AH = 7AH (商) 2AL (余数) 微机原理及接口技术 第三章 (6) AAD (unpacked BCD ASCII adjust for division) 除法的ASCII码调整 把AX中两位未组合的十进制数在相 除之前进行调整,相除之后可以得到正 确的结果。 微机原理及接口技术 第三章 例:MOV AX,0702H;未组合的BCD数72 AAD;AH0AH+AL=710+2=72=48H AL,0 AH MOV BL,09H;除数为9 DIV BL;72/9=8 0100 1000 1001 1000AL . 0AH 算术运算指令小结 指令类型指令格式指令功能 状态标志位 加法 减法 乘法 ADC 目标, 源 ADC 目标, 源 INC 目标 SUB 目标, 源 SBB 目标, 源 DEC 目标 NEG 目标 CMP目标, 源 MUL 源 IMUL 源 加法(字节/字) 带进位加法(字节/字) 加1(字节/字) 减法(字节/字) 带借位减法(字节/字) 减1 (字节/字) 取补 比较 不带符号乘法(字节/字) 带符号整数乘法(字节/字) OSZAPC 注: 运算结果影响标志位 标志位为任意值 运算结果不影响标志位“ 1” 将标志位置1 1 * * 算术运算指令小结 指令类型指令格式指令功能 状态标志位 除法 十进制 调整 DIV 源 IDIV 源 CBW CWD AAA DAA AAS DAS AAM AAD 不带符号除法(字节/字) 带符号整数除法(字节/字) 字节转换成字 字转换成双字 加法的ASCII 码调整 加法的十进制调整 减法的ASCII 码调整 减法的十进制调整 OSZAPC 注: 运算结果影响标志位 标志位为任意值 运算结果不影响标志位“ 1” 将标志位置1 乘法的ASCII 码调整 除法的ASCII 码调整 1 微机原理及接口技术 第三章 二、逻辑运算与移位指令 (一) 逻辑运算指令 1. AND指令 AND AL,0FH;AL0FHAL AND AX,BX;AX BXAX AND DX,BX+SI; DX与数据段中BX+SI间 址的两单元相与,结果送DX中。 微机原理及接口技术 第三章 2. OR指令 OR AL,0FH;ALV0FAL OR AX,0FF00H;AXVFF00HAX 微机原理及接口技术 第三章 3. XOR指令 XOR AL,0FH;AL0FAL XOR CX,1000H;CX1000HCX 微机原理及接口技术 第三章 4. TEST指令 与AND指令做类似的操作,但不送回 操作结果,仅仅影响有关标志位。 TEST AX,8000H;AX8000H TEST AL,01H;AL 01H 微机原理及接口技术 第三章 5. NOT指令 NOT指令只有一个操作数,求反送回。 NOT AL;ALAL NOT BX;BXBX NOT WORD PTR 1000H; 1000H 1000H 1001H 1001H 微机原理及接口技术 第三章 (二) 移位指令 1. 非循环移位指令 指令的类型 SAL (Shift Arithmetic Left)算术左移 SHL (Shift Logic Left) 逻辑左移 SAR (Shift Arithmetic Right) 算术右移 SHR (Shift Logic Right) 逻辑右移 微机原理及接口技术 第三章 指令的功能: SAR指令 CF SAL和SHL指令 CF 0 微机原理及接口技术 第三章 SHR指令 CF 移位指令会影响FR中的CF、OF 、PF、SF、ZF等标志。 0 微机原理及接口技术 第三章 指令的形式 MOV CL,05H SAL AL,CL; 移位多于1次,先把移位 ; 次数放入CL中。 四种指令的形式类似,以SAL为例说明: SAL DX,1;算术左移1位 微机原理及接口技术 第三章 2. 循环移位指令 指令的类型 ROL (Rotate Left) 不带CF的小循环左移 ROR (Rotate Right) 不带CF的小循环右移 RCL (Rotate through CF Left) 带CF的大循环左移 RCR (Rotate through CF Right) 带CF的大循环右移 微机原理及接口技术 第三章 指令的功能 ROL指令 CF RCL指令 CF 微机原理及接口技术 第三章 ROR指令 CF RCR指令 CF 指令的形式同SAL指令 指令类型指令格式指令功能 状态标志位 逻辑 运算 移位 循环 移位 NOT 目标 AND 目标, 源 OR 目标, 源 XOR 目标, 源 TEST 目标, 源 SHL 目标, 计数值 SAL 目标, 计数值 SHR 目标, 计数值 SAR 目标, 计数值 ROL 目标, 计数值 非(字/字节) 与(字/字节) 或(字/字节) 异或(字/字节) 测试(字/字节) 逻辑左移(字/字节) 算术左移(字/字节) 逻辑右移(字/字节) 算术右移(字/字节) 循环左移(字/字节) OSZAPC 注: 运算结果影响标志位 标志位为任意值 运算结果不影响标志位“ 0” 将标志位置0 逻辑运算和移位指令小结: ROR 目标, 计数值 RCL 目标, 计数值 RCR 目标, 计数值 循环右移(字/字节) 带进位循环左移(字/字节) 带进位循环右移(字/字节) 00 00 00 00 微机原理及接口技术 第三章 3.5 串操作指令 串操作即用一条指令对一串字符或数据 的操作。 1. 串操作指令的类型 MOVS (Move String) CMPS (Compare String) SCAS (Scan String) LODS (Load String) STOS (Store String) 微机原理及接口技术 第三章 2. 串操作指令的特点: 若源串与目的串在同一段中,可使DSES。 可以对字节串或字串进行操作 用DS:SI对源操作数寻址; 用ES:DI对目的操作数寻址。 微机原理及接口技术 第三章 串操作时,地址的修改方向与FR中的DF有关。 若DF1,SI,DI自动减量修改; DF0,SI,DI自动增量修改。 可以加重复前缀实现串操作,即满足某种条 件时,重复执行指令。重复前缀有REP, REPE/REPZ, REPNE/REPNZ。 微机原理及接口技术 第三章 串指令中有些参数是隐含的,如下表所示。 源字符串的起始地址 目标字符串的起始地址 重复次数 SCAS指令的扫描值 LODS指令的目的操作数 STOS指令的源操作数 地址指针修改方向 DS:SI ES:DI CX AL/AX AL/AX AL/AX DF0,SI、DI自动增量 DF1,SI、DI自动减量 微机原理及接口技术 第三章 3. 字符串的传送 MOVSB;字节串传送, DS:SI ES:DI DS:SI+1 ES:DI+1 SI 2 SI, DI2 DI. MOVSW;字串传送; DS:SIES:DI SI1 SI, DI 1 DI 源串 目的串 令DF0或1 源串 目的串 SI,DI增量修改 令DF0 源串 目的串 令DF1 SI,DI作减量修改 微机原理及接口技术 第三章 4. 字符串的存 STOSB;ALES: DI, DI1 DI STOSW; AL ES: DI, AH ES: DI+1, DI 2 DI 微机原理及接口技术 第三章 例: CLD;0DF LEA DI,0400H; 0400H DI MOV CX, 0080H; 80H=128 XOR AL, AL; ALAL AL REP STOSB; 把从0400H开始的128个单元清0 *REP无条件重复CX中指定的次数。 微机原理及接口技术 第三章 5. 字符串的取 LODSW; 读字串, DS: SIAL, DS:SI+1AH, SI 2 SI LODSB;读字节串, DS: SI AL, SI1 SI 微机原理及接口技术 第三章 6. 字符串的扫描 从目标串中查找某个关键字(预先存入AL或 AX中)。 SCASW; AX 影响FR,DI 2 DI SCASB;ALES: DI影响FR, DI1 DI 微机原理及接口技术 第三章 可以加重复前缀,REPNE/REPNZ REPNE SCASB REPNE SCASW 当串未结束(cx0)且串元素不等于关键 字 (ZF=0)时,重复执行,也即在目的串中 找出第一个与关键字相同的元素。 微机原理及接口技术 第三章 可以加重复前缀 REPE/REPZ REPE SCASB REPE SCASW 用来在目的串中找出第一个不等于关 键字的元素。 微机原理及接口技术 第三章 7. 字符串的比较 CMPSB, CMPSW 将源串的一个元素减去目的串对应的 一个元素,但不送回结果,仅仅影响FR, 并且自动修改SI,DI地址指针。 微机原理及接口技术 第三章 加重复前缀 REPE/REPZ REPE CMPSB REPE CMPSW 用于查找两串中第一个不同的元素。 微机原理及接口技术 第三章 加重复前缀 REPNE/REPNZ REPNE CMPSB REPNZ CMPSW 用于查找两串中第一个相同的数据。 例:检查一段被传送的数据是否与源串相同。 CLD MOV CX,100 MOV SI,2400H MOV DI,1200H REPE CMPSB;串比较,直到ZF0或CX0 AND CX,0FFFFH JZ SAME DEC SI MOV BX,SI;第一个不同数据所在地址BX MOV AL,SI; AL JMP STOP SAME: MOV BX, 0; 两串相同,0 BX STOP: HLT 微机原理及接口技术 第三章 串操作指令小结 指令类型指令格式指令功能 状态标志位 基本字符串操作 重复 前缀 MOVSB MOVSW CMPSB CMPSW SCASB SCASW LODSB LODSW STOSB STOSW 字节串传送 字串传递 字节串比较 字串比较 字节串扫描 节串扫描 读字节串 读字串 写字节串 写字串 OSZAPC 注: 运算结果影响标志位 运算结果不影响标志位 REP REPE/REPZ REPNZ/REPNE 无条件重复 相等且CX0时重复 不相等且CX0时重复 微机原理及接口技术 第三章 3.6 程序控制指令 程序控制指令用来控制程序的流向。 一、有关概念 1. 程序转移的实现 指令的地址:CS:IP 因此可以改变IP的值或CS与IP的值来 实现程序的转移。 微机原理及接口技术 第三章 2. 段内转移和段间转移 段内转移:只改变IP的值,转移范围64K。若 转移范围在128+127之间,又称 短转移。 段间转移:同时改变CS和IP的值。 3. 直接转移和间接转移 直接转移:转移的目标地址信息直接出现在指令 的机器码中。 间接转移:转移的目标地址间接存储于某一寄存 器中或某一内存变量中。 微机原理及接口技术 第三章 4. 相对转移和绝对转移 相对转移:新的IP值是当前IP的值增加或减少 某一个值得到的。 绝对转移:用新的值完全代替当前的IP值。 在8086系统中,所有的段内直接转移都是 相对转移,所有的段内间接转移和段间转移都 是绝对转移。 微机原理及接口技术 第三章 二、无条件转移指令 1. JMP目标标号 段内直接转移 JMP SHORT 目标标号;IP+8位编移量IP JMP NEAR PTR目标标号;IP+16位编移量 IP 微机原理及接口技术 第三章 段内间接转移 例:JMP BX 若 CS=1200H, BX=3502H, 则该指令执行后,下一条指令的地址 12000H+3502H=15502H 微机原理及接口技术 第三章 段间直接转移 JMP FAR PTR ADDR 该指令执行后,下一条指令的地址 =65000H+020CH=6520CH ADDR 新的IP=020CH 新的CS=6500H 0CH 02H 00H 65H 微机原理及接口技术 第三章 段间间接转移 JMP BX+ADDR3 若DS=2000H, BX=1400H, ADDR3=020AH, 则目标地址所在存储单元的首地址 =20000H+1400H+020AH=2160AH 2160AH 新的IP=1500H 新的CS=2100H 00H 15H 00H 21H 该指令执行后,下一条指令的地址:2100H:1500H 微机原理及接口技术 第三章 2. 子程序(过程)调用指令CALL CALL 过程名 3. 子程序(过程)调用返回指令RET 断点 CALL指令 主程序 子程序 RET指令 微机原理及接口技术 第三章 三、条件转移指令 条件:CPU中FR的某些标志位的状态,可 以是单个标志,也可以是若干标志 的组合。 所有的条件转移指令都是短

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论