数据处理的两个基本问题
8086为例
待处理数据的寻址
寻址方式汇总
- 直接寻址: [idata]
- 寄存器间接寻址: [bx] [si] [di] [bp]
- 寄存器相对寻址: [bx+idata] [si+idata] [di+idata] [bp+idata]
- 基址变址寻址: [bx+si] [bx+di] [bp+si] [bp+di]
- 相对基址变址寻址: [bx+si+idata]等等
数据长度
- 寄存器名指明处理数据的尺寸
16位寄存器AX 字单位
8位寄存器AL 字节单位 - 操作符 X ptr 指明尺寸
word ptr 字单元
byte ptr 字节单元 - 其他方法
有些指令默认尺寸,例如push pop 只进行字操作
div除法指令
16位(AX) | 32位(DX+AX) |
---|---|
8位 | 16位 |
AL(商)AH(余数) | AX(商)DX(余数) |
div reg
div 内存单位
后面的都是分母储存位置
- div byte ptr ds:[0]
结果:(al)=(ax)/((ds)*16)的商
(ah)=(ax)/((ds)*16)的余数 - div word ptr es:[0]
结果:(ax)=[(dx)*16+(ax)]/((es)*16)的商
(dx)=[(dx)*16+(ax)]/((es)*16)的余数
dup操作符
与db dw dd配合使用
用于数据重复
xx 重复次数 dup (重复数据类型)
- dd 3 dup (0)
定义12个字节都为 0 - dw 3 dup (0,0,0)
定义18字节都为0 - db 2 dup (0,0)
定义4个字节都为0