每个语言都有它特定的规范,像PASCAL用BEGIN~END,C用{ }等等,这些标志就是代表各类电脑语言程序的外观,因此相同的的道理,在汇编语言程序中也有特殊的外观,那就是段(Segment)的概念来设计程序,而一个段的格式如下所示:
;##################################
名称 SEGMENT
###########################
# #
# 程序指令或者数据区 #
# #
###########################
名称 ENDS
;###################################
在汇编程序中允许用户用一个段以上的程序设计格式(只要重复使用上述格式,名称不一样就可以了),但这种允许往往就造成初学者困恼,我到底要用几个段来设计格式才对?因为在设计程序时,第一个要考虑到就是段数的问题,段数规划错误,有可能会影响到某些指令执行的正确性!,因此以下是一个段以及多个段的程序设计格式,来分别说明其所要考虑的条件。
一个段的程序规划
;###########################################
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
MOV AX,CODE
MOV DS,AX
MOV ES,AX
######################################
# #
# 程序指令区 #
# #
######################################
MOV AH,4CH ;
INT 21H
#######################################
# #
# 存储器变量区 #
# #
#######################################
CODE ENDS
END
;//
说明:
1:上面示范就是应该段的汇编语言程序规划,其中CODE是段名称,这段名称可以自定义只要符合名称规范即可。
2:内存一个段的长度是64KB(65536个Byte),也即内存一个段可以存储65536Byte个机器码,汇编语言指令被翻译成机器码,其长度最短是一个Byte,最长的是六个Byte,如果按平均三个Byte估算,那内存一个段就可以存储二万一千多列汇编指令了。试想一下设计个应用程序要怎么多行指令吗?平常超过5000行以上就是个大程序了,5000行程序只占内存的15K长度而已,剩下的49K我们认为内存变量用足足有余,因此一般程序一个段就用一个段来规划就好了。
3:一个段使用只要把指令放程序指令区,变量放内存变量区,其他部分直接套用,其中MOV AX,CODE开始起的三列,最主要是用于数据段和额外段与程序段的重叠,这样处理内存变量时不会出错,MOV AH,4CH;INT21H这指令是执行程序返回到DOS。(这里也可以用RET;指令代替。
4:内存变量区所存的变量,一般都是用伪指令DB,DW,DD,DQ,DT所定义的数据。
如下一个简单一个段程序:
今天就先写到这里未完待。。。后面会说下三个段和四个段:)