8 数据处理的两个基本问题
定义描述性符号:
-
reg表示一个寄存器
-
sreg表示一个段寄存器
8.1 bx、si、di、bp
- 8086cpu中,只有
bx、si、di、bp
四个寄存器可用在[...]
进行内存单元的寻址 - 在
[...]
中,四个寄存器可以单个出现,或只能以四种组合出现:- bx si
- bx di
- bp si
- bp di
[...]
使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。
8.3 数据位置的表达
-
立即数(idata)
mov ax,1
-
寄存器
mov ax,bx
-
段地址(SA)和偏移地址(EA)
8.7 div指令
div是除法指令:
- 除数:有8位和16位两种,在一个reg或内存单元中。
- 被除数:默认放在AX或DX和AX中,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
- 结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
例子:
div btye ptr ds:[0]
含义:(al)=(ax)/((ds)*16+0)的商
(ah)=(ax)/((ds)*16+0)的余数
div word ptr es:[0]
含义:(ax)=[(ds)*10000h+(ax)]/((es)*16+0)的商
(dx)=[(ds)*10000h+(ax)]/((es)*16+0)的余数
实例:
利用除法指令计算100001/100
mov dx,1
mov ax,86a1h;10001大于65535不能用但寄存器存放,转换为十六进制后分开存储
mov bx,100;写入除数
div bx;执行除法
8.8伪指令
db和dw定义字节型数据和字型数据
dd定义双字型数据,如:
data segment
db 1;占一个字节
dw 1;占一个字
dd 1;占两个字
data ends
8.9 dup
dup是一个操作符,用来数据重复.
dup使用格式:dw\db\dd 重复次数 dup(重复数据)
。如:
dp 3 dup("adb");定义了9个字节,是"adbadbadb"