问题8.1中的不解
本帖最后由 weixianlang 于 2011-7-26 15:06 编辑不是说可以直接从内存单元传递数据到寄存器中么,表示的就是ds段中偏移地址为0的单元中的内容么?那么下面两段代码的作用应该是一样的啊,但是,实际上结果大不相同,要完成8.1的任务就只能用第一种形式,加上段前缀,第二种没加段前缀就出错了,这是为什么呢?
第一种形式:
assume cs:code,ds:data
data segment
dd 100001
dw 100
dw 0
data ends
code segment
start: mov ax,data
mov ds,ax
mov dx,ds:
mov ax,ds:
div word ptr ds:
mov ds:,ax
mov ax,4c00h
int 21h
code ends
end start
第二种形式:
assume cs:code,ds:data
data segment
dd 100001
dw 100
dw 0
data ends
code segment
start: mov ax,data
mov ds,ax
mov dx,
mov ax,
div word ptr
mov ,ax
mov ax,4c00h
int 21h
code ends
end start
还没学到那里呢:Q 请把错误提示截图出来,我在我的机器上试没有问题! 那是debug里才用型式,ds:才是正确的。 第二种的错了
30.mov dx,
31.mov ax,
用编译器的话,运行时debug这把这段话议成.mov dx,2.
也就是说相当于在debug里运行了mov dx,2,那结果当然是错的了 谢谢你们,我明白了 这个在编译器和debug中是一个意思
在编译器中是 2在debug中是
页:
[1]