汇编语言(三十)之多模块求和

多文件模块编译,数组求和

程序运行:

暂无

 

代码:

模块一


extern  PROADD:far

datas segment

     array        dw 1,2,3,4,5,7,8,7,4,3
	 array_len    dw ($-array)/2
     sum          dw 0 
	 
	 table        dw 3 dup(?)
datas ends

stacks segment stack

    db  100h dup(?)

stacks ends

codes segment

assume cs:codes,ds:datas,ss:stacks
main   proc  far
start:
      ; push ds
	  ; mov ax,0h
	  ; push ax
       mov ax,datas          ;初始化ds
	   mov ds,ax
       
       mov table[0],offset array
	   mov table[2],offset array_len
	   mov table[4],offset sum
	   
	   lea si,table
	   push si 
	  
	   call far ptr PROADD
     
	   mov ax,sum
	   call OUTDECIMAL
	   
	   mov ah,4ch
	   int 21h 
      ; ret
	   
main endp

OUTDECIMAL proc far  uses ax bx cx
       
	    mov bx,10               ;除数
		mov cx,0                ;计数器,记录数的位数
	  bin:
        xor dx,dx 
        div bx 
	    push dx                 ;保存余数
	    inc cx 
		cmp ax,0h               ;判断被除数是否为0
		jnz bin                 ;若不为0,则循环继续
		
	  bin1:
        pop dx
        add dl,30h 
        mov ah,2                ;输出各位数字 
        int 21h 
        loop bin1	
	
		ret
	   
	 
OUTDECIMAL endp

codes ends

end main

模块二

public PROADD


codes1 segment
   assume cs:codes1
PROADD proc far  uses ax bx cx bp si di 

       
       mov bp,sp	
	   mov si,[bp+16]
	   mov bx,[si]
	   mov di,[si+2]
	   mov cx,[di]
	   mov di,[si+4]
	   
	   mov ax,0 	   
	  ad:
	   add ax,[bx]
	   add bx,2
	   loop ad 
	   
	   mov [di],ax
	   
       ret 2
PROADD endp

codes1 ends
end 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值