多文件模块编译,数组求和
程序运行:
暂无
代码:
模块一
extern PROADD:fardatas segmentarray dw 1,2,3,4,5,7,8,7,4,3array_len dw ($-array)/2sum dw 0 table dw 3 dup(?)
datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks
main proc far
start:; push ds; mov ax,0h; push axmov ax,datas ;初始化dsmov ds,axmov table[0],offset arraymov table[2],offset array_lenmov table[4],offset sumlea si,tablepush si call far ptr PROADDmov ax,sumcall OUTDECIMALmov ah,4chint 21h ; retmain endpOUTDECIMAL proc far uses ax bx cxmov bx,10 ;除数mov cx,0 ;计数器,记录数的位数bin:xor dx,dx div bx push dx ;保存余数inc cx cmp ax,0h ;判断被除数是否为0jnz bin ;若不为0,则循环继续bin1:pop dxadd dl,30h mov ah,2 ;输出各位数字 int 21h loop bin1 retOUTDECIMAL endpcodes endsend main
模块二
public PROADDcodes1 segmentassume 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,2loop ad mov [di],axret 2
PROADD endpcodes1 ends
end