Hello World

;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


 

 

posted @ 2012-02-06 16:28  TryHard  阅读(238)  评论(0编辑  收藏  举报