语法:
segment-name SEGMENT [align] [combine] ['class']
segment-nam ends
[align]选项指明段开始边界,典型要求是para,它使段定位在在小段的边界。起码地址正好被16/10H整除,可以省略,默认为para
[combine]组合 决定本段是否要和其它段组合在一起,组合类型:STACK,COMMON,PUBLIC,
['Class']连接时用于相关段组合在一起,如代码段‘code’,数据段 'Data',堆栈段'Stack'
PAGE 60,132 ;页面大小
TITLE A04ASM1 (EXE) Move and add operations ;标题
; ---------------------------------------------
STACK SEGMENT PARA STACK 'Stack' ;堆栈段
DW 32 DUP(0)
STACK ENDS
; ----------------------------------------------
DATASEG SEGMENT PARA 'Data' ;数据段
FLDD DW 215 ;DW(double word)双字 16位
FLDE DW 125
FLDF DW ?
DATASEG ENDS
; -----------------------------------------------
CODESEG SEGMENT PARA 'Code' ;代码段
MAIN PROC FAR
ASSUME SS:STACK,DS:DATASEG,CS:CODESEG
MOV AX,DATASEG ;取得数据段基址
mov DX,AX
mov AX,FLDD ;取得FLDD单元偏移地址[0000] (IP)=(IP)+0003
ADD AX,FLDE ;对[AX]进行加法操作 (AX)=(AX)+0002 (IP)=(IP)+0003
MOV FLDF,AX
MOV AX,4c00h
int 21h
MAIN endp
CODESEG ENDS
end MAIN
反汇编得到
写更少的代码
1 PAGE 60,132
2 TITLE A04ASM2(EXE) Move and Add Operations ;标题
3
4 ;------------------------------------------------------------------------
5 ;使用.Model 自动生成SEGMENT
6 ;存储模型分为 small Medium Compact Large Huge
7 ;-------------------------------------------------------------------------
8 .MODEL SMALL
9 .STACK 64
10 .DATA
11 FLDD DW 215 ;DW(double word)双字 16位
12 FLDE DW 125
13 FLDF DW ?
14
15 ;---------------------------------------------------------------------------
16 .CODE
17
18 MAIN PROC FAR
19
20 MOV AX,@DATA
21 MOV DS,AX
22 MOV DS,AX
23
24 MOV AX,FLDD
25 ADD AX,FLDE
26 MOV FLDF,AX
27
28 MOV AX,4C00H
29 INT 21H
30
31 MAIN endp ;过程结束
32 END MAIN ;程序结束
转载于:https://www.cnblogs.com/pengshao/archive/2011/08/06/2129518.html