带进(借)位的加减法(1102)

本文为《汇编语言程序设计》1102小节例程。点击链接…进课程主页。

编写一个子程序,对两个128位数据进行相加。
名称:add128
功能:两个逆序存放的128位数据进行相加

assume cs:code,ds:data
;这里的128位在data空间中是逆序放置的,就是从低位到高位排列的
data segment
    dw 0A452H, 0A8F5H, 78E6H, 0A8EH, 8B7AH, 54F6H, 0F04H, 671EH
    dw 0E71EH, 0EF04H, 54F6H, 8B7AH, 0A8EH, 78E6H, 58F5H, 0452H
data ends

code segment
start : mov ax,data
        mov ds,ax
        mov si,0
        mov di,16

        mov cx,8

        call add128

        mov ax,4c00h
    int 21h

;编写一个子程序,对两个128位数据进行相加。

;名称:add128
;功能:两个128位数据进行相加
;参数:
;   ds:si指向存储第一个数的内存空间,因数据为128位,所以需要8个字单元,由低地址单元到高地址单元依次存
;   放128位数据由低到高的各个字。运算结果存储在第一个数的存储空间中。

;   ds:di指向存储第二个数的内存空间
add128: push ax
        push cx
        push si
        push di

        sub ax,ax   ;将CF设置为0
      s:mov ax,[si]
        adc ax,[di]
        mov [si],ax
        inc si
        inc si
        inc di
        inc di
        loop s

        pop di
        pop si
        pop cx
        pop ax
        ret

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值