第八章

计算机是进行数据的处理, 运算的机器.
那么计算机在处理数据的时候, 就必须知道两个基本信息

  • 数据在什么地方
  • 数据有多长(二进制串的长度)

对已学寄存器的总结

8086CPU中, 只有四个寄存器可以在 “[ … ] “ 中来进行内存单元的寻址
分别是:
bx (base)
si (source index)
di(destination index)
bp(base pointer)

● 用[ ]表示偏移量

  1. 四种寄存器可以单独出现, 或只能以四种组合出现: bx和si, bx和di,bp和si,bp和di
  2. 如果使用bp则默认以ss为段寄存器, 其他默认以ds为寄存器

确定数据的位置

  • 立即数(idata)

直接包含在机器指令中的数据,执行前在CPU的指令缓冲区

  • 寄存器(register)

指令要处理的数据在寄存器中,在 汇编指令中给出相应的寄存器名即可

  • 段地址(Segment address)和偏移地址(effective address)

不含bp的段地址默认在ds
含dp的段地址默认在ss
也可以显示 的指出段地址

确定数据长度

  • 通过寄存器名指出要处理的数据尺寸

  • 在没有寄存器名的情况下, 可以用操作符 X ptr 知名内存单元的长度, X在汇编指令中可以是word或byte

exp: mov byte ptr [1000h],1

  • 用push 和 pop指令的时候数据大小规定为一个字

div指令

div(divide) 是除法指令 , 该指令通过 除数的大小不同分为两种情况

情况1 : 除数大小为8bit
这种情况被除数默认在 ax 中存放, 16bit,
结果:
al 中存放商
ah 存放余数

情况2: 除数大小为16bit
这种情况被除数默认在 ax 和dx中, ax存放低16位, dx存放高16位

结果:
ax存放商
dx存放余数 (低商高余)

操作符dup
dup即duplicate(重复)
db 3 dup (0,1,2)
这句代码会产生9个字节 内容分别是0,1,2,0,1,2,0,1,2