远山 发表于 2016-5-19 19:35:20

给个检测点16.2的答案呗

{:10_277:}

兰陵月 发表于 2016-6-14 21:07:35

mov ax,data   

mov es,ax

assume那里已经将data段和es寄存器挂钩,但是那种挂钩只是编译器做的,程序并不知道,所以你要将data的段地址给es,以后的数据就默认是段地址是es了。

BellXu 发表于 2017-8-8 15:54:35

兰陵月 发表于 2016-6-14 21:07
mov ax,data   

mov es,ax


我觉得既然和b都是默认ds,第二句仍应为mov ds,ax啊。。

BellXu 发表于 2017-8-8 16:01:21

BellXu 发表于 2017-8-8 15:54
我觉得既然和b都是默认ds,第二句仍应为mov ds,ax啊。。

我错了!ASSUME把DATA段和ES关联,故默认段改为ES。

秋雪冬枫 发表于 2018-8-23 20:09:23

还是不明白啊。。。

nihility_z 发表于 2019-9-5 23:08:24

BellXu 发表于 2017-8-8 16:01
我错了!ASSUME把DATA段和ES关联,故默认段改为ES。

为什么会这样啊,不是si的默认就是ds嘛~~~

sos2356 发表于 2021-2-19 19:07:29

assume cs:code,es:data

data segment
a        db 1,2,3,4,5,6,7,8
b        dw 0
data ends

code segment


start:        mov ax,data
                mov es,ax   ;data段要和es段关联
                mov si,0
                mov cx,8
               
        s:         mov al,a
                mov ah,0
                add b,ax
                inc si
                loop s
               
                mov ax,4c00h
                int 21h
               
code ends
end start
页: [1]
查看完整版本: 给个检测点16.2的答案呗