第五章 汇编语言程序开发.ppt
文本预览下载声明
第五章 汇编语言程序开发
本章将详细的讨论汇编语言程序的开发过程。讲解各种汇编语言程序设计基本技术。;第一节. 汇编语言程序一般开发过程
汇编语言程序的一般开发过程如下图所示;汇编程序的开发过程为:
(1) 利用文本编辑器(如记事本、EDITPLUS等)编辑一个扩展名为ASM的汇编语言源程序。
(2) 汇编(MASM)扩展名为ASM的汇编语言源程序,如有错误返回步骤(1)进行修改;无错则至少生成一个扩展名为OBJ的浮动目标文件。
(3) 连接(LINK) 扩展名为OBJ的浮动目标文件, 如有错误返回步骤(1)进行修改;无错则至少生成一个扩展名为EXE或COM的可执行文件。
(4) 利用调试工具(DEBUG)调试可执行文件,如有错误返回步骤(1)进行修改;无错则结束。
(5) 以上步骤周而复始,直至程序完全正确为止。;1.1 开发汇编语言程序的工具
要开发汇编语言程序,需要准备下列的工具:
①编辑工具:为了建立源程序,可以使用可以找到的任何编辑程序,如DOS环境下的EDIT;Windows环境下面的记事本、写字板、WORD等,推荐使用EDITPLUS,支持语法着色,提供行号。
②汇编工具:可以使用ASM或MASM,ASM不支持宏汇编,若需要宏汇编支持,使用MASM;MASM为微软公司提供,可以使用的最高版本为8.0,推荐使用MASM6.X。
③连接工具:使用LINK,为微软公司提供。
④调试工具:使用Windows自带的DEBUG,用于调试16位CPU的汇编程序;若要调试32位CPU的汇编程序,使用DEBUG32。
⑤其他:EXE2BIN可用于建立COM文件。;1.2 建立ASM文件
开发汇编语言程序的第一步是建立汇编语言源程序。建立汇编语言源程序应遵守汇编语言的语法规则:
①一行写一条汇编语言语句;
②汇编语言不区分对大小写;
③一个完整汇编程序最后语句一定是END伪指令,给出汇编程序的运行时的起始地址;
④汇编语言中不能使用中文的标点符号,否则汇编的时会出现“memory overflow”的错误;
⑤汇编程序中的数据占用的存储单元地址应在数据段中分配,指令应放在代码段中,即汇编程序应采用分段结构进行组织;
⑥汇编源程序文件的后缀为.asm;;1.汇编语言源程序段定义格式
在MASM6.X中可以使用两种段定义格式(MASM5.0开始的版本提供这两种格式),即简单段定义格式和完整段定义格式。根据段定义格式不同,汇编语言源程序编写可以采用两种结构,下面通过例子说明汇编语言源程序的两种结构。
例:建立ASM文件:
编制汇编语言程序计算下面的公式,并把结果存放在FUN储存单元中。
其中X,Y,Z的值分别存放在VARX,VARY,VARZ字储存单元中,且假定计算过程的中间值和最后结果仍在16位二进制数的范围内。;①.格式一简单段定义格式汇编语言源程序
NAME WANGXIAO1 ;定义模块名
.8086 ;设置CPU工作模式
.MODEL SMALL ;定义存储器模式
.DATA ;数据段定义伪指令
VARX DW 123H ;数据段内容
VARY DW 456H
VARZ DW 789H
FUN DW ?
.STACK 20H ;堆栈段定义,分配20H个字节存储单元
.CODE ;代码段定义伪指令
START: MOV AX,@DATA ;使用段地址宏@DATA初始化DS寄存器
MOV DS,AX
; MOV AX,VARX
ADD AX,VARY
MOV BX,AX
SAL AX,1
SAL AX,1
ADD AX,BX
SAL AX,1
MOV BX,VARZ
DEC BX
MOV CX,BX
SAL BX,1
ADD BX,CX
SUB AX,BX
SAR AX,1
MOV FUN,AX
MOV AH,4CH ;返回DOS系统
INT 21H
END START ;程序结束,标号START给出程序执行的起始地址;②.格式二完整段定义格式汇编语言源程序
NAME WANGXIAO2 ;定义模块名
.8086 ;设置CPU工作模式
DATA SEGMENT ;数据段定义
VARX DW 123H ;数据段内容
VARY DW 456H
VARZ DW 789H
FUN DW ?
DATA ENDS ;数据段定义结束
STACK1 SEGMENT PARP STACK ;堆栈段定义
DW 10H DUP (0) ;堆栈段分配20H个字节存储单元
STACK1 ENDS ;堆栈段定义结束
CODES SEGMENT ;代码段定义
ASSUME CS:CODES,DS:DATA,SS:S
显示全部