大股东 发表于 2012-4-24 20:37:47

请教零基础汇编,实验5的第5小题的相关问题。望解答!

5.程序如下,编写CODE段中的代码,将A段和B段中的数据依次相加,将结果存到C段中。
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
d segment
db 0,0,0,0,0,0,0,0
d ends
code segment
start:
       mov ax,a
       mov ds,ax
    mov ax,b
    mov es,ax
    mov ax,d
    mov ss,ax
    mov ax,0
       mov bx,0
    mov dx,0
       mov cx,8
s:   mov al,
       mov dl,es:
    add al,dl
    mov ss:,al
    inc bx
    loop s
    mov ax,4c00h
    int 21h
code ends
end start

问题1:上面说将结果放到c段,我将第三段设置成c segment的时候,MASM并不能通过,换成了d则通过了,请问是什么原因?
问题2:这个程序我虽然写好了,A+B=C,结果也依次送到C里了,但是我对这个程序并不满意,我觉得是否太麻烦了?A+B=C就用到4个寄存器,那要是A+B+C+D+E+F=G,(让A段+B段+...F段送到G段,那怎么操作?寄存器不够用啊?)希望老师能够告诉如何简化这个程序。最好用1-2个寄存器就可以吧这个程序完成,比如只用到ax,bx,就能够区分各个段的地址(cx是循环计数可以不算在内),就可以完成这个程序。

大股东 发表于 2012-4-25 18:06:23

谢谢回复,虽然没怎么看懂,可能涉及到后面的知识了。不过还是要谢谢二位!
页: [1]
查看完整版本: 请教零基础汇编,实验5的第5小题的相关问题。望解答!