8086学习记录

本次学习记录参考书籍《汇编语言程序设计》
主编:雷金辉
副主编:李心一,杨志翔
配合学习8086的汇编原理特别推荐这一本书
佩服老一代学者清晰的逻辑和干练的语言组织

寄存器

8086/8088内部有14个16位寄存器,可分为三类

  1. 通用寄存器8个

    AX[AH,AL]累加器

    BX[BH,BL]基址寄存器

    CX[CH,CL]计数寄存器,在循环控制指令中会指定操作该寄存器

    DX[DH,DL]数据寄存器

    SP堆栈指针寄存器。在使用堆栈操作指令(push, pop)对堆栈操作的时候会自动地将sp内容进行加减操作

    BP基址寄存器通常用来存放操作数在堆栈段内的偏移地址

    SI源变址(偏移地址)寄存器

    DI目的变址寄存器 这两个寄存器在串操作指令中用来进行字符操作

  2. 段寄存器4个

    CS代码段寄存器,存放当前代码运行的段基址 与IP寄存器结合定位代码位置

    DS数据段基址

    SS堆栈段基址,配合SP对堆栈进行操作配合SI进行串的操作

    ES附加段基址,配合DI进行串的操作

  3. 指令控制寄存器
    IP存放下一条要读取的指令在代码段中的偏移地址
    FLAGS 是一个16位的寄存器,但是只用了其中的9位,包括其中的6个状态寄存器和3个控制标志位

    1. CF进位借位标志
    2. PF奇偶标志位:当指令执行结果的低8位中含有偶数个1时PF=1否则为0
    3. AF辅助进位借位标志
    4. ZF零标志位,当运算结果为0时该标志位=1否则=0
    5. SF符号标志位与运算结果的最高位相同
    6. OF溢出标志位
    7. TF陷阱标志位
    8. IF中断允许标志位,若将该为置为1表示可以接受外部从INTR引脚上发来的中断请求
    9. DF方向标志位,若将改为置为1串操作按减地址方向进行

1735729486180

程序结构

一个程序是由若干逻辑堆栈段,逻辑数据段,逻辑附加段,逻辑代码段构成,每种段可以有多个,但是一个程序的最少组成是一个代码段

寻址方式

参考博客【MASM汇编语言快速入门】寻址方式速查表_masm 怎么用al间接寻址-CSDN博客