汇编语言学习笔记——第四章 程序

程序从写出到执行

  • 编写汇编源程序
  • 对源程序进行编译链接
  • 执行可执行文件中的程序
    > 操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置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

程序分析:

(1)
段名 segment
    ...
    ...
段名 ends

segment 和 ends是一对成对使用的伪指令,其功能是定义一个段
segment 说明一个段的开始,ends 说明一个段的结束

一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间使用。

一个有意义的汇编程序中至少要有一个段,用来存放代码。
(2)
end

end 是一个汇编程序的结束标记。
编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。
(3)
assume

assume这个伪指令的含义为“假设”。
它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关

在上例中,用assume cs:codesg将用作代码段的codesg和CPU中的段寄存器cs联系起来。
(4)
mov ax,4c00H
int 21H

一个程序P1在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件加载入内存中,将CPU的控制器交给P2,P2才能得以运行。
P2开始运行后,P1暂停运行。
当P2运行完毕后,应将CPU控制权还给使它得以运行的程序P1,此后P1继续运行。

以上两条指令的功能就是程序返回。
(什么意思现在还不知道!!!)

编写汇编程序

编写

  • 打开文本编辑器,输入汇编程序。
  • 保存为.asm文件。

编译

  • 编辑器:masm
  • 得到.obj文件

连接

  • 连接器:Overlay Linker
  • 得到.exe文件