回 帖 发 新 帖 刷新版面

主题:求救

这个程序实现删除附加段中LIST字数组中与AX相同的内容
其中一句lea di,list
我用debug中的-t调试,怎么这句是di 指向的是数据段的啊
即:
这句翻译为 lea di, [0000]       ds:0000=20cd

为什吗?0000不应该是附加段的吗,怎么是数据段的啊


es_seg segment

    list dw 5,1,2,3,4,5
    
es_seg ends


prognam segment

main proc far

    assume cs:prognam,es:es_seg

start:

    push es

    mov ax,0

    push ax

    mov ax,es_seg

    mov es,ax
    
    mov ax,2
    
    lea es:[di],list  //这句
    
    cld

    push di
    
    mov cx,es:[di]

    add di,2

    repne scasw

    je delet

    pop di

        jmp short exit

delet:
    jcxz dec_cnt

next_el:
    mov bx,es:[di]

    mov es:[di-2],bx

    add di,2

    loop next_el

dec_cnt:
    pop di

    dec word ptr es:[di]

exit:
    ret

main endp

prognam ends

end start

回复列表 (共1个回复)

沙发

mov ax,es_seg

    mov es,ax
数据段和附加段完全重叠!实际就是同一个段。

我来回复

您尚未登录,请登录后再回复。点此登录或注册