Question

Im essayant d'écrire un programme qui obtenez deux 6 chiffres des nombres décimaux et montrent l'ajout d'entre eux, mais en 16 bits 8086 i défini des nombres comme double mot et mettre LO dans le mot 1 et HO dans le mot 2. similaire à un code ci-dessous mais je n'ai aucune idée à faire ensuite, tout organisme peut me suggérer algorithme pour les prochaines opérations? 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

dans ce programme di est un endroit pour stocker le nombre réalisés à travers la boucle lorsque l'utilisateur entrez un numéro di volonté multiple 10 et le nouveau chiffre ajoutera à di comme: proccess d'obtenir 28 di = 0 * 10 + 2 = 2 di = 2 * 10 * + 8 = 28

Était-ce utile?

La solution

Plutôt que de suivre votre code décommentée, je vais vous présenter un exemple indépendant.

Supposons que vous avez un nombre de 32 bits dans le DX: AX et un nombre de 32 bits dans CX: BX (ce moyen de notation que les 16 hautes piqûres sont stockées dans DX par exemple, et le bas de 16 bits dans AX). Pour ajouter ces valeurs et laisser le résultat dans DX: AX, vous devez:

    add ax,bx
    adc dx,cx

L'instruction add ajoute les deux valeurs et jeux le bit à 1 ou 0 C (carry) selon qu'il y avait un report ou non. L'instruction adc ajoute les deux valeurs plus la valeur du bit de report (et fixe puis à nouveau le bit de report). De cette façon, vous pouvez ajouter des valeurs de toute taille en continuant avec plus d'instructions de adc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top