第四章 第一个程序
4.1 一个源程序从写出到执行的过程
第一步:编写汇编源程序
使用文本编辑器,用汇编语言编写汇编源程序,这一步工作的结果是产生了一个存储源程序的文本文件
第二步:对源程序进行编译连接。
使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件进行连接,生成可在操作系统中直接运行的可执行文件。
可执行文件包含两部分内容。
(1)程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
(2)相关的描述信息(比如,程序有多大,要占用多少内存空间等)
这一步的结果:产生了一个可以在操作系统中运行的文件
第三步:执行可执行文件中的程序
在操作系统中,执行可执行文件中的程序。
操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序
4.2 源程序
下面是一段简单的汇编语言源程序
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
codesg ends
end
下面对程序进行说明:
1,伪指令
伪指令是由编译器来执行的指令,最终不被CPU执行,编译器根据伪指令来进行相关的编译工作
(汇编指令有对应的机器码的指令,可以被编译为机器指令,而伪指令不能)
上述程序中出现的3种伪指令
(1)XXX segment
XXX ends
段名 segment
段名 ends
(2) end
用来结束对源程序的编译
(3)assume
assume cs:codesg 假设cs与段codesg相关联,将cs与段codesg联系起来
2,源程序中的“程序”
这里所说的程序就是指源程序中最终由计算机执行,处理的指令或者数据
以后可以将源程序问渐渐中的所有内容称为源程序,将源程序中最终由计算机执行,处理的指令或者数据(不包括伪指令),称为程序
3. 标号
汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如“codesg”。一个标号指代了一个地址。比如codesg在segment的前面,作为一个段的名称,这个段的名称最终将被编译连接程序处理为一个段的段地址。
4.程序的结构
源程序编写的顺序:P80
(1)先定义一个段
(2)在这个段中写入汇编指令
(3)指出程序在何处结束
(4)该段被当作代码段来使用,所以,应该将该段与cs联系起来(对于此程序,并不是非这样做不可)
5.程序返回
一个程序运行后应该将CPU的控制权交还给使它得以运行的程序,我们称这个过程为:程序返回。
实现程序返回的方式:
mov ax,4c00H
int 21H
我们现在还不理解这段代码的含义,之后会有了解。现在我们只需要知道,这段代码具有将程序返回的功能
6.语法错误和逻辑错误
程序在编译的时候被编译器发现的错误是语法错误
在源程序编译后,在运行的时候发生的错误是逻辑错误
语法错误容易发现,也容易改正。而逻辑错误通常不易被发现
4.3编辑源程序
使用DOS下的Edit,以下是工作过程:(操作的具体图片在P82,也可以用文本文档来编辑)
(1)进入DOS方式,运行Edit
(2)在Edit中编译程序
(3)将程序保存为文件 c:\1.asm后,退出Edit,结束对源程序的编辑
4.4 编译
于书本P83,文字不便描述,需仔细阅读
4.5 连接 4.6以简化方式进行编译和连接
于书本P85,文字不便描述,需仔细阅读
4.4至4.9的内容可以结合实验3进行学习并理解
原文地址:https://www.cnblogs.com/1198264220pl/p/11982pl642205.html