Principios y aplicaciones de programación de soluciones de microcomputadoras~
; Primero suponga que los 16 números son todos de 16 bits, es decir, dos palabras, y todos son códigos BCD comprimidos, es decir, cada número es hasta 9999
; Si es un código bcd no comprimido, el proceso es similar, puedes modificarlo tú mismo
segmento dseg
num1 dw............ .......... ......; //16 números de código BCD comprimidos
suma dw ?
suma1 dw 0 ;inicializado en 0, p>
dseg termina p>
segmento cseg
proceso principal lejos
asume cs:cseg, ds:dseg
inicio:
push ds
xor ax, ax
push ax
mov ax, dseg
mov ds, hacha
; ----------------------------------
mov cx, 15; //Ejecutar 15 Suma secundaria
mov si, 0
mov si, bx
mov ax, [si];//primero term
mov sum, ax ;Los datos en ax se colocan en dos bytes de sum, sum+1
siguiente:
add si, 2 p>
mov al, byte ptr sum
add al, [si]
daa; ajuste BCD comprimido
mov byte ptr sum, al; poner el resultado en suma
mov al, byte ptr sum+1; //alto 8 bits
adc al, [si+1] ;agregar bits altos
daa
mov byte ptr sum+1, al
jnc loop_next ; Si se suman dos números y no hay acarreo, agregue el siguiente elemento
mov al, byte ptr sum1
adc al, 0 ;Si hay un acarreo, procéselo
daa
mov byte ptr sum1, al
jnc loop_next
mov al, byte ptr suma1+1
adc al,0
daa
mov byte ptr sum1+1, al p>
loop_next:
bucle siguiente
ret
final principal
cseg termina
fin inicio