Vai al contenuto

Pi Greco(a) DAY.. [domani]


Messaggi raccomandati

Fai ingegneria informatica, vero?

no faccio ingegneria elettronica

allora.. come promesso ecco come funziona.. lo faccio con la somma che è più semplice (ma concettualmente identico! )

Immagina di avere un processore con 32 registri interni ad 8 bit.

Il massimo numero rappresentabile su 8 bit è 255 ( 0b 11111111 )

vuoi allora eseguire per esempio 255 + 52 ( = 307 = 0b 0001 0011 0011 )... come si fa ??

usiamo un ASM semplice e commentato.

metto in R16 255 e R17 il 52

LDI R16, 255

LDI R17,52

il risultato è più di 8 bit.. quindi avremmo bisogno di un registro più grande.. nel caso sarebbero 9 bit...

allora scegliamo di mettere il risultato nei registri R21-R20 (due registri a 8 bit, con R20 parte bassa e R21 parte alta).

CLC ; Setta a zero il bit di carry nello status register

MOV R16, R20 ; Copia il contenuto di R16 su R20

ADD R17, R20 ; Aggiungi il contenuto di R17 a quello di R20

BRCS 1 ; Se c'e' stato riporto salta di due righe

RJMP END ; Se non ce ne è stato finisci

INC R21 ; Se c'e' stato riporto, incrementa il registro della parte alta... esattamente come si fa nelle addizioni "a mano"

RJMP END ; Fine

:END

NOP ; Non fare niente :ghghgh:

spero di essere stato chiaro :confused: se ci sono domande basta chiedere :confused:

Cum fovet fortuna, cave, namque rota rotunda

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...