历安毛子种枝大学 目录 XIDIAN UNIVERSITY 分支程序设计 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 2
2 1 汇编语言基本概念 2 3 4 分支程序设计 5 总结 数据运算指令与程序设计 数据位操作指令与编程 目录 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
历粤毛子种枚大皇 基础知识导入 XIDIAN UNIVERSITY 8086指令系统中的控制转移指令有两大类: 无条件转移指令:有JMP、CALL、RET、IRET (可以段内/间) ·条件转移指令:如JZ、JC、JCXZ、LOOP等 (只能在段内,且为short?型-指令长度为2字节) 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 3
8086指令系统中的控制转移指令有两大类: • 无条件转移指令:有JMP、CALL、RET、IRET (可以段内/间) • 条件转移指令:如JZ、JC、JCXZ、LOOP等 (只能在段内,且为short型-指令长度为2字节) 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 3 基础知识导入
历些毛子代枝大学 基础知识导入 XIDIAN UNIVERSITY 段内转移=近程转移=NEAR型转移:程序转移后P发生改变, 适用于:条件/无条件转移指令 ·段内转移后,△IP=-128~127:则称为short?型转移,用一 个字节表示。 ·段间转移=远程转移=FAR型转移:程序转移后CS、IP均发 生改变,适用于:条件转移指令 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 4
微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 4 基础知识导入 • 段内转移 =近程转移=NEAR型转移:程序转移后IP发生改变, 适用于:条件 /无条件转移指令 • 段内转移后,△IP=[-128~127]:则称为short型转移,用一 个字节表示。 • 段间转移 =远程转移=FAR型转移:程序转移后CS 、IP均发 生改变,适用于:条件转移指令
历安毛子种枝大学 基础知识导入 XIDIAN UNIVERSITY 助记符格式 功能说明 与 AND DST,SRC (DST)K(DST)∧(SRC) 或 OR DST,SRC (DST)(DST)V(SRC) 异或XOR DST,SRC (DST)K(DST)⊕(SRC) 相同结果为0,不同结果为1 非 NOT DST (DST)中各位取反 测试TEST DST,SRC (DST)∧(SRC) 8086CPU操作对象是字节或字,按位运算。 NOT指令对标志位不产生影响 ,其他逻辑运算指令:CF=OF-O,ZF、SF、PF根据结果改变,AF未定义。 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 5
基础知识导入 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 5 助记符格式 功能说明 与 AND DST,SRC (DST)( DST) ∧ ( SRC) 或 OR DST,SRC (DST)( DST) ∨ ( SRC) 异或 XOR DST,SRC (DST)( DST) ⊕ ( SRC) 相同结果为0,不同结果为1 非 NOT DST (DST)中各位取反 测试 TEST DST,SRC (DST) ∧ (SRC) •8086CPU操作对象是字节或字,按位运算。 •NOT指令对标志位不产生影响 •其他逻辑运算指令:CF=OF=0,ZF、SF、PF根据结果改变,AF未定义
指令助记符 功能 PSW影响 数据来源 ADD DST.SRC (DST)-(SRC)+(DST) 正常设置6个标志位 DST:通用REG、MEM单元 SRC:通用REG、MEM单元、立即数 ADC DST,SRC (DST)-(SRC)+(DST)+(CF) 正常设置6个标志位 DST:通用REG、MEM单元 SRC:通用REG、MEM单元、立即数 INC DST (DST)-(DST)+1 正常设置CF外的5个标志位 DST:通用REG、MEM单元 对CF无影响 SUB DST,SRC (DST)-(DST)-(SRC) 正常设置6个标志位 DST:通用REG、MEM单元 SRC:通用REG、MEM单元、立即数 SBB DST.SRC (DST)-(DST-(SRC)-(CF)正常设置6个标志位 DST:通用REG、MEM单元 SRC:通用REG、MEM单元、立即数 DEC DST (DST)-(DST)-1 正常设置CF外的5个标志位 DST:通用REG、MEM单元 对CF无影响 NEG DST (DST)-0-(DST) 正常设置6个标志位 DST:通用REG、MEM单元 CMP DST.SRC (DST)-(SRC) 正常设置6个标志位 DST:通用REG、MEM单元 SRC:通用REG、MEM单元、立即数 ·SRC和DST不能同时取存储单元。 ·全部按照字型或字节型运算(byte or word) 黑色:不区分有/无符号数
指令助记符 功能 PSW影响 数据来源 ADD DST,SRC (DST) ←(SRC)+(DST) 正常设置6个标志位 DST:通用REG 、MEM单元 SRC:通用REG、MEM单元、立即数 ADC DST, SRC (DST)←(SRC)+(DST)+(CF) 正常设置6个标志位 DST:通用REG 、MEM单元 SRC:通用REG、MEM单元、立即数 INC DST (DST) ← (DST)+1 正常设置CF外的5个标志位 对CF无影响 DST:通用REG、MEM单元 SUB DST, SRC (DST) ←(DST) - (SRC) 正常设置6个标志位 DST:通用REG 、MEM单元 SRC:通用REG、MEM单元、立即数 SBB DST, SRC (DST)←(DST) - (SRC)-(CF) 正常设置6个标志位 DST:通用REG 、MEM单元 SRC:通用REG、MEM单元、立即数 DEC DST (DST) ← (DST)-1 正常设置CF外的5个标志位 对CF无影响 DST:通用REG、MEM单元 NEG DST (DST) ←0- (DST) 正常设置6个标志位 DST:通用REG、MEM单元 CMP DST, SRC (DST)-(SRC) 正常设置6个标志位 DST:通用REG 、MEM单元 SRC:通用REG、MEM单元、立即数 • SRC和DST不能同时取存储单元。 • 全部按照字型或字节型运算(byte or word) • 黑色:不区分有/无符号数
历些毛子种枝大学 4.3.4分支程序设计 XIDIAN UNIVERSITY ●1.无条件转移指令 JMP LABEL;转移到标号LABEL处执行程序 JMP REGI6;转移到由通用寄存器REG指定的位置执行程序 JMP MEM;转移到由存储单元MEM指定的位置执行程序 字单元实现段内转移 双字单元实现段间转移 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 7
1.无条件转移指令 4.3.4 分支程序设计 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 7 JMP LABEL ;转移到标号LABEL处执行程序 JMP REG16;转移到由通用寄存器REG指定的位置执行程序 JMP MEM;转移到由存储单元MEM指定的位置执行程序 字单元实现段内转移 双字单元实现段间转移
三 历忠毛子代枚大学 4.3.4分支程序设计 XIDIAN UNIVERSITY ●1.无条件转移指令 (1)JMP LABEL 这时并不需要特别指出转移指令是Near型、Far型的转移,宏 汇编程序(MASM)会根据标号L1的位置,自动生成相应的 指令代码。 JUMP L1: MOV AX.BX 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 8
1.无条件转移指令 4.3.4 分支程序设计 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 8 (1) JMP LABEL 这时并不需要特别指出转移指令是Near型、Far型的转移,宏 汇编程序(MASM)会根据标号L1的位置,自动生成相应的 指令代码。 . JUMP L1 . . L1: MOV AX, BX
三 历些毛子种枝大学 4.3.4分支程序设计 XIDIAN UNIVERSITY ●1.无条件转移指令 (2)JMP REG16 如果要根据BX的内容进行转移,即BX中存放有转移的目的地 址,则采用JMP BX指令。 MOV BX,2 JMP BX ;转移到CS:0002H 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn9
1.无条件转移指令 4.3.4 分支程序设计 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 9 (2) JMP REG16 如果要根据BX的内容进行转移,即BX中存放有转移的目的地 址,则采用 JMP BX指令。 MOV BX, 2 JMP BX ;转移到CS:0002H
历安毛子代枚大学 4.3.4分支程序设计 XIDIAN UNIVERSITY 1.无条件转移指令 (3)JMP MEM 设字变量VAR1存放有转移的目的偏移地址, 则可以采用JMP VAR1完成程序的段内转移 设双字变量VAR2存放有转移的目的段地址和偏移地址, 则可以采用JMP VAR2完成程序的段间转移 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 10
1.无条件转移指令 4.3.4 分支程序设计 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 10 (3) JMP MEM 设字变量VAR1存放有转移的目的偏移地址, 则可以采用 JMP VAR1 完成程序的段内转移 设双字变量VAR2存放有转移的目的段地址和偏移地址, 则可以采用 JMP VAR2 完成程序的段间转移
历些毛子种枝大学 4.3.4分支程序设计 XIDIAN UNIVERSITY 1.无条件转移指令 DBTI DW 0400H DBT2DD01000020H TAB DW 0600H,0640H,06AOH 则在代码段中有: 段地址不变 MOV BX,2 JMP DBTI ;转移到CS:0400H JMP DBT2 ;转移到0100:0020H JMP TAB[BX+2] ;转移到CS:06A0H JMP WORD PTR[BX] :转移到本段,偏移地址保存在DS:0002H 与DS:0003H中 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 11
1.无条件转移指令 4.3.4 分支程序设计 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 11 DBT1 DW 0400H DBT2 DD 01000020H TAB DW 0600H,0640H,06A0H 则在代码段中有: MOV BX, 2 JMP DBT1 JMP DBT2 JMP TAB[BX+2] JMP WORD PTR[BX] 段地址不变 ;转移到CS:0400H ;转移到0100:0020H ;转移到CS:06A0H ;转移到本段,偏移地址保存在DS:0002H 与DS:0003H中