Gå til innhold

Anbefalte innlegg

Hei! *host host*

 

*børste støv av kategorien*

 

Jeg driver å programmerer Assembly i LC-3, som har et svært begrenset instruksjonssett.

 

Jeg har nå sittet her, grublet og googlet på hvordan jeg kan dele noe på to uten å ha bit-shifting. Ganging er lett, for der er det bare å plusse på seg selv antallet ganger, men når det kommer til deling så får jeg vondt i hodet.

 

Det er sikkert ikke noe vanskelig, men jeg klarer virkelig ikke å finne noen løsning til det.

 

LC-3 sitt instruksjonssett:

Cj6xS.jpg

Lenke til kommentar
Videoannonse
Annonse

Med hvor stor nøyaktighet trenger du svaret? Og hvor viktig er ytelse? Det enkleste er nok å gå tilbake til barneskolematematikken å ta i bruk hvordan du regnet for hånd. Men om du kun trenger integer-divisjon uten noen desimaler kan du gjøre noe så enkelt som: (python-kode) Vil legge til at denne ikke er veldig effektiv om svaret er stort.

def divide(a, b):
answer = 0
while b <= a:
	answer += 1
	a -= b
return answer

Endret av etse
Lenke til kommentar

Jeg tror jeg har det nå. Jeg må bare lære meg litt conditions i LC-3 så skal jeg nok få det til.

 

Så det vil bli noe slikt med 50/2:

 

LD R0 x0032 ; DEC 50

LD R1 x0002 ; DEC 2

 

While R0 > 0{

NOT R1, R1 ; Flipp 2

ADD R0, R1, R0 ; Legg til flippet 2, altså trekk fra 2

ADD R3, R3, 1 ; Tell R3 opp som counter til svaret

}

 

Vet jeg må nok sjekke gjennom syntaksen, men ser det riktig ut?

Endret av Gavekort
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...