汇编笔记之三 第一个程序

  之前的汇编代码,我们都是在debug下写的,用A命令写代码,用T去执行的。但是,编写一个完整的程序代码,我们还没做过。现在,让我们看看一个完整的程序如生成。

  先让我们看下下面的代码: (汇编代码随便在那个地方写都没问题,最好是有行号显示的编辑器,因为这样就好找错误,我目前用的是记事本) 

Assume cs:code
code segment
  start:

  
mov ax,1  ;将数字1传送到ax寄存器

  
mov bx,1  ;将数字1传送到bx寄存器

  
add ax,bx  ;将ax和bx里面的值相加,存到ax寄存器

  
mov dx,ax  ;将ax寄存器里面的结果传送到dx

  
mov ax,4c00h  ;这行代码和下面的一行,我也不明白,只知道可以让程序正确的返回

  
int 21h      ;

code ends

end start

  我们来一句一句的分析这段代码。

  Assume cs:code

  意思是假设cs段寄存器与code代码段相关联。接下来就是代码段里面的代码了。也就是整个程序的核心

  第一句 start 意思是,程序将在这里开始执行。

  汇编代码我就不多做解释了,里面有写注释。

  这里我们可以看到代码段是如何写的。

  code segment

  .

  .

  .

  .

  code ends

  是以这样一个形式包括的代码段。

  最后一句end start 也就是整个程序结束。

  好了程序写完了。如何让他变为exe可执行程序呢?

  当然,这里有2个过程,编译和连接。

  编译

  需要用到 MASM.EXE编译器,可以到网上下载。

  连接

  需要LINK.EXE连接器,也可以在网上下载。

  masm.exe p_1.asm 回车 回车 回车

  link.exe p_1.obj 回车 回车 回车

  就会生成2个文件。一个是p_1.exe p_1.obj ;

  

  这个时候,我们可以在Debug下面调试运行我们自己写的程序。

  Debug p_1.exe

  用R命令去查看当前的指令和寄存器状态。用T命令去执行当前指令。直到最后用P命令安全退出。

原文地址:https://www.cnblogs.com/LearningC/p/1955169.html