第4章汇编语言程序格式 讲授要点 "常用伪指令与操作符。 汇编语言源程序的基本框架。 汇编语言程序的开发过程以及程序的调试方法。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 第4章汇编语言程序格式 讲授要点 ▪ 常用伪指令与操作符。 ▪ 汇编语言源程序的基本框架。 ▪ 汇编语言程序的开发过程以及程序的调试方法
4.1地址计数器 汇编器在将源程序转换为目标程序的过程中,每汇编一个段,都需要跟踪其中代码 或数据的偏移地址,这就是地址计数器。 ■地址计数器的值表示当前偏移地址。在缺省情况下,段的偏移地址从O开始。 例如,下列指令序列 0 mov bl. al 机器码为2字节 an bl Ofh ,机器码为3字节 mov 机器码为2字节 7: bh 4 机器码为3字节 A: 若该指令序列出现在段的开始,那么,在汇编相应指令时,地址计数器的值如左 侧所示。例如,第1条Moⅴ指令始于偏移地址0,由于该MOV指令是2字节,故下 条指令始于偏移地址2,等等。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 4.1 地址计数器 ▪ 汇编器在将源程序转换为目标程序的过程中,每汇编一个段,都需要跟踪其中代码 或数据的偏移地址,这就是地址计数器。 ▪ 地址计数器的值表示当前偏移地址。在缺省情况下,段的偏移地址从0开始。 例如,下列指令序列: 0: mov bl, al ; 机器码为2字节 2: and bl, 0fh ; 机器码为3字节 5: mov bh, al ; 机器码为2字节 7: shr bh, 4 ; 机器码为3字节 A: 若该指令序列出现在段的开始,那么,在汇编相应指令时,地址计数器的值如左 侧所示。例如,第1条MOV指令始于偏移地址0,由于该MOV指令是2字节,故下一 条指令始于偏移地址2,等等
4.2汇编语言语旬 1.语句格式 (1)语句的书写形式 名字助记符操作数注释 (2)MASM对语句格式的要求 ·大小写无关 ·每条语句必须占1行,但可以使用续行符"。 为了提高可读性,应该使各个域对齐。 2.常数与数值表达式 整数。包括二进制、十进制、八进制或十六进制表示的整数。 ■字符与字符串。必须用单引号或双引号括起来。 数值表达式。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 4.2 汇编语言语句 1.语句格式 (1)语句的书写形式: 名字 助记符 操作数 ; 注释 (2)MASM对语句格式的要求: • 大小写无关。 • 每条语句必须占1行,但可以使用续行符“\”。 • 为了提高可读性,应该使各个域对齐。 2.常数与数值表达式 ▪ 整数。包括二进制、十进制、八进制或十六进制表示的整数。 ▪ 字符与字符串。必须用单引号或双引号括起来。 ▪ 数值表达式
3.变量、标号与地址表达式 变量与标号的3种属性:段地址、偏移地址、类型。 变量的类型包括BYTE(字节)、WORD(字)、 DWORD(双字)等。标号的 类型包括NEAR和FAR 地址表达式。 地址表达式的基本形式为 变量名或标号名±常数 其类型由相应的变量或标号确定 ■两个地址表达式的差表示两个地址之间的距离(字节数),两个地址必须在同一 个段内。注意,不能将两个地址表达式相加。 $是一个特殊的地址表达式,表示当前地址,即地址计数器的当前值。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 3.变量、标号与地址表达式 ▪ 变量与标号的3种属性:段地址、偏移地址、类型。 ▪ 变量的类型包括BYTE(字节)、WORD(字)、DWORD(双字)等。标号的 类型包括NEAR和FAR。 ▪ 地址表达式。 地址表达式的基本形式为: 变量名或标号名 ± 常数 其类型由相应的变量或标号确定。 ▪ 两个地址表达式的差表示两个地址之间的距离(字节数),两个地址必须在同一 个段内。注意,不能将两个地址表达式相加。 ▪ $是一个特殊的地址表达式,表示当前地址,即地址计数器的当前值
4.3基本伪指令 1.处理器选择伪指令 在缺省方式下,MASM只承认8086指令 为了使用更高的CPU指令,必须使用处理器选择伪指令,主要包括 8086 .286 86P386386P 486 486P 586 586P 686 686P 分别表示其后面的代码使用相应CPU的指令。其中,结尾的P表示使用特权指令。 若使用32位CP新增指令以及寄存器或内存寻址方式,则至少要用.386伪指令。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 4.3 基本伪指令 1. 处理器选择伪指令 在缺省方式下,MASM只承认8086指令。 为了使用更高的CPU指令,必须使用处理器选择伪指令,主要包括: .8086 .286 .286P .386 .386P .486 .486P .586 .586P .686 .686P 分别表示其后面的代码使用相应CPU的指令。其中,结尾的'P'表示使用特权指令。 若使用32位CPU新增指令以及寄存器或内存寻址方式,则至少要用.386伪指令