h2995527 发表于 2011-3-10 09:59:56

si与di 寄存器。是否可以代替 bx??

例子:
code segment

start:

      mov dh , 2

      mov dl , 5

      mov cl , 2

      mov ax , data

      mov ds , ax

      mov si , 0【这里指ds:0。为什么是si。不是bx】

      call show_str
........


例如:
mov ax,date
mov ds,ax
mov si,0
的意思是:ds:内存单元
。为什么不声明bx???而是用si??

如果是:
mov ax, date
mov ds,ax
mov si,0
mov bx,0
是调用 si为偏移地址。还是bx?????
如果si做偏移的时候。bx做什么?
什么时候调用si,什么时候调用bx?

china0008 发表于 2011-3-10 10:12:08

本帖最后由 china0008 于 2011-3-10 10:13 编辑

sidi是纯16位寄存器。 不能分为高低8位。当作为16位寄存器使用的时候跟bx一样。都是通用寄存器。 si和di在 串送指令中 是神器。方便的很啊。


另外你贴完整源码噻……。

lianyoujie 发表于 2011-3-10 11:54:08

h2995527 发表于 2011-3-10 19:02:39

高手啊。谢谢你!!!!:loveliness:
爱你一万年!:lol

790496690 发表于 2011-4-12 10:44:30

本帖最后由 790496690 于 2011-4-12 10:46 编辑

我也是猜想啊:从计算机的角度看,它会以MOV SI,0作为偏移的地址。因为我们的汇编的指令没有明确的指出到底是SI或者是BX等,谁是作为偏移地址,都是最开始的汇编鼻祖,凭自己的习惯定的。但是要是遇到了楼主提出的那种情况的话,因该是按照顺序来的,最前面的那个是偏移地址的寄存器。

   那位大哥来给个决断啊!!!这也是我的一个理解吧!!不知道对不

陌路狂奔 发表于 2011-4-12 11:21:25

学习一下。。。
页: [1]
查看完整版本: si与di 寄存器。是否可以代替 bx??