四、第一个汇编程序
程序员文章站
2022-03-10 09:44:48
...
4 第一个汇编程序
4.1 基础了解
一个汇编源文件变成可执行的二进制文件需要的步骤:
- 编译
- 链接
一个可执行文件包括两个信息:
- 程序和数据
- 程序的描述信息
操作系统根据可执行程序的描述信息,把可执行文件中的机器码和数据加载到内存中,并进行相关的初始化,(比如设置cs:ip指令段的地址、栈段、数据段等),然后再由CPU执行
4.2 源程序
1)伪指令:
伪指令、符号体系(+ - * /)由编译器执行的指令,编译器根据伪指令进行相关的编译操作
常用的伪指令:
-
segment ends定义一个段
XXX segment //XXX段开始 XXX ends //XXX段结束 //上面指令是用来定义一个段
-
end汇编程序结束标记
end
-
assume“假设” 将特定的段和段寄存器关联起来
assume cs:codesg //将codesg代码段和cs寄存器关联起来
codesg segment //定义名为codesg的代码段
...
codesg ends
end //汇编程序结束
2)源程序中的“程序”
程序包括:伪指令、汇编指令
编译器处理伪指令,CPU最终执行指令和处理数据
3)标号
一个标号代表一个地址,段的名称codesg ,最终经过编译链接会变成一个段的段地址
4)程序结构
示例:编程计算2的3次方
assume cs:codesg
codesg segment
mov ax,2
add ax,ax
add ax,ax
mov ax,4c00H
int 21H
codesg ends
ends
5)程序返回
一个程序结束后,将CPU的控制权交给它运行的程序
使用下面两句汇编指令进行返回
mov ax,4c00H
int 21
6)编译、链接
masm test.asm //编译
link test.obj //链接
编译:最多可以生成三个文件,.obj (目标文件)、列表文件(.lst)、交叉引用文件(.crf)
链接:.exe(可执行二进制文件) .map(可以看各个段的大小) .lib(库文件)
上一篇: Android中各种Time API详细
下一篇: linux用哪个的比较好,该如何解决