小白的汇编之路(四)----程序的执行

前言

此章较为简略

源程序从编写到执行

  1. 第一步:编写汇编程序
    过程:使用文本编辑器编写汇编源程序
    ​结果:产生了一个存储源程序的文本文件;

  2. 第二步:对源程序进行编译连接
    ​过程:编译程序对源程序进行编译;产生目标文件。连接程序对目标文件进行连接

    结果:产生了可在系统中直接运行的可执行文件

    可执行文件包括两部分:
    程序(机器码)和数据(定义的数据)相关的描述信息(程序大小,占用的内存空间等)

  3. 第三步:执行可执行文件中的程序

源程序

示例:

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

在汇编程序源程序中,有两种指令:伪指令和汇编指令

汇编指令会被编译器编译成机器指令,最终被CPU执行

而伪指令不会被编译,编译器会根据伪指令执行相关的编译工作

上述示例中出现了三种伪指令:

(1)xxx segment…xxx ends

codesg segment

	...

codesg ends
#segment和ends是成对使用的,用来定义一个段
#segment表示段的开始;ends表示段的结束(end segment)
#一个汇编程序是由多个段组成的

(2)end

...

end
#end表示一个汇编程序的结束,如果编译器遇到了伪指令end就结束对源程序的编译

(3)assume

assume cs:codesg
#它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联
#我们可以用有特殊用途的段和相关的段寄存器关联起来

标号

codesg segment
	
	...
	
codesg sement 
#其中codesg就是一个标号
#这个段名称最后将会被编译和连接程序处理成一个段的段地址

程序返回

一个可执行文件该怎么运行呢?(以在DOS运行为例)

程序P2在可执行文件中,想要运行P2,必须由一个正在运行的程序P1将P2加载进内存中,将CPU的控制权交给

P2,P1暂停运行。

而在DOS中有一个command.com(与我们熟知的cmd有一些区别),它就负责担任P1的角色。

(1)在DOS中执行1.exe的时候,由正在运行的command.com将1.exe加载进内存中

(2)执行程序

(3)程序执行完成后,程序返回到command.com,CPU控制权转交回command.com

发布了10 篇原创文章 · 获赞 3 · 访问量 321

猜你喜欢

转载自blog.csdn.net/weixin_41043607/article/details/104723405