我在书中已经读到,当SI
寄存器小于DI
寄存器(在字符串操作中)时,方向标志等于0,否则方向标志等于1。
但是我也读过,指令通常不会改变方向标志,那么它的确切用法是什么?我们应该根据字符串的第一个和最后一个索引设置或取消设置此标志吗?(我们应该处理该标志还是让CPU处理?)
我在上述陈述中错了吗?
在8086中,此结构是正确的:
mov bh,[bx]
Run Code Online (Sandbox Code Playgroud)
但这是不正确的:
mov bh,[cx]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 我认为通用寄存器(AX,BX,CX,DX,SP,BP,SI和DI)是可以用于任何目的的寄存器,并且BX用于基地址或CX用于计数器的声明只是一个约定,它们完全没有区别。但是看来我错了。你能解释原因吗?这些寄存器之间的确切区别是什么?(例如,为什么不能将基址保存在cx寄存器中?)
我不知道除法中溢出的确切定义是什么。你能先解释一下,然后通过下面的例子来指导吗?
例如我的书上写过这段代码导致溢出。不知道为什么??
mov dx,0087h
mov ax,6002h
mov bx,10h
div bx
Run Code Online (Sandbox Code Playgroud)
但是这段代码是正确的,不会导致溢出:
mov dx,0087h
mov ax,6000h
mov bx,100h
div bx
Run Code Online (Sandbox Code Playgroud)
那么为什么第一个结果变成溢出而第二个结果不是有什么区别呢?