mekatronik är nöjd med hjälpen
mekatronik 143
Postad: 15 dec 2021 14:20

Assembler och instruktionssekvenser

Hej, jag är lite fundersam över dessa två frågor kring hur jag skall tolka de, detta är den första frågan:

Antag att register A innehåller värdet 4 och att register X innehåller värdet 2416. Vilken av följande instruktioner kan INTE användas för att hoppa till adress 2816? Dessa är val alternativ står i boken:

JMP #$28

BRA $28

JMP $28

JMP A,X

Min tanke är att det bör vara JMP #$28 men är lite osäker, har redan exkluderat den sista då man kan räkna ut det för hand.

Nästa fråga:

Beakta instruktionssekvensen nedan. På adress FB16 finns en utport vars initiala värde är 3810. Vilket värde har utporten efter att sekvensen utförts?  

                 LDA #23
                 DECA
                 BEQ SKIP
NOSKIP FCB $F0,$01
SKIP       DECA
STA         $FB
                NOP

21, 00, 37, 255  (decimalt)

 

Denna sekvens förstår jag tills jag kommer till -> NOSKIP FCB $F0,$01. Här förstår jag inte riktigt vad som händer och hur det påverkar sekvensen, tänker att FCB egentligen inte bör ändra på programmet så mycket så min tanke är att värdet på utporten bör vara 21. Men är inte säker.

Laguna Online 17496
Postad: 15 dec 2021 14:25

Vad är det för processor? Jag kan bara göra väldigt osäkra gissningar. Vad FCB gör kan jag inte alls gissa.

NOSKIP ser ut att bara vara en label.

Programmeraren 2191
Postad: 15 dec 2021 14:30

http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf

Det har krånglat till det med flit:
FCB $F0,$01 är hex-värdet för instruktionen "LDA #$01" 

mekatronik 143
Postad: 15 dec 2021 14:34
Programmeraren skrev:

http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf

Det har krånglat till det med flit:
FCB $F0,$01 är hex-värdet för instruktionen "LDA #$01" 

Jaha okej, men då bör väl värdet på utporten vara 0 då eftersom man laddar A med 01?

Programmeraren 2191
Postad: 15 dec 2021 14:39

Ja (om instruktionen kördes men det vet du säkert själv om den gjorde eller inte!)

mekatronik 143
Postad: 15 dec 2021 14:40
Programmeraren skrev:

Ja (om instruktionen kördes men det vet du säkert själv om den gjorde eller inte!)

Tack så mycket, du är verkligen räddaren i nöden. Väldigt imponerande hur du kan detta så lätt då många har problem med det (jag är en av de).

Programmeraren 2191
Postad: 15 dec 2021 14:56

Här hade de krånglat till på ett sätt som inte förekommer i en verklig situation, lite krystat kan jag tycka.

Lärde mig först assembler på C64 (6502) och då var det maskinkodsmonitor som gällde, inga labels eller annan "lyx". Man skrev instruktionerna och den översatta direkt till värdena, alltså som en "instruktionsvy" direkt på minnet. 

När man tävlade i "snabbaste sättet att rita en linje" sparade man mikrosekunder på att låta programmet skriva in DEC eller INC i loopen för att slippa en branch ("självmodifierande kod"). Det påminner en smula om denna uppgift.

Peter_ 103
Postad: 15 dec 2021 15:14
Programmeraren skrev:

Här hade de krånglat till på ett sätt som inte förekommer i en verklig situation, lite krystat kan jag tycka.

Håller med. I så fall ska även en disassembler ingå i elevernas verktyg.

Svara Avbryt
Close