-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZAD3b.ASM
157 lines (132 loc) · 3.2 KB
/
ZAD3b.ASM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
org 100h ;PRZESUNIECIE
;Program wypisuje dwa komunikaty proszac o podanie imienia i nazwiska
;wcisniecie ENTER konczy pobieranie nazwiska/imienia
;imie i nazwisko maja rozmiar 25
;w trakcie podawania znakow program sprawdza czy podany znak znajduje sie w
;zakresie A-Z lub a-z
;w zaleznosci od wyniku wypisuje odpowiedni komentarz po pobraniu
;wszystkich znakow
;na sam koniec zwraca imie i nazwisko oddzielone spacja
start:
xor di,di
mov dl,[komimie]
mov ah,2
komunikat1: ;wyswietlanie komunikatu o imie
int 21h
inc di
mov dl,[komimie+di]
cmp di,18
jne komunikat1
;--------------------------------------------------------
xor di,di
mov ah,1
pobierzimie: ;pobieranie imienia
int 21h
cmp al,13
je zakonczPobieranieImienia
mov [imie+di],al
inc di
cmp al,65
jl zmianaBoolaImie
cmp al,91
jl pominBoolaImie
cmp al,97
jl zmianaBoolaImie
cmp al,123
jl pominBoolaImie
zmianaBoolaImie:
mov si,1
mov [bool],si
pominBoolaImie:
jmp pobierzimie
;--------------------------------------------------------
zakonczPobieranieImienia:
xor di,di
mov ah,2
mov dl,[komnazw]
komunikat2: ;wyswietlanie komunikatu o nazwisko
int 21h
inc di
mov dl,[komnazw+di]
cmp di,22
jne komunikat2 ;zapetlam do pobrania
;---------------------------------------------------------
xor di,di
mov ah,1
pobierznazwisko: ;pobieranie nazwiska
int 21h
cmp al,13
je zakonczPobieranieNazwiska
mov [nazwisko+di],al
inc di
cmp al,65
jl zmianaBoolaNazwisko
cmp al,91
jl pominBoolaNazwisko
cmp al,97
jl zmianaBoolaNazwisko
cmp al,123
jl pominBoolaNazwisko
zmianaBoolaNazwisko:
mov si,1
mov [bool],si
pominBoolaNazwisko:
jmp pobierznazwisko
;-------------------------------------------------------
zakonczPobieranieNazwiska:
xor di,di
mov cl,[bool]
cmp cl,0 ;sprawdzam zawartosc boola
mov ah,2
mov dl,[samelit]
je boolzero ;zaleznie od zawartosci przeskakuje
mov dl,[nielite] ;do odpowiedniej etykiety
jne booljeden
;--------------------------------------------------------
boolzero:
int 21h
inc di
mov dl,[samelit+di]
cmp di,14
jne boolzero
jmp dalej
booljeden:
int 21h
inc di
mov dl,[nielite+di]
cmp di,18
jne booljeden
;kontynuuje do wypisania imienia i nazwiska
;-------------------------------------------------------
dalej:
xor di,di
mov dl,[nazwisko]
mov ah,2
wypisznazwisko: ;wypisywanie nazwiska
int 21h
inc di
mov dl,[nazwisko+di]
cmp dl,36
jne wypisznazwisko
mov ah,2
mov dl,32 ;spacja, iddzielam nazwisko i imie
int 21h
xor di,di
mov dl,[imie]
mov ah,2
wypiszimie: ;wypisywanie imienia
int 21h
inc di
mov dl,[imie+di]
cmp dl,36
jne wypiszimie
mov ax,4C00h ; KONIEC PROGRAMU
int 21h
;----------------------------------------------------------
komimie db 'P','o','d','a','j',' ','s','w','o','j','e',' ','i','m','i','e',':',10
komnazw db 'P','o','d','a','j',' ','s','w','o','j','e',' ','n','a','z','w','i','s','k','o',':',10
samelit db 10,'T','y','l','k','o',' ','l','i','t','e','r','y',10
nielite db 10,'N','i','e',' ','t','y','l','k','o',' ','l','i','t','e','r','y',10
imie times 25 db 36
nazwisko times 25 db 36
bool db 0