第一个汇编程序
- 编写汇编源程序
- 对源程序进行编译连接
- 编译–>生成目标文件
- 连接–>生成可执行文件
可执行文件包含两部分
- 程序(机器码)和数据(源程序中定义的数据)
- 相关的描述信息(比如,程序有多大,要占用多少内存空间)
- 执行可执行程序中的程序
操作系统依照可执行文件的描述信息,将可执行文件中的程序和数据装载进内存中, 并进行一定的初始化(比如指定CS:IP,指向第一条要执行的指令),然后由CPU运行程序
通过一个实例快速学习
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执行;另一种是伪指令,没有对应机器码,它由编译器进行识别并进行相关的编译工作。
上面的程序出现了三种伪指令:
- xxx segment
…
xxx ends
它们成对使用。其功能是定义一个段,segment是开始,ends是结尾,并且段还要有个标识符,xxx即为段名。
**一个有意义的汇编程序至少要有一个段,这个段用来存放代码 - end
汇编程序结束标志,不要和ends混淆了就行。 - assume
其意为“假设”,上面的程序可以看出我们把段寄存器cs假设为“codesg”,也就让两者有了联系,我们可以视代码段段名就是“codesg”。
源程序和程序

简单说的话,源程序文件里面所有内容就是源程序,其中的汇编指令就是程序。细说的话,程序:最终被计算机执行、处理的指令或数据,程序最先以汇编指令的形式存放在源程序中,经编译连接后转变为机器码储存在可执行文件中。
标号
类似codesg的东西,其代表一个地址,比如codesg代表的就是代码段的段地址。
段的名称经编译、连接程序处理为一个段的地址。
程序的结构
大家可以想怎么用汇编程序处理2^3这个问题,最简单的结构,可以尝试写一写
assume cs:code
code segment
mov ax, 2
add ax, ax
add ax, ax
code ends
end
程序返回
一个程序结束后,将CPU的控制权交给使它得以运行的程序,这个过程称为:程序返回。
目前阶段只需要加上就行,不需理解其含义,在代码段后面加上这两行:
mov ax, 4c00H
int 21H

1万+

被折叠的 条评论
为什么被折叠?



