Jeg skjønner at 01 er 1, at 10 er 2 og at 00 er 0.
Jeg skjønner også at 0010 er MOV, at 0100 er ADD osv.
Der stopper det.
Om jeg skal skrive tallet 6 binært feks. Hvordan gjør jeg det?
Startet av Joika 29 svar 7,6k visninger
Joika skrev:Ok, så skjønner jeg det ikke helt.
Jeg skjønner at 01 er 1, at 11 er 2 og at 00 er 0.
Jeg skjønner også at 0010 er MOV, at 0100 er ADD osv.
Der stopper det.
Om jeg skal skrive tallet 6 binært feks. Hvordan gjør jeg det?
3barnsmor skrev:Trodde tallet 6 var 111 jeg... Men nå er det hundre år siden jeg drev med binære tall, så jeg har vel glemt det meste tror jeg.
allium skrev:Nei, du har ikke skjønt det. 10 er 2. 110 er 6.
Teller du fra høyre, er første plass 2 opphøyd i 0, andre plass 2 opphøyd i 1, tredje plass 2 opphøyd i 2 og så videre.
På samme måte i titallssystemet. Enerplassen, tierplassen, hundreplassen og så videre.
Joika skrev:Jeg tenker om jeg skal skrive en byte da.. da er hver 0,1,0 osv en bit. Hver byte inneholder 8 bit. De fire første inndikerer handling, de fire siste indikerer hvilken rad det skal handles/samhandles med, og det siste er et tall/variabel....tror jeg.
Men jeg skjønner ikke hvordan man kan skrive det siste tallet som noe annet enn 0, 1 eller 2... for det binære tallet her er kun tosifret.
Man må kanskje lage en løkke da, som legger til?
torsk (23) skrev:Det er litt rotete hva du egentlig spør om. Slik jeg tolker det spør du ikke om binære tall spesifikt, men om hvordan man programmerer for en spesifikk prosessor med binære tall.
Typisk brukes en byte (altså 8 bits) til uttrykke hvilken kommando prosessoren skal utføre. Prosessoren leser den, og ut fra hvilken kommando det er så leser den så mange byte videre den trenger for å utføre kommandoen. ADD vil typisk legge sammen de to neste bytene.
Vet ikke om dette hjalp deg noe særlig, men jeg syns det er vanskelig å svare noe mer når jeg ikke vet mer om oppgaven.
Esme skrev:Er det Assembly du driver med? Jeg skjønte heller ikke hva oppgaven er. Typisk assemblerkode:
mov ax, 61h (61h er heksadesimalt og angis med en byte); flytt 61h inn i register ax
Binært (noe sånt)
10110000 01100001
Hvor 1011 er mov, 0000 er AX og 01100001 er 61h
Joika skrev:Bingo. 😀 Du har skjønt hva jeg egentlig mener i allefall.
ADD kan legge sammen variabler som ligger både over og under, bare det refereres til linje.. feks R1, R2 osv. (Det er eksempelet jeg har her i allefall).
Her er eksempelet:
S = 0;
for(i=1;i < 4;i++)
{
S = S + i;
}
0 MOVI R0 <- 3 (MOV Integer. maksverdien i for-løkken legges i R0)
1 MOVI R1 <- 1 (tallet som i økes med for hver runde i løkken)
2 MOVI R2 <- 0 (variabelen i lagres i R2)
3 MOVI R3 <- 0 (S = 0)
4 ADD R2 <- R2 + R3 (i++)
5 ADD R3 <- R3 + R2 (S = S + 1)
6 CMP R2 R0 (COMPARE, er i = 3 ? )
7 JNE 4 (Jump Not Equal 4, hopp til linje 4 hvis i != 3)
Blir da binært:
0010 0111
0010 1000
0010 1100
0100 1001
0100 1101
1100 1000
1111 0100
Det jeg ikke skjønner helt..om jeg skal ha feks 6 som variabel.
Hvordan skriver jeg det? Kan jeg egentlig det? Eller må jeg skrive
utgregningen i form av løkke for å komme til 6?
Esme skrev:Bortsett fra at jeg ikke skjønner eksempelet heeelt, linje
5 ADD R3 <- R3 + R2 (S = S + 1) burde vel være
5 ADD R3 <- R3 + R1 (S = S + 1), burde det ikke? Kanskje jeg som tuller?
Uansett: har du en assembler som kan kjøre assemblykoden for deg, eller skal du bare kode "på papiret"?
Generelt så deklarerer man variabler på denne måten:
variabel DB 6 (6 desimalt, kan også skrive 6h, eller 0110)
man setter av plass til variabelen, er det et asciitegn, så tar det en byte, og da bruker man DB som er en byte. For tall, som er større enn en byte når man skriver dem binært kan man deklarere som DW(Word), DD(double word)
variabel DW 61h
Men det finnes sikkert noen bra tutorials på nettet altså.
Joika skrev:Det jeg ikke skjønner helt..om jeg skal ha feks 6 som variabel.
Hvordan skriver jeg det? Kan jeg egentlig det?
torsk (23) skrev:Nei, her kan du ikke det, for du har bare 2 bit til å uttrykke tallet. Og 2 bit kan bare utrykke 4 verdier (altså tallene 0, 1, 2 og 3).
For å holde uttrykke tallet 6 binært må du ha minst 3 bit.
Esme skrev:Men hva er oppgaveteksten da, Joika?
Logg inn for å svare i denne tråden.