Board logo

标题: 简化段段名的引用 [打印本页]

作者: 苹果也疯狂    时间: 2015-1-27 15:32     标题: 简化段段名的引用

当使用简化的段定义时,一般情况下,程序员可以不知道这些段的段名、段地址堆齐类型和组合类型等。但当把简化定义的段和标准定义的段混合使用时,就需要知道简化定义段的基本属性。表6.3是在小模式下段的基本属性对应表。
表6.3小模式下简化段定义的缺省属性表
伪指令缺省段名对齐类型组合类型类别段组名
.CODE_TEXTWORDPUBLIC’CODE’
.FARDATAFAR_DATAPARANONE’FAR_DATA’
.FARDATA?FAR_BSSPARANONE’FAR_BSS’
.STACKSTACKPARASTACK’STACK’DGROUP
.DATAD
ATAWORDPUBLIC’DATA’DGROUP
.DATA?BSSWORDPUBLIC’BSS’DGROUP
.CONSTCONSTWORDPUBLIC’CONST’DGROUP
在其它存储模型下,由伪指令\".CODE\"说明的代码段段名在\"_TEXT\"之前还要加上其模块名(源程序名)。假设,某模块名为ABC,则其缺省的代码段段名就为ABC_TEXT。因此,在这种情况下,程序的模块名或源程序名不要以数字开头。
例6.15简化段定义的方法
.MODEL SMALL
.STACK 128
.DATA
MSGDB\"Simplified Segment Directives.$\"
.CODE
MOV AX, @DATA;取数据段的段值
MOVDS, AX;把给段寄存器DS赋值
MOVDX, Offset MSG
MOVAH, 9H
INT21h
MOVAX, 4C00H
INT21h
END
另外,在汇编程序MASM中,还提供了二组简化的代码伪指令:.STARTUP和.EXIT。
、.STARTUP——在代码段的开始,用于自动初始化寄存器DS、SS和SP;
、.EXIT——用于结束程序的运行,它等价于下列二条语句:
MOVAH, 4CH
INT21h
当使用汇编程序TASM时,以上二条伪指令分别改为:STARTUPCODE和EXITCODE。假设使用汇编程序MASM,那么,例6.15可改写成例6.16的形式。
例6.16
.MODEL SMALL
.STACK 128
.DATA
MSGDB\"Simplified Segment Directives.$\"
.CODE
.STARTUP ;自动初始化寄存器DS、SS和SP
MOVDX, Offset MSG
MOVAH, 9H
INT21h
.EXIT
END




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0