文档介绍:第6章汇编语言程序设计
汇编源程序有两种编程格式:一种格式只能生成扩展名为EXE的可执行文件,称为EXE文件的编程格式;的可执行文件,文件的编程格式。
EXE文件的编程格式
EXE文件的编程格式允许源程序使用多个逻辑段,在实模式下,每个逻辑段的目标块不超过64KB,适合于编写大型程序。
开始
. 文件的编程格式必须必须符合以下规定:
(1)源程序只允许使用一个逻辑段,即代码段,不允许设置堆栈段;
(2)程序使用的数据,可以集中设置在代码段的开始或末尾;
(3)在代码段偏移地址(有效地址)为100H的单元,必须是程序的启动指令;
(4)代码段目标小于64KB。
EXE文件包括两部分:一部分为装入模块,另一部分为“重定位信息”。调入后生成PSP(程序段前缀)
DOS自动给DS,ES,FS和GS赋值,使DS=ES=存放PSP的段基址,FS=GS=0,并使CS:IP=用户程序的启动地址,SS:SP指向用户堆栈段的栈顶,在这以后,DOS才把控制权交给用户程序。
COM文件没有重定位信息,因此比EXE文件的体积小的多。文件时,也生成PSP,然后从偏移地址100H开始依次存放用户程序。DOS自动赋值使CS=DS=ES=SS=PSP段基址,FS=GS=0,并使IP=100H,SP=FFFEH。
程序段前缀
文件有三种方法:
(1)直接执行INT20H;
(2)调用INT21H的0号功能。
(3)执行RET指令
对于EXE文件:
(1)调用INT 21H的4CH功能
(2)执行INT 20H,首先把执行过程包含在一个远过程中;
其次在给DS赋值前,用3条指令把PSP首单元的物理地址压入栈顶,即:PUSH DS MOV AX,0 PUSH AX,最后程序在需要返回DOS的地方执行一条RET指令。
源程序堆栈段的设置
对8086系列机来说,MS-DOS操作系统是最主要的操作系统。MS-DOS操作系统除了具有较为完整的文件管理功能之外,同时还为各种应用程序、外围设备等提供软件接口。它由三部分组成:、MSDOS.。
DOS系统功能调用的方法一般可分为以下几步:
①设置所要调用功能的入口参数。
②在AH寄存器中存入所要调用功能的功能号。
③ INT 21H指令自动转入中断子程序入口。
④相应中断子程序运行完毕,可按规定取得出口参数。
返回本节
DOS系统功能调用
常用的DOS系统功能调用
(1号调用)
(2号调用)
(5号调用)
(4CH号调用)
(9号调用)
(10号调用)
(1号调用)
格式:MOV AH,1
INT 21H
功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示。
(2号调用)
格式:MOV DL,待显示字符的ASCII码
MOV AH,2
INT 21H
功能:将DL寄存器中的字符送显示器显示,如果DL中为〈CTRL〉+〈BREAK〉的ASCII码,则退出。
(5号调用)
格式:MOV DL,待打印字符的ASCII码
MOV AH,5
INT 21H
功能:将DL寄存器中的字符送打印机打印。
(4CH号调用)
格式:MOV AH,4CH
INT 21H
功能:终止当前程序并返回调用程序。
(9号调用)
格式:LEA DX,待显示字符串首偏移地址
MOV AH,9
INT 21H
功能:将当前数据区中以‘$’结尾的字符串送显示器显示。
(10号调用)
格式:LEA DX,缓冲区首偏移地址
MOV AH,10
INT 21H
功能:从键盘上输入一字符串到用户定义的输入缓冲区中,并送显示器显示。
DATA SEGMENT
STR DB 0DH,0AH,‘Example of string display!$’
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
【】若要在屏幕上显示字符串“Example of string display!”,则程序如下: