Cómo sumar números decimales de varios dígitos usando lenguaje ensamblador
Cuando se ejecute el programa, se le pedirá que ingrese el sumando y el sumando. Una vez calculados y mostrados los resultados, se muestran Continuar y Salir.
El segmento de código asume cs:code, ds:code
org 100h; formato COM estándar
Inicio:
mov ax, 3 ;Modo texto
int 10h
Push cs
Cámara digital popular
Push ds
Elementos populares
Reiterar:
lea dx, mes 1; señalar
mov ah, 9
int 21h
mov di, 30fh
Entrada de llamada; número recibido a
lead dx, mes2 señalado
mov ah, 9
int 21h
mov di, 31fh
Entrada de llamada; número recibido b
Recuento de llamadas
lea dx, mes3
mov ah, 9
int 21h
;* * *Resultado decimal de salida* * *
Llamar a crt
lea dx, mes4
mov ah, 9
int 21h
mov ah, 0; abortar
int 16h
cmp, 15h; "Y(y)" continúa.
Es JZ otra vez; calculando la siguiente pregunta
mov ah, final de 4ch
int 21h
Entrada:
mov CX 10
T1:mov ah, 0; número de recepción
int 16h
cmp al, 0dh
jz ok
cmp al, '0'; verificación de datos
jb T1
cmp al, '9'
ja t1 p >
Sí:
mov ah, 0eh muestra datos válidos
int 10h
w2: Empujar ax, empujar hacia la pila
Loop T1
Bueno: mover bp, cx
Compañía bp
mov cx, 11
Asiático cx, bp p >
Estándar
jcxz u3
u1:pop ax
stosb
Bucle u1
u3 :move al, ' 0 '
mov cx, bp
U2:stob
Bucle u2
remojar en agua para hacer soft
Cuenta: mov si, 30fh
mov di, 31fh
xor dx, dx; clear carry
mov cx, 11 ; cambiar este valor Se puede lograr la suma de supernúmeros.
T3: Llamada subs_c; acumula poco a poco
4 de diciembre
2 de diciembre
circunvalación T3
Remojado en agua para suavizar
subs_c:; subrutina central de adición de varios bits
mov al, [si]; [di]
También ax, 0f0fh
Agregar al, ah; autoagregado
Agregar al, dl además Último acarreo
aam convierte dos en diez.
mov dl, ah; lleva bit
o aluminio, 30h
mov [SI], al; guarda 1 bit y valor, copia incorrecta aquí.
Remojar en agua para suavizar
crt:cld
XOR pb, pb
mov si, 305h
mov CX 10
cr3:
mov al, [si]
cmp al, ' 0 '
jnz cr0< /p >
Empresa bp
Empresa si
Bucle cr3
cr0:
mov cx, 11
Asiático cx, pb
mov si, 305h
Agregar si, pb
cr1:lodsb
Mover, 0eh< / p>
int 10h
Bucle cr1
Remojar en agua para suavizar
mes1 db 0dh, 0ah, 09, 'Ingrese A (0 -9, 999, 999, 999): $ '
mes2 db 0dh, 0ah, 09, 'Entrada B (0-9, 999, 999, 999): $ '
mes3 db 0dh , 0ah, 09, 'Suma A+B= $ '
' mes4 db 0dh, 0ah, 09, '¿Continuar Y(y)? $'
Fin del código
Fin del inicio