8086系列(15):子程序参数传送----通过直接访问模块中的变量传递参数

题目

主程序MAIN和过程PROADD在同一源文件中,要求用过程PROADD累加数组中的所有元素,并把和(不考虑溢出)送到指定的存储单元去。

思路

如果通过直接访问模块中的变量传递参数那么子程序就被写死了,如果要求再计算一次求和,那么子程序将无法复用,下一节将介绍第三种方法,通过地址表传送参数地址。

代码

;;;;;;;;通过直接访问模块传递参数;;;;;;;;;;;
datasg segment
    ary dw 1,2,3,4,5,6,7,8,9,10
    count dw 10
    sum dw ?
datasg ends
;--------------------
codesg segment
    assume ds:datasg,es:datasg,cs:codesg

;----------MAIN---------
main proc far
start:
    push ds
    sub ax,ax
    push ax
    mov ax,datasg
    mov ds,ax
    mov es,ax
;------------
    call near ptr proadd
    ret
;-----------
main endp
;----------MAIN---------

;---------PROADD--------
proadd proc near
    lea si,ary
    mov cx,count
    xor ax,ax  
next:
    add ax,[si]
    add si,2
    loop next
    mov sum,ax
    ret
proadd endp
;---------PROADD--------
codesg ends
end start

调试

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值