MASM汇编语言程序设计之---段的规划设计(一)

来源:互联网 发布:宏景软件app 编辑:程序博客网 时间:2024/06/06 14:00


         每个语言都有它特定的规范,像PASCALBEGIN~ENDC{ }等等,这些标志就是代表各类电脑语言程序的外观,因此相同的的道理,在汇编语言程序中也有特殊的外观,那就是段(Segment)的概念来设计程序,而一个段的格式如下所示:

##################################

 名称   SEGMENT

        ###########################

        #                                                 #

        #         程序指令或者数据区    #

        #                                                 #

        ###########################

名称    ENDS

###################################

 在汇编程序中允许用户用一个段以上的程序设计格式(只要重复使用上述格式,名称不一样就可以了),但这种允许往往就造成初学者困恼,我到底要用几个段来设计格式才对?因为在设计程序时,第一个要考虑到就是段数的问题,段数规划错误,有可能会影响到某些指令执行的正确性!,因此以下是一个段以及多个段的程序设计格式,来分别说明其所要考虑的条件。

                 一个段的程序规划

###########################################

CODE SEGMENT

     ASSUME CSCODEDSCODEES:CODE

      MOV AX,CODE

      MOV DS,AX

      MOV ES,AX

     ######################################

     #                                                                       #

     #                 程序指令区                                #

     #                                                                     #

     ######################################

     MOV AH,4CH ;

     INT   21H

     #######################################

     #                                                                           #

     #                              存储器变量区                   #

     #                                                                           #

     #######################################

CODE ENDS

       END

;//////////////////////////////////////////////////////////////////////////////////////

说明:

1:上面示范就是应该段的汇编语言程序规划,其中CODE是段名称,这段名称可以自定义只要符合名称规范即可。

2:内存一个段的长度是64KB65536Byte,也即内存一个段可以存储65536Byte个机器码,汇编语言指令被翻译成机器码,其长度最短是一个Byte,最长的是六个Byte,如果按平均三个Byte估算,那内存一个段就可以存储二万一千多列汇编指令了。试想一下设计个应用程序要怎么多行指令吗?平常超过5000行以上就是个大程序了,5000行程序只占内存的15K长度而已,剩下的49K我们认为内存变量用足足有余,因此一般程序一个段就用一个段来规划就好了。

3:一个段使用只要把指令放程序指令区,变量放内存变量区,其他部分直接套用,其中MOV AXCODE开始起的三列,最主要是用于数据段和额外段与程序段的重叠,这样处理内存变量时不会出错,MOV AH4CHINT21H这指令是执行程序返回到DOS。(这里也可以用RET;指令代替。

4:内存变量区所存的变量,一般都是用伪指令DBDWDDDQDT所定义的数据。

 如下一个简单一个段程序:


今天就先写到这里未完待。。。后面会说下三个段和四个段:)

0 0
原创粉丝点击