第3章80X86指令系统 讲授要点 3种操作数(立即数、寄存器和内存操作数)的形式。 常用指令的格式、功能以及对CF、OF、SF、ZF的影响。 使用指令时容易犯的错误。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 第3章 80x86指令系统 讲授要点 ▪ 3种操作数(立即数、寄存器和内存操作数)的形式。 ▪ 常用指令的格式、功能以及对CF、OF、SF、ZF的影响。 ▪ 使用指令时容易犯的错误
3.1指令格式 1.指令的书写格式 标号:指令助记符 操作数 ;注释 2.操作数的3种形式: 立即操作数:指令的操作数是立即数,并直接出现在指令中。 寄存器操作数:操作数是寄存器的值,指令中使用寄存器名。 ■内存操作数:操作数是某个内存单元的值,指令中给出有效地址EA,段地址在某个段寄 存器中。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 3.1 指令格式 1.指令的书写格式 标号: 指令助记符 操作数 ; 注释 2.操作数的3种形式: ▪ 立即操作数:指令的操作数是立即数,并直接出现在指令中。 ▪ 寄存器操作数:操作数是寄存器的值,指令中使用寄存器名。 ▪ 内存操作数:操作数是某个内存单元的值,指令中给出有效地址EA,段地址在某个段寄 存器中
3.2操作数的形式 3.2.18086指令的操作数形式 1.立即数:8位或16位立即数。 说明 2.寄存器操作数: Variable是变量名或变量名±整数表达式 8位/16位通用寄存器和段寄存器reg为BX、BP、SI、D (除了FS和GS)。 "disp可以是常量或变量,汇编后为一个常数,若 3.内存操作数 是变量,则取其偏移地址。 包括下列几种形式。 a base为BX或BP, index为SDI Variable或[ Variable] 有效地址为各项之和。如 disp[base][index形式 [reg] EA=base+ index+disp。 disp[reg 若使用了BP,则隐含段地址在SS,否则在DS。 [baseline ■当段地址不在隐含的段寄存器时,可使用段超越 前缀,形式为 disp[base][index] 段寄存器名 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 3.2 操作数的形式 3.2.1 8086指令的操作数形式 1.立即数: 8位或16位立即数。 2.寄存器操作数: 8位/16位通用寄存器和段寄存器 (除了FS和GS)。 3.内存操作数 包括下列几种形式。 Variable 或 [Variable] [reg] disp[reg] [base][index] disp[base][index] 说明: ▪ Variable是变量名或变量名 ± 整数表达式。 ▪ reg为BX、BP、SI、DI。 ▪ disp可以是常量或变量,汇编后为一个常数,若 是变量,则取其偏移地址。 ▪ base为BX或BP,index为SI或DI。 ▪ 有效地址为各项之和。如disp[base][index]形式, EA = base + index + disp。 ▪ 若使用了BP,则隐含段地址在SS,否则在DS。 ▪ 当段地址不在隐含的段寄存器时,可使用段超越 前缀,形式为: 段寄存器名:
3.2.232位CPU扩展的操作数形式 1.立即数:32位立即数 2寄存器操作数:32位通用寄存器以及F和GS。说明: 3.内存操作数 base、 index为任-32位通用 寄存器( index不能取ESP)。 包括下列几种形式。 n为比例因子,取1、2、4或8 [base] 若包含base且base为EBP或 disp[base ESP,则隐含段地址在SS;否则, [basel[index] 隐含段地址在DS。 disp[base][index] 若在16位CPU上编程,则不能 使用这些寻址方式 [index*n] lisp[index*n Tbaselindex*n disp[base][index*n 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 3.2.2 32位CPU扩展的操作数形式 1.立即数: 32位立即数。 2.寄存器操作数: 32位通用寄存器以及FS和GS。 3.内存操作数 包括下列几种形式。 [base] disp[base] [base][index] disp[base][index] [index*n] disp[index*n] [base][index*n] disp[base][index*n] 说明: ▪ base、index为任一32位通用 寄存器(index不能取ESP)。 ▪ n为比例因子,取1、2、4或8。 ▪ 若包含 base 且 base 为 EBP 或 ESP,则隐含段地址在SS;否则, 隐含段地址在DS。 ▪ 若在16位CPU上编程,则不能 使用这些寻址方式
3.3指令系统 介绍设计完整程序所需的常用指令,对于其余指令,一部分在后续章节中讲授,一部分自 学。 介绍常用指令的格式、功能以及对CF、OF、SF、ZF的影响。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 3.3 指令系统 ▪ 介绍设计完整程序所需的常用指令,对于其余指令,一部分在后续章节中讲授,一部分自 学。 ▪ 介绍常用指令的格式、功能以及对CF、OF、SF、ZF的影响