1、一个源程序从写出到执行的过程
概述:编写-->编译连接-->执行
编写汇编源程序:使用文本编辑器(如记事本、Nodepad++、UltraEdit等),后缀名(.asm)
编译连接:使用汇编语言编译程序(MASM.EXE)对源程序进行编译生成目标文件,再用连接程序(LINK.EXE)对目标文件进行连接生成在操作系统中直接运行的可执行文件。
可执行文件包括两部分:
- 程序和数据
- 相关的描述信息(如:程序多大,要占多少内存空间)
2、源程序
例:
assume cs:codesg
codesg segment
start: mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4C00H
int 21H
codesg ends
end
汇编指令:
有对应机器码的指令,可以被编译为机器指令,最终被CPU执行。
如:mov,add,sub
伪指令:
没有对应机器码的指令,最终不被CPU执行。
伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。
如:segment,ends 用于定义一个段;end结束标记
3、定义一个段
segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编指令程序时,必须用到的一对伪指令
segment和ends功能是定义一个段,前者说明一个段开始,后者说明一个段结束。
使用格式:
段名 segment
段名 ends
3、结束标记
end是一个汇编程序的结束标记,编译器在编译程序的设计时,如果碰到了伪指令end,就结束对源程序的编译。
4、assume
assume含义是“假设”。
它假设某一段寄存器和程序中某一个用segment……ends定义的段相关联。
5、标号
一个标号指代一个地址。
例:codesg segment
codesg作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。
6、程序返回
一个程序结束后,将CPU的控制权交还给使它得以运行的程序,我们将这个过程称为程序返回。
应该在程序末尾添加返回的程序段。
mov ax,4cooh
int 21h
实现机制:中断。
7、操作系统的外壳
操作系统是由多个功能模块组成的庞大、复杂的软件系统。任何通用的操作系统都要提供一个称为shell(外壳)的程序,用户(操作人员)使用这个外壳来操作计算机系统工作。
8、其他
end后的标号表示程序入口的地址。
语法错误易发现,逻辑错误不易发现。
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当做栈空间来使用。
例:
任务:编程运算2^3
assume cs:abc
abc segment
start: mov ax,2
add ax,ax
add ax,ax
mov ax,4c00h
int 21h
abc ends
end