小9 发表于 2013-9-6 16:10:44

关于div和X ptr问题

问题如下
assume cs:codesg,ds:datasg
datasg segment
dd 100001
dw 100
dw 0
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov ax,      
mov dx,
div word ptr             ;为什么div word ptr ds:加个sreg可以编译而div word ptr 不可以?
mov word ptr ,ax   ;为什么 mov word ptr ds:,ax也是这样情况?难道X ptr 格式是错误的,为什么?求解

mov ax,4c00h
int 21h
codesg ends
end start

??? 发表于 2013-9-6 18:12:54

如果不加ds,则和4是一样的!而在debug下用a指令书写汇编指令才不用加ds,直接!
当然如果idata为0,则也可以不用加ds!

liangfei44 发表于 2013-9-7 00:43:24

mov ax,   直接寻址,系统默认为段寄存器ds
MOV BX,   MOV BX,MOV BX,,间接寻址,系统默认段寄存器ds

MOV BX,,系统默认段寄存器SS

而 div word ptr    ,word ptr 只是告诉编译器,这里需要的内存地址是2字节而已,并没有默认的段寄存器,所以需要显示的注明,如果是div word ptr,就会默认为ds的。
mov 也一样。

小9 发表于 2013-9-7 09:07:11

liangfei44 发表于 2013-9-7 00:43 static/image/common/back.gif
mov ax,   直接寻址,系统默认为段寄存器ds
MOV BX,   MOV BX,MOV BX,,间接寻址,系统默认段 ...

谢谢知道了.

小9 发表于 2013-9-7 09:07:44

??? 发表于 2013-9-6 18:12 static/image/common/back.gif
如果不加ds,则和4是一样的!而在debug下用a指令书写汇编指令才不用加ds,直接!
当然如果idata为0,则也 ...

谢谢..................

怡静 发表于 2013-9-7 10:28:18

谢谢两位热心的解答,困为两个人的回答都很好,设最挂只能设一个,所以没办法设,见谅/
页: [1]
查看完整版本: 关于div和X ptr问题