第四章 第一个程序

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

编写汇编源程序——对源程序进行编译连接——执行可执行文件中的程序。

二、源程序

eg:

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、伪指令:没有对应的机器码的指令,最终不被CPU所执行。

segmentends

格式为:段名 segment

               ............

              段名 ends

段名 segment和段名 ends之间的是这个段内存放的内容,是一个代码段。

end

是一个汇编程序的结束标记。

注意:区别ends和end:

           ends和segment成对使用,标记一个段的结束,可以理解为“end segment”。

           end作用在于标记整个程序的结束。

assume

含义为“假设”。用assume将有特定用途的段和相关寄存器关联起来。

eg:用codesg segment.......codesg ends定义的一个段内存放代码,所以是代码段。在程序的开头,用assume cs:codesg将用作代码段的段codesg和CPU中的段寄存器cs联系起来。

2、源程序中的“程序”(略)

3、标号

如:codesg,一个标号指代了一个地址。作为一个段的名称,最终将被编译、连接程序处理为一个段的段地址。

4、程序的结构

定义一个段——在这个段内写入汇编指令——用end指出程序在哪里结束——用assume将段名和相应的段寄存器连接起来。

5、程序返回

在程序末尾添加返回的程序段:

mov ax,4c00H

int 21H

与结束相关的概念

目的 相关指令 指令性质 指令执行者
通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行
通知编译器程序结束 end 伪指令 编译时,由编译器执行
程序返回

mov ax,4c00H

int 21H

汇编指令 执行时,由CPU执行

6、语法错误和逻辑错误

编译时被编译器发现的错误是语法错误。在运行时发生的是逻辑错误。

语法错误易被发现,逻辑错误难被发现。

三、编辑源程序+编译+连接+执行

该过程一般生成3个不同类的文件:

 ①编译用,eg:随意编写一个程序,保存,注意保存方式为.asm

②编译:在DOS中实现

如果文件在其他目录里,不在当前路径下,则要输入路径。

③连接

 

④执行

使用debug ××.exe调试时,首次进入调试界面时,寄存器CX中存放的是可执行文件长度。

 用p或t指令跟踪执行。p命令执行int 21。q命令退出Debug返回到command中。

以上是我习惯的用法,仅供参考。

原文地址:https://www.cnblogs.com/Yangruzhang/p/9788727.html