当使用简化的段定义时,一般情况下,程序员可以不知道这些段的段名、段地址堆齐类型和组合类型等。但当把简化定义的段和标准定义的段混合使用时,就需要知道简化定义段的基本属性。表6.3是在小模式下段的基本属性对应表。
表6.3 小模式下简化段定义的缺省属性表
|   
         伪指令  |   
        
         缺省段名  |   
        
         对齐类型  |   
        
         组合类型  |   
        
         类别  |   
        
         段组名  |   
    
|   
         .CODE  |   
        
         _TEXT  |   
        
         WORD  |   
        
         PUBLIC  |   
        
         'CODE'  |   
        
         
  |  
    
|  
         .FARDATA  |  
       
         FAR_DATA  |  
       
         PARA  |  
       
         NONE  |  
       
         'FAR_DATA'  |  
      |
|  
         .FARDATA?  |  
       
         FAR_BSS  |  
       
         PARA  |  
       
         NONE  |  
       
         'FAR_BSS'  |  
       
         
  |  
    
|  
         .STACK  |  
       
         STACK  |  
       
         PARA  |  
       
         STACK  |  
       
         'STACK'  |  
       
         DGROUP  |  
    
|  
         .DATA  |  
       
         DATA  |  
       
         WORD  |  
       
         PUBLIC  |  
       
         'DATA'  |  
       
         DGROUP  |  
    
|  
         .DATA?  |  
       
         BSS  |  
       
         WORD  |  
       
         PUBLIC  |  
       
         'BSS'  |  
       
         DGROUP  |  
    
|  
         .CONST  |  
       
         CONST  |  
       
         WORD  |  
       
         PUBLIC  |  
       
         'CONST'  |  
       
         DGROUP  |  
    
在其它存储模型下,由伪指令".CODE"说明的代码段段名在"_TEXT"之前还要加上其模块名(源程序名)。假设,某模块名为ABC,则其缺省的代码段段名就为ABC_TEXT。因此,在这种情况下,程序的模块名或源程序名不要以数字开头。
例6.15 简化段定义的方法
| .MODEL SMALL | ||||
| .STACK 128 | ||||
| .DATA | ||||
| MSG | DB "Simplified Segment Directives.$" | |||
| .CODE | ||||
| MOV | AX, @DATA | ;取数据段的段值 | ||
| MOV | DS, AX | ;把给段寄存器DS赋值 | ||
| MOV | DX, offset MSG | |||
| MOV | AH, 9H | |||
| INT | 21h | |||
| MOV | AX, 4C00H | |||
| INT | 21h | |||
| 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 | |||
| MSG | DB "Simplified Segment Directives.$" | ||
| .CODE | |||
| .STARTUP ;自动初始化寄存器DS、SS和SP | |||
| MOV | DX, offset MSG | ||
| MOV | AH, 9H | ||
| INT | 21h | ||
| .EXIT | |||
| END | |||