汇编 程序

发布于 2019-12-13  42 次阅读


在dos下edit工具下写下如下图所示的一段汇编程序,并将其在C盘的根目录下保存为vpoet.asm

注意汇编源程序的后缀是asm。

伪指令

xx segment

xx  ends

定义一个段,xx segment代表段的开始,xx  ends代表段的结束。

伪指令 end

伪指令end代表汇编程序的技术,编译器往往在编译的时候不知道程序什么时候结束,所以就需要找到end这一伪指令来得知程序已经结束。

伪指令assume

伪指令assume用于将一个段寄存器将程序中的一个段相关联,这个段的定义通过伪指令 xx segment和 xx ends来进行定义。比如我们在上面的程序中定义了一个codesg的段,然后通过 assume cs:codesg将该段与代码段相关联

汇编程序中只有汇编指令会被翻译成机器码又CPU执行的,而伪指令是不被CPU执行的,所以将源程序中汇编指令称为程序。程序编译链接成可执行程序,如下图所示:

编译

进入命令行并切换到masm目录,键入masm命令之后就可以对自己编写的汇编程序vpoet.asm进行编译了

编译过程会生成列表文件.lst和交叉引用文件.crf等中间文件

显示0 Warning Errors和0 Servere Errors则证明编译成功。

可以在masm同目录下看到生成的.obj文件。

链接

得到.obj目标文件之后

通过命令行cd进masm目录同时输入link命令

忽略映像文件.map和忽略库文件的链接就可以了。

装载进入内存并使它运行?

  1. 在dos中直接执行vpoet.exe时,是正在运行的command 将vpoet直接载入内存中运行。
  2. command设置CPU的CS:IP指向程序的第一条指令,从而使程序得以运行。
  3. 程序结束后,返回到command,CPU继续运行command

 

 

喜欢这篇文章吗,不妨分享给朋友们吧!

科学是第一生产力