+ -
当前位置:首页 → 问答吧 → 只assume了cs,那么ds和es是有默认值呢,还是未定义的值?

只assume了cs,那么ds和es是有默认值呢,还是未定义的值?

时间:2010-12-31

来源:互联网

需要用到串操作的时候,ds和es一定需要assume么?

还是说在代码里面mov一个合适的值就可以了?

如果代码里面有了
mov ax, XXXX
mov ds,ax
mov es,ax

那么代码最开始是不是就不需要assume ds和es的值了? assume对于产生的代码到底有什么影响?

很疑惑啊

作者: asdf12312y   发布时间: 2010-12-31

不一定需要assume来指明,比如:

Assembly code
d:\MASM>type cl.asm
;
;This Program Compiled Sucess by Masm 6.15
;
assume  cs:code
data    segment
a       db      'abc'
b       db      '123'
data    ends
code    segment
start:
        mov ax,data
        mov ds,ax
        mov es,ax
        mov si,offset a
        mov di,offset b
        mov cx,lengthof a
        cld
        rep movsb
;
        mov ah,4ch
        int 21h
code    ends
end     start

但是,cs是必须要assume来指明的。

作者: masmaster   发布时间: 2010-12-31

ds,es,ss段在程序里可以临时声明一下即可。(楼主可以自行验证一下)

作者: masmaster   发布时间: 2010-12-31