汇编语言源程序结构—单模块程序 结构 参见教材P、60 般程序由三个段组成。教材中程序的小写字 母部分均为程序结构
一、汇编语言源程序结构——单模块程序 结构 • 参见教材P、60 一般 程序由三个段组成。教材中程序的小写字 母部分均为程序结构
STACK SEGMENT STACK 定义堆栈段及堆栈长度 DW 32 DUP(?) STACK ENDS DATA SEGMENT 定义数据段 DATA ENDS 定义代码段 CODE SEGMENT 将汇编源程序视为DOS下的子程序 BEGIN PROC FAR asSUME CS: CODE, SS: STACK, DS: DATA PUSH DS SUB AX, AX 将程序段前缀PSP进栈 PUSH AX MOV AX, DATA 设置用户数据段 MOV DS, AX RET 返回到PSP,执行PSP中的第一条指令 BEGIN ENDP INT20H,结束程序返回调用程序 CODE ENDS END BEGIN
STACK SEGMENT STACK DW 32 DUP(?) STACK ENDS DATA SEGMENT : DATA ENDS CODE SEGMENT BEGIN PROC FAR ASSUME CS:CODE,SS:STACK,DS:DATA PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX : RET BEGIN ENDP CODE ENDS END BEGIN 定义堆栈段及堆栈长度 定义数据段 定义代码段 将汇编源程序视为DOS下的子程序 将程序段前缀PSP进栈 设置用户数据段 返回到PSP,执行PSP中的第一条指令 INT 20H,结束程序返回调用程序
因为连接程序为每一个用户程序建立了一个 程序段前缀PSP,在PSP的开始处安排了一条 NT20H指令,执行该指令结束当前程序返回 调用程序
• 因为连接程序为每一个用户程序建立了一个 程序段前缀PSP,在PSP的开始处安排了一条 INT 20H指令,执行该指令结束当前程序返回 调用程序
而PSP的地址,其段地址寄存在DS和ES中; 偏移地址为0,将DS:0000地址进栈,即PSP 地址进栈。 PSP的长度为256个字节,即100H个单元, 主要存放了装入程序与DOS连接的信息 结束用户程序返回DOS有两种方法 其一:MO∨AH,4CH;返回DOS INT 2TH 其二:IT20H;返回调用程序,便于调试 它的机器码是CD20H,当用 DEBUG调用EXE 文件时,在DS:0000单元中便可看到该指令
•而PSP的地址,其段地址寄存在DS和ES中; 偏移地址为0,将DS:0000地址进栈,即PSP 地址进栈。 • PSP的长度为256个字节,即100H个单元, 主要存放了装入程序与DOS连接的信息。 • 结束用户程序返回DOS有两种方法: 其一:MOV AH ,4CH ;返回DOS INT 21H 其二:INT 20H ;返回调用程序,便于调试 它的机器码是CD20H,当用DEBUG调用EXE 文件时,在DS:0000单元中便可看到该指令
●D○S在转移控制权时,将CS指向EXE程 序的代码段,SS指向堆栈段,但DS和ES 并不指向用户程序的数据段和附加数据 段,而是指向PSP
• DOS在转移控制权时,将CS指向EXE程 序的代码段,SS指向堆栈段,但DS和ES 并不指向用户程序的数据段和附加数据 段,而是指向PSP