一、基础知识

  • 汇编语言的组成

  • 存储单元

CPU对存储器的读写

  • 地址总线
    寻址,指定存储单元。
    宽度,决定了可操作的存储单元的个数。
  • 数据总线
    宽度,决定了传递速度。
  • 控制总线
    宽度,决定了CPU对外部器件的控制能力。

内存地址空间

假想的逻辑存储器

二、寄存器

  • 通用寄存器
    在进行数据传送或运算时,要注意指令的两个操作对象的位数就当是一致的。

  • 物理地址

  • 段的概念
    编程时将若干连续的内存单元叫做段,是一种人为规定的逻辑概念。

  • 段寄存器
    存放段地址的寄存器,有CS、DS、SS、ES.

  • 关键寄存器CS和IP(指令执行相关)
    CS:代码段寄存器
    IP:指令指针寄存器

*在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M16+N单元开始,读取一条指令并执行。**

修改CS/IP :jmp指令

  • 代码段
  • DosBox的使用

三、寄存器(内存访问)

  • DS
    存放段地址

  • CPU提供的栈机制
    SS与SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。

入栈时,栈顶由高地址向低地址方向增长。

注意栈顶越界的问题

四、第一个程序

  • 源程序
    程序返回
    数据不能以字母开头
  • 编译
  • 可执行文件加载过程
    程序段前缀PSP:https://zhuanlan.zhihu.com/p/483606398, 占100H(256)个字节,程序加载时DS会指向PSP的首地址。

五、[bx]与loop

  • 段前缀
  • 内存安全
    不可随意的向一段内存写入数据

六、包含多个段的程序

七、更灵活的内存地址定位方法(cpu寻址)

  • 定义字符串数据
    db '...'

  • [bx+idata]数组处理

八、数据处理的两个基本问题

  • 数据位置
    指令执行前,所处理的数据所在的位置 :CPU内部、内存、端口
    3个概念用于数据位置的表达:
    1)立即数(idata)
    在汇编指令中直接给出,执行前位于CPU指令缓冲器中。
    2) 寄存器
    3)段地址(EA)和偏移地址(SA)
    存放段地址的寄存器可以通过段前缀指定,如不指定,不同的指令的默认段寄存器不一样的。
  • 寻址方式
    https://blog.csdn.net/m0_62783065/article/details/127526748

    九、转移指令原理

转移指令分类

  • jmp
  • jcxz
  • loop

十、CALL和RET指令

十一、标志寄存器

十二、内中断

  • 内中断的产生
  • 中断处理程序
  • 中断向量表
  • 中断过程

    十三、int指令

    十四、端口

    十五、外中断

    十六、直接定址表


0 条评论

发表回复

您的电子邮箱地址不会被公开。