Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 08. 11. 2014 23:39

RayDoyle
Příspěvky: 38
Reputace:   
 

Překladač PL/0 - příkaz WRI - interpret

Zdravím, rád bych poprosil o pomoc/nasměrování s tímto úkolem. Jde o jazyk PL/0 - pomůcka pro výuku funkce překladačů. V základu rozumím tomu, jak překladač PL/0 funguje (co jeho jednotlivé instrukce znamenají), ale konkrétně s tímto úkolem si nevím rady.


Úkolem je:
Instrukce WRI 0 0 vypíše na obrazovku znak, jehož ASCII hodnota je na vrcholu zásobníku, a sníží ukazovátko vrcholu zásobníku o 1. Dejme tomu, že v zásobníku je uložen řetězec znaků (způsob uložení vymyslete). Napište posloupnost instrukcí, která libovolný takový řetězec vypíše na obrazovku.


Budu rád za každou radu, jak postupovat.
Děkuji.

Offline

 

#2 09. 11. 2014 02:38

RayDoyle
Příspěvky: 38
Reputace:   
 

Re: Překladač PL/0 - příkaz WRI - interpret

Má myšlenka je následující:

Uložení řetězce znaků:
Uživatel je vyzván k zadání počtu znaků, které by si přál zadat. Poté běží cyklus (a<POČET_ZNAKŮ) a pro každý jeho průchod je uživatel vyzván k zadání ASCII hodnoty znaku.

Vypsání řetězce znaků:
Opět běží cyklus a pomocí instrukce WRI 0 0 vypisuje znak z vrcholu zásobníku. Problém je ovšem v tom, že řetězec je samozřejmě otočený (např. zadaná posloupnost znaků A,B,C se vypíše jako CBA).

Bohužel nedovedu vymyslet způsob, jak řetězec otočit. Budu vděčný za každou radu.
Děkuji.

Code:

              INT 0 5                           
              &ECHO Zadejte delku retezce:
              REA 0 0
              STO 0 3
              LIT 0 1
              STO 0 4
@loop_nacti   LOD 0 4
              LOD 0 3
              OPR 0 13
              JMC 0 @konec_nacti
              &ECHO Zadejte ASCII kod retezce:
              REA 0 0
              LOD 0 4
              LIT 0 1
              OPR 0 2
              STO 0 4
              JMP 0 @loop_nacti
@konec_nacti  LIT 0 1
              STO 0 4
@loop_vypis   LOD 0 4
              LOD 0 3
              OPR 0 13
              JMC 0 @konec_vypis 
              WRI 0 0
              LOD 0 4
              LIT 0 1
              OPR 0 2
              STO 0 4 
              JMP 0 @loop_vypis
@konec_vypis RET 0 0

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson