ASSUME段分配 格式:ASSUME段寄存器名:段名,. 功能:指定分段寄存器,说明哪个段使用哪个段 寄存器。 ● 说明: ①程序段必须用CS,堆栈段必须用SS ● ②该语句一般放在代码段的最前面 ③说明性语句,除CS外(初始化赋值),各段 寄存器在程序中赋值。 ④取消语句:ASSUME NOTHING Ji Lin University China COMPUTER SCIENCE山DY室CHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY ASSUME段分配 • 格式:ASSUME 段寄存器名:段名,…… • 功能:指定分段寄存器,说明哪个段使用哪个段 寄存器。 • 说明: • ①程序段必须用CS,堆栈段必须用SS • ②该语句一般放在代码段的最前面 • ③说明性语句,除CS外(初始化赋值),各段 寄存器在程序中赋值。 • ④取消语句:ASSUME NOTHING
一般汇编格式举例 DATA1 SEGMENT‘DATA' DATA1 ENDS DATA2 SEGMENT EXTRA' DATA2 ENDS DATA3 SEGMENT‘DATA' DATA3 ENDS CODE SEGMENT CODE' ASSUME CS:CODE,DS:DATA1,ES:DATA3,SS:DATA2 START:MOV AX,DATA1 MOV DS,AX ;数据段地址赋给DS MOV AX,DATA2 MOV SS,AX ;堆栈段地址赋给SS MOV AX,DATA3 MOV ES,AX ;附加段地址赋给S … MOV AH,4CH INT 21H ;返回DOS CODE ENDS ENDiSTABTity China COMPUTER SCIENCE AND TECHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 一般汇编格式举例 DATA1 SEGMENT ‘DATA’ … DATA1 ENDS DATA2 SEGMENT ‘EXTRA’ … DATA2 ENDS DATA3 SEGMENT ‘DATA’ … DATA3 ENDS CODE SEGMENT ‘CODE’ ASSUME CS:CODE,DS:DATA1,ES:DATA3,SS:DATA2 START: MOV AX, DATA1 MOV DS, AX ;数据段地址赋给DS MOV AX, DATA2 MOV SS, AX ;堆栈段地址赋给SS MOV AX, DATA3 MOV ES, AX ;附加段地址赋给ES … MOV AH, 4CH INT 21H ;返回DOS CODE ENDS END START
GROUP 段组定义 格式:段组名GROUP段名【,段名] 功能:将指定的所有段分配在同一个物理存储器内,使用同一个组名, 使用同一个DS内容。 用户自行指定段组中的段,段组不影响各段次序,对定义在不同段中的 变量,可以用同一个DS访问,但各段仍为独立段,通常将具有相同性质 的段分在一个段组。 举例:DATA1 SEGMENT DATA' DATA1 ENDS DATA2 SEGMENT DATA' DATA2 ENDS AA5 GROUP DATA1,DATA2 CODE SEGMENT‘CODE' ASSUME CS:CODE,DS:AA5 START:MOV AX,AA5 MOV DS,AX ;数据段地址赋给DS MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START Ji Lin University China COMPUTER SCIENCE山DY里CHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY GROUP 段组定义 • 格式:段组名 GROUP 段名[,段名] • 功能:将指定的所有段分配在同一个物理存储器内,使用同一个组名, 使用同一个DS内容。 • 用户自行指定段组中的段,段组不影响各段次序,对定义在不同段中的 变量,可以用同一个DS访问,但各段仍为独立段,通常将具有相同性质 的段分在一个段组。 • 举例: DATA1 SEGMENT ‘DATA’ … DATA1 ENDS DATA2 SEGMENT ‘DATA’ … DATA2 ENDS AA5 GROUP DATA1, DATA2 CODE SEGMENT ‘CODE’ ASSUME CS:CODE,DS:AA5 START: MOV AX, AA5 MOV DS, AX ;数据段地址赋给DS … MOV AH, 4CH INT 21H ;返回DOS CODE ENDS END START
简化的段定义 ● MASM5.0以上支持的段定义,不像SEGMENT 定义得那么完善,但易用。 简化段有利于汇编语言程序模块与高级语言程序 模块的连接,但.COM程序不能用简化段定义。 Ji Lin University China COMPUTER SCIENCE AND TECHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 简化的段定义 • MASM 5.0以上支持的段定义,不像SEGMENT 定义得那么完善,但易用。 • 简化段有利于汇编语言程序模块与高级语言程序 模块的连接,但.COM程序不能用简化段定义
四、地址计数器伪指令 1.地址计数器$ 。 功能:指出汇编地址,是偏移量,记载下一个变量或指令在当前 段中的偏移量。 每个段开始时,$=0,随着汇编过程的进行而增值,每处理一条 指令,$增加一个值,此值为该指令所需的字节数。 允许直接引用$,如:JNE$+6;转向NE指令的首地址加上6。 ● $用于指令时,表示本条指令的第一个字节地址,$用于其他情况, 表示$的当前值。 2.ORG起始地址定义 格式:ORG表达式 功能:定义指令或数据的起始地址,把表达式的值送给$(地址 计数器) 3. EVEN偶数地址定义 。 功能:使下一个变量或指令从偶数地址开始,便于字存储对准 (EVEN在代码段中可能多出一个NOP语句)。 4.ALIGN边界定义 格式:ALIGN n;n为2的幂次 ● 功能:使下一个变量或指令从的接续整数倍地址开始,保证双 字、四倍字对准。 Ji Lin University China CDPE型CIENCE AND T室CHO是OG理
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 四、地址计数器伪指令 1.地址计数器$ • 功能:指出汇编地址,是偏移量,记载下一个变量或指令在当前 段中的偏移量。 • 每个段开始时,$=0,随着汇编过程的进行而增值,每处理一条 指令,$增加一个值,此值为该指令所需的字节数。 • 允许直接引用$,如:JNE $+6 ;转向JNE指令的首地址加上6。 • $用于指令时,表示本条指令的第一个字节地址,$用于其他情况, 表示$的当前值。 2.ORG 起始地址定义 • 格式: ORG 表达式 • 功能:定义指令或数据的起始地址,把表达式的值送给$(地址 计数器) 3.EVEN 偶数地址定义 • 功能:使下一个变量或指令从偶数地址开始,便于字存储对准 (EVEN在代码段中可能多出一个NOP语句)。 4.ALIGN 边界定义 • 格式:ALIGN n ;n为2的幂次 • 功能:使下一个变量或指令从n的接续整数倍地址开始,保证双 字、四倍字对准