Domanda

Sto cercando di scrivere un programma che ottenga due numeri decimali a 6 cifre e ne mostrano l'aggiunta, ma in 16 bit 8086 ho definito i numeri come doppia parola e metti LO nella parola 1 e ho in Word 2. Simile al codice sotto ma io Non hai idea di fare dopo, qualche corpo può suggerirmi algoritmo per le prossime operazioni? Grazie

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

In questo programma DI è un luogo per conservare il numero effettuato tramite il ciclo quando l'utente inserisce un numero DI sarà multiplo a 10 e la nuova cifra si aggiungerà a DI come: Proccess di ottenere 28 DI = 0*10+2 = 2 DI = 2*10*+8 = 28

È stato utile?

Soluzione

Invece di seguire il tuo codice insolito, presenterò un esempio indipendente.

Supponiamo di avere un numero a 32 bit in DX: AX e un numero a 32 bit in CX: BX (questa notazione significa che i 16 morsi alti sono immagazzinati in DX, ad esempio e i 16 bit bassi in AX). Per aggiungere questi valori e lasciare il risultato in DX: AX, vorresti:

    add ax,bx
    adc dx,cx

Il add L'istruzione aggiunge i due valori e imposta Il bit C (trasporta) a 1 o 0 a seconda che ci fosse un carry o no. Il adc L'istruzione aggiunge i due valori più Il valore del bit di trasporto (e quindi imposta il bit di trasporto). In questo modo, puoi aggiungere valori di qualsiasi dimensione continuando con di più adc Istruzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top