Pregunta

Estoy tratando de escribir un programa que obtenga dos números decimales de 6 dígitos y muestre la adición de ellos, pero en 16 bit 8086 definí los números como palabra doble y puse lo en la palabra 1 y ho en la palabra 2. similar al código a continuación pero yo No tengo ninguna idea para hacer a continuación, ¿puede algún cuerpo sugerirme algoritmo para las próximas operaciones? Thnx

x dd(?)
    next_no:
    mov cl,2
    mov ch,4

two_bit:
getch

sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x+2,di

dec cl
jnz two_bit
fourbit:
getch
sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x,di
dec ch
jnz fourbit

En este programa, DI es un lugar para almacenar el número realizado a través del bucle cuando el usuario ingrese un número DI múltiple a 10 y el nuevo dígito se agregará a DI como: proccess de obtener 28 di = 0*10+2 = 2 di = 2*10*+8 = 28

¿Fue útil?

Solución

En lugar de seguir su código sin comisión, presentaré un ejemplo independiente.

Supongamos que tiene un número de 32 bits en DX: AX y un número de 32 bits en CX: BX (esta notación significa que las 16 bocaduras altas se almacenan en DX, por ejemplo, y los 16 bits bajos en AX). Para agregar estos valores y dejar el resultado en dx: ax, lo haría:

    add ax,bx
    adc dx,cx

los add La instrucción agrega los dos valores y sets el b (transporte) bit a 1 o 0 dependiendo de si había un acarreo o no. los adc La instrucción agrega los dos valores más El valor del bit de transporte (y luego establece el bit de transporte nuevamente). De esta manera, puede agregar valores de cualquier tamaño continuando con más adc instrucciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top