si和di
si和di在8086cpu中的功能与bx类似,si与di不能分为两个8位寄存器来使用
也就是说 ds:[si]是可以的
如果不用这些寄存器直接写的话就会出现之前所说的编译器和exe对程序的不同处理
例 mov ax,[si]在exe中就是 ds:[si],但是如果是 mov,ax,[1]在exe中就是把ax中的数据放入1中
甚至可以直接用[bx+si]的方式或[bx+si+idata]的方式来指明内存地址
不同寻址方式的比较
[idata]用于一个常量的寻址,直接定位一个内存单元
[bx]用于一个变量来表示内存地址,间接定位内存单元
只有bx,bp,di,si具有寻址能力,例如ds:[dx]等都是错误的
并且这几个寄存器间组合还有要求,只有bx+si,bx+di,bp+si,bp+di这四种情况是正确的
只要使用bp,它的段寄存器默认为ss
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment