Ensamblador: ingresa dos números decimales desde el teclado, suma los dos números y muestra el resultado en la pantalla
¿segmento de datos?
num1db0;3dup(?)?
num2db0;3dup(?)?
finales de datos
códigosegmento 'código'
assumecs: código, ds: datos
inicio:?
movax, datos
movds, hacha ?
movsi, offsetnum1?
¿Ingresar un conjunto de números?
movah, 01h?
int21h?
subal, '0';
movdl, al
movcl, 3
shlal, cl
shldl, 1 p>
addal, dl
mov[si], al
movah, 01h?
int21h?
subal, '0'
añadir[si], al?
movah, 01h
int21h
movbx, offsetnum2?
Ingrese otro conjunto de números
movah, 01h?
int21h?
subal, '0'
movdl, al
movcl, 3
shlal, cl
shldl, 1
addal, dl
mov[bx ], al?
movah, 01h?
int21h?
subal, '0'
añadir[bx], al?
movah, 02h
movdl, 0dh
int21h
movdl, 0ah
int21h
¿Suma dos conjuntos de números?
moval, [bx]
addal, [si]; al=sum
xorah, ah
p>movcl, 100
divcl
movbx, ax
testal, al
jz?@f p >
addal, '0'
movdl, al
movah, 02h
int21h
@@: p >
moval, bh
xorah, ah
movcl, 10
divcl
movbx, ax
addal, '0'
movdl, al
movah, 02h
int21h
addbh, '0' p >
movdl, bh
movah, 02h
int21h
movah, 4ch?
int21h?
¿finales de código?
endstart
ejemplo de entrada:
1234lt; Entergt
o
0208lt; Entergt ;
Información ampliada:
Código de decimal a binario:
voiddectobin(intn){
intresult=0, k=1, i, temp;
temp=n
mientras(temp){
i=temp2;
resultado=k*i resultado;
k=k*10;
temp=temp/2;
}
printf("d\n", resultado);
}
Análisis del algoritmo:
Se requiere salida en orden inverso después de implementar el resto del módulo 2 , este lugar se da cuenta de que el siguiente dígito tiene 10 dígitos más que el dígito anterior al multiplicarlo continuamente por 10. No es necesario utilizar una matriz o una función de orden inverso para lograr esto.