鱼C论坛

 找回密码
 立即注册
查看: 2227|回复: 1

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

[复制链接]
发表于 2012-4-24 20:37:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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,[bx]
       mov dl,es:[bx]
    add al,dl
    mov ss:[bx],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是循环计数可以不算在内),就可以完成这个程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-25 18:06:23 | 显示全部楼层
谢谢回复,虽然没怎么看懂,可能涉及到后面的知识了。不过还是要谢谢二位!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 02:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表