第八章
计算机是进行数据的处理, 运算的机器.
那么计算机在处理数据的时候, 就必须知道两个基本信息
- 数据在什么地方
- 数据有多长(二进制串的长度)
对已学寄存器的总结
8086CPU中, 只有四个寄存器可以在 “[ … ] “ 中来进行内存单元的寻址
分别是:
bx (base)
si (source index)
di(destination index)
bp(base pointer)
● 用[ ]表示偏移量
- 四种寄存器可以单独出现, 或只能以四种组合出现: bx和si, bx和di,bp和si,bp和di
- 如果使用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