匯编语言源程序的结构及上机步骤.doc
文本预览下载声明
汇编语言源程序的结构及上机步骤
汇编语言源程序有两类:其一,经汇编后生成扩展名为.EXE的可执行文件(简称EXE文件);其二,经汇编后生成扩展名为.COM的紧凑格式文件(可执行,简称COM文件)。这两种文件具有不同的优先级,其源程序结构也有较大差异。
1.EXE文件的汇编格式
? (1) 特点:程序可带重定位信息,程序分段,每段64K,文件较长
??? 程序装入内存时,CS、SS由系统赋值,DS、ES由用户赋值
? (2)EXE汇编语言源程序一般结构如下:
; program title goes head---(程序题目放这里)
;
?;EQU? STATEMENT GO HEAD---(等值语句放这里)
; *************
?STACK SEGMENT PARA STACK STACK;堆栈段
?????? DB 20 DUP(STACK?? )
?STACK ENDS
;********************
DATASG SEGMENT??????????????????? ;数据段
; DATA GOES HEAR
?DATASG ENDS
; *********************
EXTRA SEGMENT???????????????????? ;附加段(可有可无)?????????????
; DATA GOES HEAR
?EXTRA ENDS
; *********************
CODESG SEGMENT??????????????????? ;代码段
; ----------------------
MAIN PROC FAR???????????????????? ;主过程
?? ASSUME CS:CODESG,DS:DATASG,ES:EXTRA,SS:STACK
?? PUSH DS????????????????????????? ;程序段前缀PSP
?? MOV AX,0???????????????????????? ;首地址入栈
?? PUSH AX
?? MOV? AX,DATASG?????????????????? ;将数据段的段地址传送给
?? MOV? DS,AX?????????????????????? ;段寄存器DS
?? MOV? AX,EXTRA??????????????????? ;将附加段的段地址传送给
?? MOV? ES,AX?????????????????????? ;段寄存器ES
?? ; MAIN PART OF PROGRAM GOES HEAR(程序的主要部分放这里)
?? RET????????????????????????????? ;(返回)
MAIN ENDP
;-----------------------
CODESG ENDS
;**************************
END MAIN?? ??????????????????????;程序结束
?
说明: 系统在为用户文件分配内存空间时,会多分配256个BYTE(100H)内存空间给该文件,而这256 BYTE时放在程序的机器码前面,所以这个区域称为程序段前缀(PSP Program System Prefix),此区域内所纪录的内容为用户跟系统沟通的一些相关信息. 在程序段前缀PSP的首地址中,存放了一条INT 20H(程序结束)的指令。
?
(3) EXE文件装入内存中的情况如图3.3.1所示(一开始,段寄存器DS、ES指向段前缀PSP的段地址 )
?
???? 低地址
? 程序段前缀
??? PSP
DS:0H,ES:0H
?
?? 代码段
CS:0H(IP=0)
????????????????????????
?CS:IP(指向下一条要执行的指令)
?
?? 数据段
?
?
?? 附加段
?
????????????????????????
?
?
????? 高地址
?? 堆栈段
SS:0H? ????????????????
?
SS:SP(指向栈顶)
图3.3.1
2. .COM文件的汇编格式
? (1) 特点:程序不能带可重定位信息;整个源程序只能使用一个逻辑段;程序装入内存时,CS、SS 、DS、ES指向同一段,均由系统赋值;第一条可执行指令位于段内偏移量为0100H的地方 (前面256个字节为程序段前缀PSP所在地);数据区可设置在代码段的开始或末尾(与指令代码的合计总长度小于64KB等。
? (2) COM汇编语言源程序一般结构如下:
; program title
显示全部