汇编程序:多数绝对值和

【任务】在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。

data segment
  buf1 dw -56, 24, 54, -1, 89, -8, 87, -32, 23, 45
  buf2 dw 45, -23, 124, 345, -265, -214, 0, 48, -10, -12
  sum dw 10 dup (0)
data ends

【参考解答】

assume ds:data, ss:stack, cs:code

data segment
  buf1 dw -56, 24, 54, -1, 89, -8, 87, -32, 23, 45
  buf2 dw 45, -23, 124, 345, -265, -214, 0, 48, -10, -12
  sum dw 10 dup (0)
data ends

stack segment para stack
  dw 20h dup (0)
stack ends

code segment
start:
       mov ax, data
       mov ds, ax
       mov cx, 10
       lea si, buf1
       lea di, buf2
       lea bx, sum

 next: mov ax, [si]    ;取第一个数
       mov dx, [di]    ;取第二个数
       test ax, 8000h  ;8000h,最高位为1,为负
       je tdx          ;结果为0,说明ax中是正数,不需要取反
       neg ax
  tdx: test dx, 8000h
       je adds         ;结果为0,说明dx中是正数,不需要取反
       neg dx
 adds: add ax, dx      ;原数的两个绝对值相加
       mov [bx], ax    ;bx为存放结果的单元地址
       add si, 2
       add di, 2
       add bx, 2
       loop next

       mov ah, 4ch
       int 21h
code ends
  end start
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值