简化段段名的
3120 点击·0 回帖
![]() | ![]() | |
![]() | 当使用简化的段定义时,一般情况下,程序员可以不知道这些段的段名、段地址堆齐类型和组合类型等。但当把简化定义的段和标准定义的段混合使用时,就需要知道简化定义段的基本属性。表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――用于结束程序的运行,它等价于下列二条语句: MOV AH, 4CH INT 21h 当使用汇编程序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 | |
![]() | ![]() |