汇编学习笔记三

assume cs:codesg

codesg segment

    mov ax,0123H
    mov bx,0456H
    add ax,bx
    add ax,ax
    
    mov ax,4c00H
    int 21H
    
condesg ends
end

终于学到了编程部分了,期待许久了。

这个程序里有3个伪指令segment和ends是一对伪指令,用来说明段的开始和结束

还有一个是end说明汇编结束

assume代表程序中某一段和寄存器,对应的这里cs是指令寄存器,codesg在代码写codesg segment那定义了位置那。

codes是标号,一个标号代表一个地址,这里的codes在segment的前面,说明codesg是一个段的名称,这个段的名称最终被编译、连接程序处理为一个段的段地址。

汇编编译完后需要连接生成可执行文件。

————————————————————————————————————————————————————

 

 第一个是源文件文件名

第二个是生成的目标文件

第三个和第四个都是编译为目标文件过程中产生的中间结果,第三个是列表文件,第四个是交叉引用文件

如果编译出错是得不到目标文件的。一般来说,有两类错误使我们得不到所期望的目标文件:程序中有“Severe Errors”和找不到所给出的源程序文件

编译完后,那么就要生成可执行文件了

汇编学习笔记三_第1张图片

 

 

 从图中可以看出它也让你填四个东西。

第一个文件是目标文件的文件名

第二个是执行文件的文件名

第三个是输入映象文件的名称

第四个是对于这个程序连接了哪些库文件

————————————————————————————————————————————————————

 

连接的作用:

1.当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件;

2.程序中调用了某一个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;

3.一个源程序编译后,得到了存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接程序将这些内容处理为最终的可执行信息。所以,在只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须要用连接程序对目标文件进行处理,生成可执行文件。

————————————————————————————————————————————————————

当你用debug file.exe来调试某个程序时

运行到返回程序也就是上面程序的int 21那时,要用p命令执行,不能用t命令执行,否则退不出去(试了下)

汇编学习笔记三_第2张图片

 

 这是PSP的内容,可以看到ds的值为075A所以而程序在的段地址是076A所以PSP占了256个字节,并且在程序执行过程中DS指向的是PSP的地址。

DOS要利用PSP来和被加载的程序进行通信;

你可能感兴趣的:(汇编学习笔记三)