80868088汇编语言程序设计.ppt
文本预览下载声明
§5.1 汇编语言源程序的框架结构
? 编制汇编语言源程序时,首先要使用段定义伪指令和段寻址伪指令来构造一个由若干指令和数据组成的源程序。构造一个源程序的框架结构有如下两种格式:
第一种格式:定义数据段、堆栈段、附加段等
CODE SEGMENT (定义代码段,假设段名为CODE)
ASSUME语句
BEGIN:段寄存器赋值等语句
……(程序主体)
MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END BEGIN;第二种格式:定义数据段、堆栈段、附加段等
定义代码段(假设段名为CODE)
ASSUME语句
MAIN PROC FAR
BEGIN: 返回DOS地址入栈
……
RET ;取程序段前缀首地址
MAIN ENDP
CODE ENDS
END BEGIN
区别:两种格式的本质区别在于返回DOS的方法不同:
对于第一种格式,采用了调用DOS系统的4CH功能,返回DOS。具体方法是:在要返回DOS处,安排如下两条指令:
MOV AH,4CH
INT 21H
对于第二格式,DOS返回方法是调用20H类型的中断服务程序。 ;§5.2 顺序结构程序设计
顺序程序结构是指完全按照顺序逐条执行的指令序列,不产生分支。如图5.1所示。
图5.1 顺序程序的结构形式 ;例5.1:试分别用汇编语言源程序的两种框架结构编制程序,求出表达式:(X×4-Y)/2的值,并保存到Z存储单元中,其中X,Y均为字节变量(假设乘积的高8位为0)。;参考程序1:第一种格式
DATA SEGMENT ;定义数据段
X DB 2
Y DB 4
Z DB ? ;定义变量
DATA ENDS
STACK SEGMENT PARA STACK ;定义堆栈段
DW 20H DUP(0)
STACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA,SS:STACK;BEGIN:MOV AX,DATA
MOV DS,AX ;DS 赋初值
MOV AL,X ;AL←X
MOV CL,2 ;设置移位次数
SAL AL,CL ;AL←X×4
SUB AL,Y ;AL←X×4-Y
SAR AL,1 ;AL←(X×4-Y)/2
MOV Z,AL ;存结果
MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS ;代码段结束
END BEGIN ;源程序结束;参考程序2:第二种格式
DATA SEGMENT ;定义数据段
X DB 2
Y DB 4
显示全部