1、汇编指令
2、伪指令:没有对应的机器码的指令,最终不被CPU所执行
3、谁来执行伪指令呢??
伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作
4、segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时,必须要用到的一对伪指令。
segment说明一个段开始;ends说明一个段结束
5、一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间使用
6、一个有意义的汇编程序中至少要有一个段,这个段用来存放代码
7、End是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。
8、如果程序写完了,要在结尾处加上伪指令end,否则,编译器在编译程序时,无法知道程序在何处结束。
9、assume:含义为“假设”
10、它假设某一段寄存器和程序中的某一个用segment…ends定义的段相联
11、通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相联系
12、标号:一个标号指代一个地址;
codesg:放在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。
13、程序返回:应该在程序的末尾添加返回的程序段。
mov ax,4c00H
int 21H (中断机制)
这两条指令所实现的功能就是程序返回
14、连接的作用有以下几个:
当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,在用连接程序将他们连接到一起,生成一个可知行文件;
15、汇编程序从写出到执行的过程:
编程---->1.asm--->编译---->1.obj---->连接---->1.exe------>加载----->内存中的程序----->运行
16、EXE文件中的程序加载过程:debug调试即可明显的看出
1、程序加载后,ds中存放这程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在的内存区的地址为 ds:0
2、这个内存区的前256个字节中存放的时PSP,dos用来和程序进行通信
3、从256字节处向后的空间存放的是程序
4、从ds中可以得到psp的段地址sa,psp的偏移地址为0,则物理地址为sa*16+0
5、因为psp占256(100H)字节,,所以程序的物理地址是:
sa*16+0+256=sa*16+16*16=(sa+16)*16+0
6、要使用P命令执行int 21