Laboratorium z Techniki Mikroprocesorowej
Skład grupy:
Paweł Wyszyński
Arkadiusz Żanowski
Temat: Generacja napisów za pomocą zestawu PLUM
Zadanie:
Wygenerować na wyświetlaczu zestawu PLUM napis COLA CAO. Wyraz CAO ma pojawiać się po naciśnięciu dowolnego przycisku na klawiaturze.
Algorytm działania programu:
Kasuj wyświetlacze
Ustal adres wyświetlacza
Załaduj kod litery do rejestru D
Wyświetl literę na wyświetlaczu
Po wyświetleniu wszystkich liter napisu COLA czekaj na naciśnięcie dowolnego klawisza na klawiaturze
Po naciśnięciu klawisza wyświetl napis CAO - w sposób opisany w punktach 1-4
Wróć na początek programu
Treść programu:
# #
# Micro Series Z80 Assembler V1.25/MD1 21/Apr/99 20:49:56 #
# #
# Source = c:cola.s01 #
# List = c:cola.lst #
# Object = c:cola.r01 #
# Options = #
# #
# (c) Copyright IAR Systems 1984 #
################################################################################
1 ;
2 ; XLINK Z80 SYSTEM CWICZ3 /X
3 ;
4 ;************************************************************
5 ;*
6 ;* P R O G R A M C W I C Z E N I O W Y nr. 3
7 ;*
8 ;************************************************************
9 ;
10 ;
11
12 8000 org 8000h
13
14 8000 extern prnw ; z D na drukarkę
15 8000 extern prntab ; tablica na drukarkę
16 8000 extern prnoff ; wyłącz drukarkę
17 8000 extern conin ; znak ASCII do A z klawiatury
18 8000 extern ifkey ; czy jest wciśnięty klawisz
19 8000 extern inhl ; wprowadź liczbę HEX do HL z klaw.
20 8000 extern inhlp ; z ustawieniem PWYS
21 8000 extern cls ; kasuj wyświetlacz
22 8000 extern clsp ; z ustawieniem PWYS
23 8000 extern hl4hex ; wyświetl HL jako 4 znaki HEX
24 8000 extern hl4hp ; z ustawieniem PWYS
25 8000 extern a2hex ; wyświetl Acc jako 2 znaki HEX
26 8000 extern a2hexp ; z ustawieniem PWYS
27 8000 extern conout ; wyświetl znak ASCII na wyświetlaczu
28 8000 extern conop ; z ustawieniem PWYS
29 8000 extern wyd ; wyświetl znak o kodzie w rej. D
30 8000 extern wydp ; z ustawieniem PWYS
31 8000 extern dout ; wyświetl kod bezpośrednio z rejestru D
32 8000 extern doutp ; z ustawieniem PWYS
33
34 8000 extern inopnd ; wprowadź operandy
35 8000 extern oprnd1 ; operand 1
36 8000 extern oprnd2 ; operand 2
37 8000 extern oprnd3 ; operand 3
38 8000 extern oprndn ; ilość wczytanych operandów
39 8000 extern lastsg ; znak kończący wczytywanie operandów
40
41 ;przyporządkowanie kolejnych liter napisu
42
43 ;pierwszy wyraz COLA
44
45 0039 p1 equ 00111001b ;litera C
46 003F p2 equ 00111111b ;litera O
47 0038 p3 equ 00111000b ;litera L
48 0077 p4 equ 01110111b ;litera A
49 ;drugi wyraz CAO
50 0039 p5 equ 00111001b ;litera C
51 0077 p6 equ 01110111b ;litera A
52 003F p7 equ 00111111b ;litera O
53
54
55 8000 start:
56 8000 CD0000 call clsp ;kasowanie wyświetlacza
57 8003 80 defb 80h
58 8004 1639 ld d,p1 ;załadowanie kodu pierwszego znaku do rej. D
59 8006 CD0000 call doutp ;wyświetlenie pierwszego znaku
60 8009 17 defb 17h ;ustalenie adresu następnego wyświetlacza
61 800A 163F ld d,p2 ;załadowanie kodu drugiego znaku
62 800C CD0000 call doutp ;wyświetlenie drugiego znaku
63 800F 16 defb 16h ;ustalenie adresu następnego wyświetlacza
64 8010 1638 ld d,p3 ;załadowanie kodu trzeciego znaku
65 8012 CD0000 call doutp ;wyświetlenie trzeciego znaku
66 8015 15 defb 15h ;ustalenie adresu następnego wyświetlacza
67 8016 1677 ld d,p4 ;załadowanie kodu czwartego znaku
68 8018 CD0000 call doutp ;wyświetlenie czwartego znaku
69
70 ;cały pierwszy wyraz został wyświetlony oczekiwanie na
71 ;naciśniecie dowolnego klawisza na klawiaturze
72
73 801B CD0000 call conin ;zaladaowanie znaku klawiatury do A
74 801E CD0000 call ifkey ;sprawdza czy wciśnięty został jakiś klawisz
75
76 8021 CD0000 call clsp ;kasowanie wyświetlacza
77 8024 80 defb 80h
78 8025 1639 ld d,p5 ;załadowanie kodu piątego znaku
79 8027 CD0000 call doutp ;wyświetlenie piątego znaku
80 802A 13 defb 13h ;ustalenie adresu następnego wyświetlacza
81 802B 1677 ld d,p6 ;załadowanie kodu szus tego znaku
82 802D CD0000 call doutp ;wyświetlenie szus tego znaku
83 8030 12 defb 12h ;ustalenie adresu następnego wyświetlacza
84 8031 163F ld d,p7 ;załadowanie kodu siódmego znaku
85 8033 CD0000 call doutp ;wyświetlenie siódmego znaku
86
87 8036 CD0000 call conin ;zaladaowanie znaku klawiatury do A
88 8039 CD0000 call ifkey ;sprawdza czy wciśnięty został jakiś klawisz
89
90
91 803C C30080 jp start ;skok na początek programu
92
93 803F 76 halt
94 8040 end
Errors: None ########
Bytes: 64 # cola #
CRC: 2377 ########
W programie wykorzystaliśmy następujące procedury zestawu PLUM:
clsp - powoduje wykasowanie wyświetlacza
doutp - powoduje wyświetlenie znaku z rejestru D na wskazanym wyświetlaczu
conin - powoduje wczytanie znaku z klawiatury do A
ifkey - sprawdza czy został wciśnięty jakiś klawisz na klawiaturze
Wykorzystaliśmy także polecenie EQU, które przyporządkowuje wartość liczbową określonej nazwie np.: p1 EQU 0010b - spowoduje, że niekonieczne jest każdorazowe pisanie wartości 0010b w programie, wystarczy napisać p1.
Program działa poprawnie, na wyświetlaczu pojawia się napis COLA, a po naciśnięciu dowolnego klawisza na klawiaturze wyraz CAO
START
Kasuj wyświetlacze. Ustala adres wyświetlacza.
Do rejestru D załaduj kod znaku
Wyświetl znak na wyświetlaczu
Jeśli wygenerowano cały napis czekaj na naciśnięcie dowolnego klawisza na klawiaturze.
Czy naciśnięto jakiś klawisz ?
TAK
NIE
Wygeneruj następny napis.