bx、si、di、bp
在8086CPU中,只能使用这4个寄存器寻址内存单元。
在[ ]中,这4个寄存器可以单个出现,或只能以下列组合出现:
- bx和si、di
- bp和si、di
只要在[ ]中使用寄存器bp,段地址就默认在ss中。
机器指令处理的数据所在位置
数据处理的方式:读、写、运算
数据类型:指令、数值
数据所在位置:CPU内部、内存、端口
汇编语言中(存取)数据位置的表达
立即数:要处理的数据直接包含在指令中
寄存器:要处理的数据在指令中的寄存器中
段地址(SA):偏移地址(EA):要处理的数据在内存中
只有内存单元才有地址:SA、EA和PA
指令要处理的数据长度
8086CPU可以处理的数据长度:
- 8位 byte 字节型数据
- 16位 word 字数据
汇编语言中的处理方法:
- 通过寄存器指明要处理的数据长度
- 在没有寄存器的情况下用
word ptr/byte ptr指明数据长度 - 其他方法(默认长度)例:
push [1000h]
寻址方式的综合应用
一般来说,我们可以用[bx+idata+si]的方式来访问结构体中的数据。
用bx定位整个结构体,用idata定位结构体中的某一个数据项,用 si 定位数组项中的每个元素 。
为此,汇编语言提供了更为贴切的书写方式。
如:[bx].idata、[bx].idata[si]。
div除法指令
格式:div op(内存单元、寄存器
说明:
- 被除数
- 16位放在AX
- 32位DX放高16位,AX放低16位
- 除数
- 放在OP 中
- 结果
- 8位除数:商存放在AL中,余数放在AH
- 16位除数:商存放在AX,余数放在DX
注意:被除数长度必须是除数长度的两倍!
定义重复变量伪指令dup
格式:DB n DUP (重复的数据)
例:DATA1 DB 10 DUP (0)
定义DATA1为10个“0”组成的字节变量DATA2 DW 2 DUP (?)
定义DATA2为2个不确定数值的字变量DATA3 DB 4 DUP (1,2 DUP(50H)
定义DATA3为(1,50H,50H)重复4次共12个字节的字节变量