寄存器都是16位的,要实现两个128位的数字的加法。

128位的数字都放在内存里,先计算最16位的结果,然后开始高位挪动。

ds:si 指向第一个参数

ds:di 指向第二个参数

add128: push ax
        push cx
        push si
        push di
      
        sub ax,ax; CF设置为0
        mov cx,8; 16一组需要8次
      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

如果用