MASM汇编语言程序设计之---段的规划设计(一)
来源:互联网 发布:宏景软件app 编辑:程序博客网 时间:2024/06/06 14:00
每个语言都有它特定的规范,像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所定义的数据。
如下一个简单一个段程序:
今天就先写到这里未完待。。。后面会说下三个段和四个段:)
- MASM汇编语言程序设计之---段的规划设计(一)
- MASM汇编语言程序设计之---段的规划设计(二)
- 汇编语言程序设计(一)
- MASM汇编语言笔记(一)IA32处理器体系结构
- 汇编语言之段的概念
- MASM汇编语言笔记(二)汇编语言基础
- 汇编语言的上机过程(基于MASM 6.15)
- Masm汇编语言伪指令
- 基于汇编语言与c/c++语言混合编程的程序设计研究(一)
- 汇编语言程序设计(二)
- 汇编语言程序设计(三)
- 汇编语言程序设计(四)
- 汇编语言程序设计(五)
- 汇编语言程序设计(六)
- 汇编语言程序设计学习笔记(一)(Linux 版)
- Intel 汇编语言程序设计(第五版)--续一
- 80X86汇编语言程序设计教程(杨季文)习题答案一
- 80X86汇编语言程序设计教程(杨季文)习题答案一
- matlab中find函数的使用说明
- 第二部分 Hibernate的基本配置
- CALayer - 11
- Thrift入门及Java实例
- 如何使用.htaccess重定向网站多个目录
- MASM汇编语言程序设计之---段的规划设计(一)
- Android 百度地图经纬度转换成地址
- find 命令
- iOS之block
- 第三部分 Hibernate的基本开发
- 【bzoj1221】[HNOI2001] 软件开发
- java入门PPT
- delphi 获取串口列表
- Asp.net MVC中的ViewData与ViewBag