Assembly-taal Namen:Danny van Waes Rohan Schenk Klas:EM4 Docent:Dhr. Ing. JA Verhage Embedded systems
- - Aanpak (voorbereiding) - - Opdrachtomschrijving - - Oplossing - - Nuttig ? - - Vragen ? Inleiding
- - Nieuwe taal “assembler” - - Drie oefenopgaven gemaakt - - Keuze opdracht tekstverwerking - - PSD’s samengesteld - - Programma testen Aanpak
- - Lees een regel tekst in en sla deze op in een buffer - - Alle ingevoerde karakters omzetten naar hoofdletters - - Tel voor elk karakter hoeveel maal deze in de tekst voorkomt - - Maak een histogram die aangeeft hoeveel maal elk karakter voorkomt Opdrachtomschrijving
Print string Get string Toupper Tellen Einde Histgr HOOFD PROGRAMMA Oplossing Werken met één hoofdprogramma en verschillende subroutines
Geef aan de hexadecimale waarde 08 de karakters BACKSPACE Geef aan de hexadecimale waarde 2E de karakters PUNT Geef aan de hexadecimale waarde 0A de karakters LF (cursor volgende regel) Start adres $400 Ga naar subroutine GETSTR toe Plaats de pointer daar waar het eerste ingevoerde karakter komt te staan Ga naar de subroutine PRTSTR Plaats de pointer naar het eerste karakter van de zin die moet worden afgedrukt Ga naar subroutine EINDE toe Ga naar subroutine TELLEN toe Ga naar subroutine NREGEL toe Ga naar subroutine TOUPPER toe Geef aan de hexadecimale waarde 0D de karakters CR (cursor begin regel) HOOFDPROGRAMMAHOOFDPROGRAMMAHOOFDPROGRAMMAHOOFDPROGRAMMA
Ga naar de subroutine NREGEL Keer terug naar het hoofdprogramma Ga naar de subroutine PRTCHR Is de inhoud van D0 gelijk aan een punt? JA NEE Zolang niet einde zin Verhoog de pointer met 1 Plaats de inhoud waar de pointer naar verwijst in D0 PRINTSTRINGPRINTSTRINGPRINTSTRINGPRINTSTRING
GETSTRINGGETSTRINGGETSTRINGGETSTRING Ga naar subroutine Is de inhoud D0 gelijk aan Enter? BACKSP toe JA NEE Plaats in D1 Is de inhoud van D0 gelijk aan een 0 een punt? JA NEE Start programma Keer terug naar het opnieuw hoofdprogramma Verhoog de inhoud van D1 met 1 Is de inhoud van D0 gelijk Backspace? JA NEE Zolang niet einde zin Verhoog de pointer met 1 Plaats de inhoud van D0 naar de plaats waar de pointer naar verwijst Lees het ingevoerde karakter en druk deze af op het scherm
BACKSPACEBACKSPACEBACKSPACEBACKSPACE Verlaag de inhoud van D1 met 2 Einde van de subroutine, keer terug naar de subroutine GETSTR Verlaag de pointer met 2 en plaats de inhoud waar de pointer naar verwijst in D0 Plaats in D0 een 0
TOUPPERTOUPPERTOUPPERTOUPPER Druk D0 af op het scherm Plaats de inhoud Plaats in D6 een ‘a’ Verlaag de pointer van D0 daar waar met 1 de pointer naar wijst Verhoog pointer met 1 Plaats in D0 een a Plaats in de inhoud van D6 een ‘a’ Plaats de pointer aan het begin van de zin Ga naar subroutine SPATIE toe Plaats de inhoud waar de pointer naar verwijst in D0 Verhoog de pointer met 1 Einde van de sub- Is D0 gelijk aan D6? routine, keer terug JA NEE terug naar het hoofd programma Verlaag D0 met Is D6 een z? $20 JA NEE Verlaag pointer Ga naar subroutine Verhoog D6 met 1 met 1 PRTCHR toe Is de inhoud van D0 gelijk aan punt? JA NEE Zolang niet einde zin
TELLENTELLENTELLENTELLEN Is de inhoud van D4 Z? JA NEE Einde van de sub- Is de inhoud van D0 gelijk aan D4? routine, keer terug JA NEE naar het hoofd- programma Verhoog D3 met 1 Is de inhoud van D0 gelijk aan een punt ? JA NEE Ga naar subroutine HISTGR toe Plaats in D4 een A Plaats de pointer aan het begin van de zin Ga naar subroutine NREGEL toe Zolang niet einde zin Plaats de inhoud waar de pointer naar verwijst in D0 Plaats in D3 een 0 Verhoog pointer met 1
HISTOGRAMHISTOGRAMHISTOGRAMHISTOGRAM Plaats de pointer aan het Ga naar subroutine PRTCHR toe het begin van de zin Zolang D3 is niet gelijk aan 0 Plaats de pointer aan het Verlaag inhoud van D3 met 1 begin van de zin Verhoog inhoud van D4 Ga naar PRTCHR toe met 1 Verhoog de inhoud van D4 Plaats de inhoud van D4 in D0 met 1 Einde subroutine, keer terug Plaats in de inhoud van D0 een ‘*’ naar de subroutine TELLEN Is de inhoud van D3 gelijk aan 0? JA NEE Is de inhoud van D3 gelijk aan een 0? JA NEE Ga naar subroutine NREGEL Einde subroutine, ga terug naar subroutine TELLEN
Zet in D0 de hexadecimale waarde om de cursor aan het begin van de regel te plaatsen (CR) Ga terug naar de subroutine die is verlaten Ga naar de subroutine PRTCHR toe Zet in D0 de hexadecimale waarde om de cursor naar beneden te verplaatsen (LF) Ga naar subroutine PRTCHR toe NIEUWEREGELNIEUWEREGELNIEUWEREGELNIEUWEREGEL
Ga terug naar de subroutine die is verlaten Ga naar de subroutine PRTCHR toe Zet in D0 de hexadecimale waarde van een spatie (SP) SPATIESPATIESPATIESPATIE Einde van de subroutine, keer terug naar de subroutine die is verlaten Lees het ingevoerde karakter en druk deze af op het scherm PRINTPRINTPRINTPRINT
Nuttig ? JA - Nieuwe programmeertaal geleerd - Oefenen met gestructureerd problemen oplossen - Oefenen met PSD’s op te stellen
Vragen ?