主题:程序段的一些疑问
在下面的例子中有一些疑问不是很理解,望能给予指导,谢谢~~~~
编写程序段,完成下面公式的计算(其中:变量X和Y是32位有符号数,变量A,B和Z是16位有符号数)。
A←(X-Y+24)/Z的商,B←(X-Y+24)/Z的余数
解:
DATA1 SEGMENT
X DD ?
Y DD ?
Z DW ?
A DW ?
B DW ?
…
DATA1 ENDS
CODE1 SEGMENT
…
MOV AX, X
[b]MOV DX, X+2 ;用(DX:AX)来保存32位变量X的数值 [/b]在这里中,为什么X要加2呢?
SUB AX,Y
SBB DX, Y+2 ;(DX:AX)-(Y+2:Y)
ADD AX, 24D
ADC DX, 0 ;(DX:AX)+24
[b]IDIV Z [/b]IDIV功能是用显式操作数去除隐含操作数(都作为有符号数),在这里隐含的被除数是什么,为什么?还有就所得到的商和余数是如何放到AX与DX的?
MOV A, AX
MOV B, DX
…
CODE1 ENDS
编写程序段,完成下面公式的计算(其中:变量X和Y是32位有符号数,变量A,B和Z是16位有符号数)。
A←(X-Y+24)/Z的商,B←(X-Y+24)/Z的余数
解:
DATA1 SEGMENT
X DD ?
Y DD ?
Z DW ?
A DW ?
B DW ?
…
DATA1 ENDS
CODE1 SEGMENT
…
MOV AX, X
[b]MOV DX, X+2 ;用(DX:AX)来保存32位变量X的数值 [/b]在这里中,为什么X要加2呢?
SUB AX,Y
SBB DX, Y+2 ;(DX:AX)-(Y+2:Y)
ADD AX, 24D
ADC DX, 0 ;(DX:AX)+24
[b]IDIV Z [/b]IDIV功能是用显式操作数去除隐含操作数(都作为有符号数),在这里隐含的被除数是什么,为什么?还有就所得到的商和余数是如何放到AX与DX的?
MOV A, AX
MOV B, DX
…
CODE1 ENDS