汇编学习总结

汇编学习笔记

一、基础知识

汇编语言的组成

  • 汇编语言由 3 类指令组成
    1. 汇编指令:机器码的助记符,有对应的机器码
    2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
    3. 其他符号:如+ 、- 、 * 、 /等,由编译器识别,没有对应的机器码

汇编语言的核心是汇编指令,它决定了汇编语言的特性

存储器

即为内存

指令和数据

存储单元

存储器被分为若干个存储单元,每个存储单元从 0 开始顺序编号,例如 0 ~ 127
计算机最小信息单位是 bit 也就是一个二进制位。8 个bit 组成一个 byte 也就是通常所说的一个字节。

一个汇编程序的基本结构

  1. 这是定义一个段,名称为 abc

     abc segment
       .
       .
     abc ends
    
  2. 在这个段中写入汇编指令,来实现相关任务

     abc segment
    
     mov ax,2
     add ax,ax
     add ax,ax
    
     abc ends
    
  3. 然后 要指出程序在何处结束

     abc segment
    
     mov ax,2
     add ax,ax
     add ax,ax
    
     abc ends
    
     end
    
  4. abc 被当做代码段来用,所以,应该将 abc 和 cs 联系起来。(当然这个程序,也不是非这样做不可)

     assume cs:abc
     abc segment
    
     mov ax,2
     add ax,ax
     add ax,ax
    
     abc ends
    
     end
    
  5. 程序返回

一个程序结束后,将 CPU 的控制权 交给使它得以继续运行的程序,我们称这个过程为:程序返回
那么如何返回呢? 应该在程序的末尾 添加返回的程序段

  mov ax,4c00H
  int 21H
// 这两条指令 所实现的功能就是程序返回
  • 与结束相关的概念
    目的 相关指令 指令性质 指令执行者
    通知编译器一个段结束 段名 ends 伪指令 编译时,由编译器执行
    通知编译器程序结束 end 伪指令 编译时,由编译器执行
    程序返回 mov ax,4c00H int 21H 汇编指令 执行时,由 CPU 执行

执行一个汇编源程序的步骤在 dosbox 下

在 dosbox 下 输入 masm 可以显示出版本

  • masm

    编译文件 masm xx.asm
    第一个回车 确定输出目标文件名称
    第二个回车 忽略列表文件生成
    第三个回车 忽略交叉引用文件生成

在 dosbox 下 输入 link 可以显示出版本

  • link

    连接 目标文件 从而得到可执行文件
    连接文件 link xx
    第一个回车 输入可执行程序的名称
    第二个回车 忽略映像文件生成
    第三个回车 输入调用的子程序 忽略库文件的连接 忽略按回车
    最后会报一个错LINK : warning L4021:no stack segment // 没有栈段 这里我们不理会这个错误

说完复杂的 方法 现在换简单的

masm xx; // 在结尾加上分行,按enter后,编译器就对xx文件进行编译,在当前目录生成目标文件xx.obj,并在编译的过程中自动忽略中间文件的生成

link xx; // 同上

有什么不同见解可以在评论区共同讨论
原文地址:https://www.cnblogs.com/lambertlt/p/12663597.html