| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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是循环计数可以不算在内),就可以完成这个程序。 
 |   
 
 
 
 |