• 汇编语言-汇编程序初识


    汇编语言-汇编程序初识

    指令介绍:

    mov ax,bx

    mov ax,bx
    
    将bx寄存器中的数据复制移动到ax中

    add ax,bx

    add ax,bx
    
    执行ax+bx运算,将运算结果赋值给ax,即ax = ax+bx;

    sub ax,bx

    sub ax,bx
    
    执行ax-bx运算,将运算结果赋值给ax,即ax = ax-bx

    inc ax

    inc ax
    
    执行 ax+1 运算,将运算结果赋值给ax,即ax = ax+1 ;

    jmp cs:ip

    jmp 1000:0jmp 1000
    
    第一种方式:设置cs(指令存放段地址)为1000,设置ip(指令存放地址偏移量)为0.
    第二种方式:设置ip(指令存放地址偏移量)为1000.

    push

    push指令执行步骤:

    1. SP = SP-2
    2. 向SS:SP指向的字单元中送入数据

    pop指令执行步骤:

    1. 从SS:SP指向的字单元中读取数据
    2. SP = SP+2

    举例说明


    //下面描述了向一个10000H~1000FH这段空间当作栈,进行了入栈出栈操作。
    
    //初始化栈的段地址和地址偏移量
    mov ax,1000
    mov ss,ax
    mov sp,0010
    
    //设置数据
    mov ax,001A
    mov bx,001B
    
    //入栈
    push ax
    push bx
    
    //清零
    sub ax,ax
    sub bx,bx
    
    //出栈
    pop bx
    pop ax
    

    汇编程序

    介绍完了指令,下面我们来介绍如何编写,编译,链接,运行一个汇编程序吧。

    编写

    打开文本编辑器,编写下面文字,存储为.asm类型的文件。之后,我们用test.asm文件举例。

    assume cs:abe
    
    abe segment
    
            mov ax,2H
            add ax,ax
            add ax,ax
    
            mov ax,4c00H
            int 21H
    
    abe ends
    
    end

    知识点介绍:

    1. segment …ends

      segment ...ends为成对使用的定义段的伪指令。在编译的时候,被编译器翻译为一个段。这里面的段和我们之前提到的内存中的段是一个道理。segment表示段的开始,ends表示段的结束,一个汇编程序是由多个段组成的,这些段被用来存放代码,数据,堆栈来使用。

      abe为段的名字,我们叫它标号,一个标号代表一个地址。

    2. end

      end是一个汇编程序的结束标记,编辑器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对汇编程序的编译,即编译结束。

    3. assume

      assume这条指令,假设某一段寄存器和程序中的某一个segment... ends定义的段相关联。通过assume说明这种关联,在需要的情况下可以将段寄存器和某一个具体的段相关联。

    4. 程序结束符号

      下面这两行代码表示结束程序。

    mov ax,2c00H
    int 21H

    编译

    我使用的是masm 5.0,来编译文件。编译,就是将我们之前编写的代码,编程机器可读的机器码。通过编译,我们将编辑文件,编译成了目标文件。(test.asm -> test.obj)

    下面是运行图片:

    这里写图片描述

    链接

    我使用的是overlay linker3.60,通过连接,我们将编译生成的目标文件连接成可执行文件。(test.obj -> test.exe)

    下面是运行图片:

    这里写图片描述

    执行

    输入下面命令行即可:

    这里写图片描述

  • 相关阅读:
    道路和航线
    Sorting It All Out
    Sightseeing Cows(0/1分数规划+Spfa判负环)
    【模板】缩点
    间谍网络
    Tarjan算法专练
    数论知识点总结
    博客迁移到博客园
    第一届CCPC河南省赛
    find程序实现
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026852.html
Copyright © 2020-2023  润新知