汇编语言第四章——第一个程序
1.一个源程序从写出到执行的过程
编写汇编源程序——>对源程序进行编译连接——>执行可执行文件中的程序
2.源程序
a)伪指令需要编译器来进行相关编译工作
一个汇编程序是由多个段组成的,这些段用来存放代码,数据或者当作栈空间来使用
段的格式:段名 segment .... 段名 ends
end:时汇编程序结束的标记
assume:这条指令的含义时“假设”,它假设某一段寄存器和程序中的某一个用segments。。。ends定义的段相关联,在编程时用assume讲由特定用途的段和相关的寄存器相关联即可
b)注意:源程序文件中的所有内容都为源程序,将源程序中最终由计算机执行,处理的指令或数据成为程序。程序最先以汇编指令存在于源程序中,经编译,连接后转变为机器码,存储在可执行文件中
c)标号
如:codesg,一个标号指代了一个地址。作为一个段的名称,最终将被编译、连接程序处理为一个段的段地址。
d)程序的结构
定义一个段——>在这个段内写入汇编指令——>用end指出程序在哪里结束——>用assume将段名和相应的段寄存器连接起来。
e)程序返回
在程序末尾添加返回的程序段:
mov ax,4c00H
int 21H
用它返回是不需任何条件,还可顺便帮你关闭你打开后忘记关闭的文件。并返回寄存器al的值。在DOS中可用于*.com或*.exe文件。int 21h是DOS系统的系统调用的入口,ah为功能号,就是本问题中的4c,比如
mov ah,9
mov dl,‘a'
int 21h
表示要在屏幕上显示英文字母a,mov ax,4c00h表明应用程序要退出,并为调用本程序的程序返回00,传递退出信息。
3.编辑源程序+编译+连接+执行
使用dos下的edit编辑流程
(1)运行edit
(2)在Edit中编辑程序
(3)将程序保存为文件xxx.asm,保存退出
编辑+连接
借鉴于博友天机不可泄漏处,原文链接 http://www.cnblogs.com/Yangruzhang/p/9788727.html
简化的步骤:直接在masm后面加上被编译的源程序文件的路径,文件名,在命令结束处加上;按enter键后,编译器就会对源程序进行编译,自动忽略中间文件的生成
将源程序加工成一个可以在系统操作的程序文件后,输入xx.exe运行
关于是什么程序将编写的源程序加载进内存的一些思考:cpu启动的时候会从固定的地址读取代码,对于x86,就是cs和eip是固定的,硬件上会将bios-rom映射到这个区域,然后cpu就可以按照指令执行了。bios完成硬件初始化后,会根据启动顺序按照已有约定寻找启动项