Assembler 68K_zadatak_pomoc

poruka: 2
|
čitano: 1.871
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Assembler 68K_zadatak_pomoc

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~

Poruka je uređivana zadnji put uto 18.11.2014 20:53 (Imajna).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Assembler 68K_zadatak_pomoc

Joj, zašto baš 68k? Da nije, čak bih ti i mogao pomoći :D

 

Imajna kaže...

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.

 

Imajna kaže...

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...

A C program is like a fast dance on a newly waxed dance floor by people carrying razors.
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice