Red de conocimiento informático - Conocimiento sistemático - Ensamblador: ingresa dos números decimales desde el teclado, suma los dos números y muestra el resultado en la pantalla

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

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

addal, '0'

movdl, al

movah, 02h

int21h

@@:

moval, bh

xorah, ah

movcl, 10

divcl

movbx, ax

addal, '0'

movdl, al

movah, 02h

int21h

addbh, '0'

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.