zoukankan      html  css  js  c++  java
  • 汇编笔记之三 第一个程序

      之前的汇编代码,我们都是在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命令安全退出。

  • 相关阅读:
    iOS各种证书
    Error No matching provisioning profiles found
    iOS 一个开发者账号 多台Mac 共用
    外中断(学习汇编)
    端口(学习汇编)
    8086CPU寄存器
    int指令(学习汇编)
    内中断(学习汇编)
    标志寄存器(学习汇编)
    CALL和RET指令(学习汇编)
  • 原文地址:https://www.cnblogs.com/LearningC/p/1955169.html
Copyright © 2011-2022 走看看