xiaoshazi 发表于 2017-1-16 09:27:37

汇编语言实验五(5)一个问题!

本帖最后由 xiaoshazi 于 2017-1-16 09:45 编辑

我的问题在红字那里!!
assume cs:code

a segment

    db 1,2,3,4,5,6,7,8

a ends

b segment

    db 1,2,3,4,5,6,7,8

b ends

c segment

    db 0,0,0,0,0,0,0,0

c ends

code segment

start: mov ax,a

       mov ds,ax   ;ds指向a段地址

       mov ax,b

       mov es,ax   ;es指向b段地址

       mov bx,0

       mov cx,8

    s: mov al,

       add al,es:

       mov dx,c

       mov ds,dx   ;ds指向c段地址

       mov ,al

       mov ax,a

       mov ds,ax   ;重新将ds指向a段(好像此处还能改进) 这里为什么要重新将段数指向a段啊

       inc bx

       loop s

    mov ax,4c00h

    int 21h

code ends

end start

redstone8415 发表于 2017-1-16 10:04:27

本帖最后由 redstone8415 于 2017-1-16 10:13 编辑

assume cs:code ds:b es:a
操作哪段就装入哪段! 因为A段和B段不在同一段 ,一个标号代表一段。

zealstar 发表于 2017-1-19 04:42:20

s: mov al,

       add al,es:

       mov dx,c

       mov ds,dx   ;ds指向c段地址

       mov ,al

       mov ax,a

       mov ds,ax   

       inc bx

       loop s
当将数值写入c段后,执行循环,到s标号处开始,执行mov al,此时(al)==(ds:bx)而这个ds指向的是c!不是a!所以不能缺少你所说的那句。
页: [1]
查看完整版本: 汇编语言实验五(5)一个问题!