Pozdrav,
Naime dobio sam zadatak iz assemblera gdje sam morao učitati datoteku, ispisati sve iz nje, pronaći riječ sa najviše samoglasnik te ispisati koliko ima riječi sa 2 znaka.
E upravo štekam i ne znam kako bi napravio odnosno implementirao neki if ili nešto slično, a da ne pobrkam rad funkcije koja izvršava rad za brojanje samoglasnika i ispisivanje pa bih molio pomoć ako nije problem kod pronalaženja riječi sa 2 znaka i ispisvanja
NAPOMENA! Ne smijem korsititi casual if-ove i ostalo, sve ide preko CMP-a, ako znate na što mislim..
U nastavku slijedi moj kod:
*-----------------------------------------------------------
* Program Number:
* Written by :
* Date Created :
* Description :
*
*-----------------------------------------------------------
START ORG $1000
* ispis teksta
MOVE #14,D0
LEA tekst1,A1
TRAP #15
*unos naziva datoteke
MOVE #2,D0
LEA unos1,A1
TRAP #15
* otvaranje datoteke
MOVE #51,D0
TRAP #15
* odre?ivanje broja znakova za citanje
MOVE.L #80,D2
LEA unos2,A1
MOVE #53,D0
TRAP #15
* ispis teksta
MOVE #14,D0
LEA unos2,A1
TRAP #15
SUB #1,A1
MOVE.L A1,A2
MOVE.L A1,A0
ADD D2,A2
MOVE.L #0,D1
MOVE.L #0,D2
MOVE.L #0,D3
MOVE.B #$00,(A2)
LEA enter,A1
TRAP #15
MOVE #14,D0
LEA tekst2,A1
TRAP #15
petlja SUB #1,A2
CMP A0,A2
BLE provjera
ADD #1,D4
MOVE.B (A2),D1
CMP #$20,D1
BEQ provjera
CMP #$61,D1 *samoglasnik a
BEQ samoglasnik
CMP #$65,D1 *samoglasnik e
BEQ samoglasnik
CMP #$69,D1 *samoglasnik i
BEQ samoglasnik
CMP #$6F,D1 *samoglasnik o
BEQ samoglasnik
CMP #$75,D1 *samoglasnik u
BEQ samoglasnik
JMP petlja
samoglasnik ADD #1,D2
JMP petlja
provjera
CMP D3,D2
BGE upisivanje *branch if greater than( ako je D2 veće od D3)
*ako trenutna riječ ima više samoglasnika od prošle
CMP A0,A2
BLE ispisivanje
MOVE.B #$00,(A2)
MOVE.L #0,D2
upisivanje MOVE.L D2,D3
MOVE.L A2,A1
MOVE.B #$00,(A1)
ADD #1,A1
MOVE.L #0,D2
JMP petlja
ispisivanje MOVE.L #1,D0 *ispis teksta #1
TRAP #15
kraj MOVE.L #9,D0
TRAP #15 Halt Simulator
STOP #$2000
tekst1 DC.B 'Unesite naziv datoteke:',$D,$A,0
tekst2 DC.B 'Rijec sa najvecim brojem samoglasnika je:',$D,$A,0
enter DC.B $D,$A,0
unos1 DS.B 80
unos2 DS.B 80
END START *~Font name~Courier New~
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Joj, zašto baš 68k? Da nije, čak bih ti i mogao pomoći :D
E upravo štekam i ne znam kako bi napravio odnosno implementirao neki if ili nešto slično, a da ne pobrkam rad funkcije koja izvršava rad za brojanje samoglasnika i ispisivanje
Eh? Pa pazi koje registre modificiraš i gledaj gdje se oni kasnije koriste. Ne vidim kako bi drukčije poremetio neki kod nakon toga... ako ti usfali registara, pohrani privremeno neki na stack/RAM pa mu kasnije vrati vrijednost kada završiš.
Probaj biti malo konkretniji, što točno ne znaš izvesti? Možda ti i mogu pomoći.
NAPOMENA! Ne smijem korsititi casual if-ove i ostalo, sve ide preko CMP-a, ako znate na što mislim..
Misliš makroe? Pa dobro, nije to neki problem...