抄书笔记-汇编语言 第四章 第一个程序

现在终于可以编写完整的汇编程序,我们使用编译和连接程序将他们编译连接成可执行文件,在操作系统上面执行。

4.1一个源程序从写出到执行的过程

  1. 第一步,编写汇编程序(包含初始化,设置CS:IP的位置)
  2. 第二步,对汇编程序进行编译和连接,生成可执行文件。可执行主要包含两个部分,一个是程序,一个是相关的信息
  3. 第三步,执行可执行文件
st=>start: 编写汇编程序
e=>end: 执行可执行文件
op=>operation: 对原程序进行编译链接
st->op->e

4.2源程序

程序4.1

assume cs:codesg
codesg segment
    mov ax,01234H
    mov bx,0456H
    add ax,bx
    add ax,ax
    
    mov ax,4c00H
    int 21H
codesg ends
end

1.伪指令

在汇编程序中,包含两种指令,一种是汇编指令,一种伪指令

汇编指令是有对应的机器码,可以被程序执行的

伪指令则是在编译的时候,被编译器识别

伪指令集合:

实例 说明
xxx segment segment 和end都是一种伪指令,必须成对出现
end 汇编语言结束标志
assume 假设 用于寄存器和代码关联

2.源程序中的程序

用汇编编写的原程序,包括伪指令和汇编指令,其中伪指令由编译器处理,汇编指令由计算机最终执行。我们说的程序,就是指源程序中最终由计算机执行,处理的指令或数据。

源程序文件中的所有内容都是源程序,将源程序中最终被计算机执行,处理的指令或者数据,称为程序。

3.标号

在汇编程序中,除了汇编指令之外,还有一些标号,比如:"codesg"

4.程序的结构

5.程序返回

一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载到内存后,将CPU的控制权交给P2,P2才能得以运行。P2开始运行之后,P1暂停运行。

而当P2运行完成之后,应该将CPU的控制权交还给使它运行的程序P1,此后,P1继续运行。

上述将控制权转还给P1的过程就是程序返回,在汇编中使用如下代码:

mov ax,4c00H
int 21H

与结束相关的

目的 相关指令 指令性质 指令执行者
通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行
通知编译器程序结束 end 伪指令 编译时,由编译器执行
程序返回 mov ax,4c00H int 21H 汇编指令 执行时,由CPU执行

4.4编辑源程序

4.5连接

4.6简化的方式编译和连接

4.7执行程序

4.8谁将执行文件装入内存

  1. 在dos中执行1.exe时,正在运行的是command程序,将1.exe中的程序加载入内存;
  2. command程序设置CPU的cs:ip指向程序的第一条指令(即程序的入口),从而使程序得以运行;
  3. 程序运行之后,返回到command中,CPU继续运行command;

汇编程序从写出到执行的过程

st=>start: 编程
e=>end: 运行
op1=>operation: 1.asm
op2=>operation: 编译
op3=>operation: 1.obj
op4=>operation: 连接
op5=>operation: 1.exe
op6=>operation: 加载
op7=>operation: 内存中的程序
st->op1->op2->op3->op4->op5->op6->op7->e

4.9程序执行过程的跟踪

共有 0 条评论

Top