请教零基础汇编,实验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是循环计数可以不算在内),就可以完成这个程序。
谢谢回复,虽然没怎么看懂,可能涉及到后面的知识了。不过还是要谢谢二位!
页:
[1]