汇编语言 第三版王爽 学习笔记与总结

X86 汇编语言总结

1. 寄存器

  1. CS:IP

    CS是段地址,IP是偏移地址
    CS:IP 指向CPU当前要读取指令的地址
    CS x 16 + IP

  2. DS
    DS也是一个段寄存器
    当使用 [idata] 或者 [bx] 的时候,idata 或者bx就是偏移地址。
    则指向的确切地址就是 DS:[idata] 或者 DS:[bx]

  3. CX
    是一个loop的计数器。
    当运行到loop指令段的时候,先让CX减一,如果CX不等于 0 . 则跳转

  4. SI 和 DI
    是8086CPU中和bx功能相近的寄存器,但不能分成2个8位寄存器来使用

  5. AX,BX,CX,DX
    都可以分为 高和低 2个8位寄存器

2. 语法

  1. mov
    相当于赋值
  2. add, sub
    加 / 减
  3. push,pop
    入栈,出栈
  4. loop
    循环,和CX一起用
  5. and,or
    逻辑与,逻辑或
    (注:大小写转换很有用)

3. 数据结构


  1. 先进后出,后进先出

  2. 数组

    可以用[bx + idata] 来实现

4. 程序结构

  1. 伪指令
    segment
    ......
    ends

  2. assume
    假设某一段寄存器和程序中的某一个用segment...ends 定义的段相关联
    例如: assume cs : codesg

    一般要和cs联系起来。因为cs指向CPU执行方向

  3. end
    一个汇编程序的结束标记。

  4. 返回指令
    mov ax,4c00H
    int 21H
    这2条指令实现的功能就是程序返回

  5. 程序结构
    DS存储程序地址。
    然后会有一段程序段前缀(PSP)(Program segment prefix)256个字节
    DOS要用PSP用来加载程序进行通信

    然后才是程序段, 程序入口由CS指向

    所以有如下关系: DS + 10H = CS

5. DOSBox

  1. 可以用 EDIT 来编辑,编辑后保存为asm文件
  2. 然后用MASM来编译,将asm文件编译为obj文件
  3. 再用LINK来连接, 将obj文件链接为exe可执行文件。
  4. 最后可以用DEBUG来对exe文件进行debug
原文地址:https://www.cnblogs.com/orangestar/p/13409479.html