160 likes | 336 Views
Embedded systems. Assembly-taal. Namen: Danny van Waes Rohan Schenk Klas: EM4 Docent: Dhr. Ing. JA Verhage. Inleiding. Aanpak (voorbereiding) Opdrachtomschrijving Oplossing Nuttig ? Vragen ?. Aanpak. Nieuwe taal “assembler” Drie oefenopgaven gemaakt
E N D
Embedded systems Assembly-taal Namen: Danny van Waes Rohan Schenk Klas: EM4 Docent: Dhr. Ing. JA Verhage
Inleiding • Aanpak (voorbereiding) • Opdrachtomschrijving • Oplossing • Nuttig ? • Vragen ?
Aanpak • Nieuwe taal “assembler” • Drie oefenopgaven gemaakt • Keuze opdracht tekstverwerking • PSD’s samengesteld • Programma testen
Opdrachtomschrijving • 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
Print string Get string Toupper Histgr Tellen Einde HOOFD PROGRAMMA Oplossing Werken met één hoofdprogramma en verschillende subroutines
Start adres $400 Geef aan de hexadecimale waarde 0D de karakters CR (cursor begin regel) Geef aan de hexadecimale waarde 0A de karakters LF (cursor volgende regel) Geef aan de hexadecimale waarde 2E de karakters PUNT Geef aan de hexadecimale waarde 08 de karakters BACKSPACE Plaats de pointer naar het eerste karakter van de zin die moet worden afgedrukt Ga naar de subroutine PRTSTR Plaats de pointer daar waar het eerste ingevoerde karakter komt te staan Ga naar subroutine GETSTR toe Ga naar subroutine TOUPPER toe Ga naar subroutine NREGEL toe Ga naar subroutine TELLEN toe Ga naar subroutine EINDE toe HOOFDPROGRAMMA
Plaats de inhoud waar de pointer naar verwijst in D0 Verhoog de pointer met 1 Is de inhoud van D0 gelijk aan een punt? JA NEE Ga naar de subroutine PRTCHR Zolang niet einde zin Ga naar de subroutine NREGEL Ga naar de subroutine NREGEL Keer terug naar het hoofdprogramma PRINTSTRING
Lees het ingevoerde karakter en druk deze af op het scherm Plaats de inhoud van D0 naar de plaats waar de pointer naar verwijst Verhoog de pointer met 1 Verhoog de inhoud van D1 met 1 Is de inhoud van D0 gelijk Backspace? JA NEE 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 Zolang niet einde zin GETSTRING
Verlaag de inhoud van D1 met 2 Plaats in D0 een 0 Verlaag de pointer met 2 en plaats de inhoud waar de pointer naar verwijst in D0 Einde van de subroutine, keer terug naar de subroutine GETSTR BACKSPACE
Plaats in de inhoud van D6 een ‘a’ Plaats de pointer aan het begin van de zin Ga naar subroutine SPATIE toe Ga naar subroutine SPATIE toe Plaats de inhoud waar de pointer naar verwijst in D0 Verhoog de pointer met 1 Is de inhoud van D0 gelijk aan punt? JA NEE 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 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 Druk D0 af op het scherm Zolang niet einde zin TOUPPER
Plaats in D3 een 0 Plaats in D4 een A Plaats de pointer aan het begin van de zin Ga naar subroutine NREGEL toe Plaats de inhoud waar de pointer naar verwijst in D0 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 Verhoog pointer met 1 Is de inhoud van D0 gelijk aan een punt ? JA NEE Ga naar subroutine HISTGR toe Zolang niet einde zin TELLEN
Is de inhoud van D3 gelijk aan een 0? JA NEE Verhoog de inhoud van D4 Plaats de inhoud van D4 in D0 met 1 Plaats de pointer aan het Ga naar subroutine PRTCHR toe het begin van de zin 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 Verhoog inhoud van D4 Ga naar PRTCHR toe met 1 Plaats de pointer aan het Verlaag inhoud van D3 met 1 begin van de zin Ga naar subroutine NREGEL Einde subroutine, ga terug naar subroutine TELLEN Zolang D3 is niet gelijk aan 0 HISTOGRAM
Zet in D0 de hexadecimale waarde om de cursor aan het begin van de regel te plaatsen (CR) Ga naar subroutine PRTCHR toe Zet in D0 de hexadecimale waarde om de cursor naar beneden te verplaatsen (LF) Ga naar de subroutine PRTCHR toe Ga terug naar de subroutine die is verlaten NIEUWEREGEL
Zet in D0 de hexadecimale waarde van een spatie (SP) Ga naar de subroutine PRTCHR toe Ga terug naar de subroutine die is verlaten Lees het ingevoerde karakter en druk deze af op het scherm Einde van de subroutine, keer terug naar de subroutine die is verlaten SPATIE PRINT
Nuttig ? JA • Nieuwe programmeertaal geleerd • Oefenen met gestructureerd problemen oplossen • Oefenen met PSD’s op te stellen