;Program:Hello World
;Author:TryHard
;Date:2012/02/06
SSEG: SEGMENT PARA STACK ;堆栈段
DW 256 DUP(?) ;256大小
SSEG ENDS
DSEG SEGMENT ;数据段
MESSAGE DB 'Hello',0DH,0AH,'$' ;0DH,0AH换行,以'$’结束
DSEG ENDS
CSEG SEGMENT ;代码段
ASSUME CS:CSEG, DS:DSEG,SS:SSEG
START:
MOV AX,DSEG ;取得数据段基址
MOV DS,AX ;设置数据段
;显示
MOV DX,OFFSET MESSAGE ;取得MESSAGE基址
MOV AH,9
INT 21;
;结束
MOV AH,4CH
INT 21H
CSEG ENDS
END START
总结:
内存就是一个池塘,如果把一条鱼放入其中,过后再打捞出来,如果在池塘中放一些围栏标识养了哪些鱼,再这条鱼放入,过后再打捞. 两种方法都可以把鱼打捞出来
只是快慢而已.
80X86中也是把内存分成数据段,堆栈段,代码段,在每个段中查找数据比在一个大内存中查找数据当然快得多,
段是有大小,因为16位CPU只能做16位的运算,所以段空间只有 64KB大,也就是寻址能力只能在000H-FFFH中
;分析
;程序汇分为三个段:堆栈段,数据段,代码段
;程序入口从START开始执行
;Assume 关联各个段
mov AX,DSEG;相当于 AX=DSEG
mov DS,AX ; DS=AX
MOV DX,OFFSET MESSAGE; OFFSET作用是得到变量MESSAGE 的地址
MOV AH,9
INT 21; ;中断功能用于显示DOS
;段的声明
[NAME]: SEGMENT
[NAME]: ENDS