上学期自学过汇编后,也没有什么经常使用的需求,不到一学期,很多知识就忘却了,只是记个大概,为了以后能快速回忆以前学习的汇编知识,所以写这个来一点点积累平时学到的汇编基础知识点。

可以说有多少种不同内核的CPU,就有多少种汇编语言,当然,很多人学习汇编并不是真的要用汇编开发,而是更加了解自己的小伙伴(或者应付考试???),所以呢,出于这个目的,我总结的是针对于 16 位 CPU 的 masm 汇编。客观讲,虽然汇编与汇编之间有区别,但是他们都是万变不离其宗的,彼此相通,熟练掌握了一种汇编,就不怕搞不懂其他的了。

  1. 寄存器
    寄存器按照功能的不同可分为
    通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、
    段寄存器(CS,DS,ES,SS)、
    指令指针寄存器(IP)、
    标志寄存器(FLAGS)。
    详细请参考: 汇编寄存器

  2. 物理地址
    PA=x16+

  3. 有效地址
    EA=

  4. 7 种寻址方式

    1. 立即寻址方式 Mov AL, 12H (12H 是一个立即数)
    2. 寄存器寻址方式
      • Mov B, BX (源操作数是寄存器)
      • Mov BX, B (目的操作数是寄存器)
      • Mov AX, BX (两者都是寄存器)
    3. 直接寻址方式(中括号中是地址)
      • Mov AX, [1234H] (默认是 DS)
      • Mov AX, ES:[1234H] (指定使用 ES)
    4. 寄存器间接寻址方式 Mov AX, [DI] (DI 是地址)
      注意:操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定。若有效地址用SI、DI和BX来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS。
    5. 寄存器相对寻址方式 Mov AX,[SI + 123H] (寄存器 + 立即数)
    6. 基址加变址寻址方式 Mov AX, [AX + SI] (寄存器 + 寄存器)
    7. 相对基址加变址寻址方式 Mov AX, [BX + SI + 123H] (寄存器 + 寄存器 + 立即数)
  5. 16 位 CPU 内部有 20 根地址线,其编码区为: [00000H,FFFFFH] ,可直接访问的物理空间为 1 M。

    持续更新中……