1、处理的的数据在什么地方?
2、要处理的数据有多长?
一、bx,si,di,bp:
1、reg:寄存器
sreg:段寄存器
reg包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、si、di
sreg包括:ds、ss、cs、es
2、在8086CPU中,只有bx、bp、di、si这四个寄存器可以在”[…]”中来进行内存单元的寻址,如:
3、在[…]中使用bp寄存器,而指令中没有显性的给出段地址,段地址就是默认在ss中,如:
4、指令在执行前,所要处理的数据可以在CPU内部、内存、端口这三个地方
5、在汇编语言中以下概念来表达数据的位置:
①、立即数(idata)
②、寄存器
③、段地址(SA)和偏移地址(EA)
6、立即数:对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为立即数:如:mov ax,1 中,1是立即数
二、指令处理的数据的长度:
1、8086CPU的指令,可以处理两种尺寸的数据:byte、word。在机器指令中,要指明指令进行的是字操作还是字节操作
2、确定要指令处理的数据的长度的方法:
①、通过寄存器名指明要处理的数据的尺寸
②、在没有寄存器名的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte
3、默认访问的是字单元或字节单元的指令:
①、push [1000H]不用指明访问的是字单元还是字节单元
三、div指令:
1、div是除法指令(didvision),使用的注意点:
①、除数:8位或16位,在寄存器或内存单元中
②、默认放在AX或DX和AX中
2、
除数 | 被除数 |
---|---|
8位 | 16位(ax) |
16位 | 32位(dx+ax) |
①、结果的存放:
结果: | 运算 | 8位(除数) | 16位(除数) |
---|---|---|---|
商: | al | ax | |
余数: | ah | dx |
③、div指令格式:
div reg
div 内存单元
3、例如:
①、div byte ptr ds:[0]
含义:(al) = (ax) / ((ds)16 + 0) 的商
(ah) = (ax) / ((ds)16 + 0) 的余数
②、div word ptr es:[0]
含义:(ax) = [(dx)10000H + (ax)] / ((ds)16 + 0) 的商
(dx) = [(dx)10000H + (ax)] / ((ds)16 + 0) 的余数
③、dis byte ptr [bx+si+8]
含义:(al) = (ax) / ((ds)16 + (bx) + (si) + 8) 的商
(ah) = (ax) / ((ds)16 + (bx) + (si) + 8) 的余数
④、div word ptr [bx+si+8]
含义:(ax) = [(dx)10000H + (ax)] / ((ds)16 + (bx) + (si) + 8) 的商
(dx) = [(dx)10000H + (ax)] / ((ds)16 + (bx) + (si) + 8) 的余数