258
104
105 0871 DANE ends
106 107
108 |
• _ — —-t — f |
---------------------- | |
109 110 |
; deklaracja stosu (256 bajtów) ł | ||
111 112 0000 113 0000 |
0080[ |
STOS segment stack dw 128 dup (?) | |
114 TEST.ASM 115 116 117 0100 118 119 |
9999 • • • • ] |
STOS ends |
Page 1-3 |
120 121 |
; program główny typu .EXE | ||
122 123 0000 124 |
PROGRAM segment para assumc csrPROGRAM, ds:DANE. ssiSTOS | ||
125 126 0000 127 0000 |
BE 0082 |
poczÄ…tek proc far start: mov si,82H |
: adres parametru wywołania |
128 0003 |
AC |
lodsb | |
129 0004 |
50 |
push ax |
; schowaj parametr wywołania |
130 131 0005 |
B8 — R |
mov ax, dane |
; inicjacja rejestru ds |
132 0008 8E D8 |
mov ds,ax | ||
133 134 000A |
jakaopcja: |
; kontrola parametru wywołania | |
135 000A 58 136 000B |
3C31 |
pop ax cmp al,"l" |
; czy bez wyświetlania liczb ? |
137 000D |
74 OF |
je opcja 1 |
; tak |
138 OOOF |
3C32 |
cmp al."2" |
; czy z wyświetlaniem liczb ? |
139 0011 |
74 12 |
je opcja_2 |
: tak |
140 141 0013 |
blad: print tekst |
; wyświetlenie komunikatu | |
142 |
koniec |
: wyjście do DOS-u | |
143 144 001E |
C6 06 07D8ROO |
opcja l: mov opcja.O |
; znacznik opcji |
145 0023 |
EB05 |
jmp short dalej | |
146 0025 |
Có 06 07D8 R FF |
opcja_2: mov opcja.OFFH |
: znacznik opcji |
147 148 002A |
33 C9 |
dalej: xor cx,cx |
: przygotowanie rejestrów dla |
149 002C |
33 D2 |
xor dx.dx |
; ustawienia czasu systemowego |
150 002E |
B4 2D |
mov ah,2DH | |
151 0030 |
CD 21 |
int dos |
: czas systemowy = 0:0:0.0 |
152 0032 |
BF 07D0 |
mov di,2*ile_liczb |
; indeks dla tablicy liczb |
153 154 0035 155 0035 |
FF 06 07D2 R |
następnajiczba: inc liczba | |
156 0039 |
FF OE 07D4 R |
dec reszta |
; czy tablica jest wypełniona ? |
157 003D |
74 2C |
jz o_k |
: tak, koniec programu |
158 003F |
SB 85 0000 R |
mov ax,pierwsze[di] |
; ostatnia liczba z tablicy |
159 0043 |
83 El' 02 |
sub di.2 |
; modyfikacja indeksu |
160 0046 |
89 85 0000 R |
mov pierwsze[di],ax | |
161 | |||
162 004A |
kolej ny test : | ||
163 004A |
FF 85 0000 R |
inc pierwsze [di] |
: test następnej liczby |
164 004E |
BE 07D0 |
movxsił2*ile liczb |
; indeks na koniec tablicy |
165 | |||
166 0051 |
nastepnedzielenie: | ||
167 0051 |
8B 85 0000 R |
mov ax.pierwszc[di] |
; dzielenie kolejnej liczby |
168 0055 |
33 D2 |
xor dx,dx |
; przez liczbÄ™ pierwszÄ… |
169 0057 |
F7B4 0000R |
div pierwsze[si] | |
170 005B |
83 FA 00 |
cmp dx,0 |
; czy reszta z dzielenia = 0 ? |
TEST.ASM |
Page |
1-4 | |
171 005E |
74 EA |
je kolej ny test |
; tak, testuj następną liczbę |
172 0060 |
4E |
dec si |
; modyfikacja indeksu |
173 0061 |
4E |
dec si |
; wskazującego następną liczbę |
174 |
; pierwszÄ… | ||
175 0062 |
3B F7 |
cmp si,di |
; czy ostatnia liczba w tabeli ? |
176 0064 |
77 EB |
jnbe nastepne dzielenie | |
177 0066 |
E8 0072R |
cali wyniki | |
178 0069 |
EB CA |
jmp następnajiczba | |
179 | |||
180 006B |
E8 00D1 R |
o_k: cali czassystcmowy |
; pobranie czasu systemowego |
181 |
koniec |
; wyjście do DOS-u | |
182 |
poczÄ…tek endp | ||
183 | |||
184 |
• | ||
1 LT7 185 |
* ; procedura wyprowadzajÄ…ca liczbÄ™ znalezionych liczb pierwszych | ||
186 |
; oraz ich wartości | ||
187 |
• | ||
X / 188 |
1 | ||
189 0072 |
wyniki proc near | ||
190 0072 |
57 |
push di | |
191 | |||
192 0073 |
A107D2R |
mov ax,liczba |
; liczba znalezionych liczb pierwszych |
193 0076 |
E8 00A F R |
cali konwersja |
; konwersja dziesiętna |
194 |
; i wyświetlenie na ekranie | ||
195 0079 |
BO 3A |
moval,V | |
1% |
prinlchar al | ||
197 | |||
198 0088 |
8B 85 0000 R |
mov ax,pierwszc[di |
; wyprowadzenie liczby pierwszej |
199 008C |
E8 00AFR |
cali konwersja |
; konwersja dziesiętna |
200 |
; i wyświetlenie na ekranie | ||
201 008F |
BO OD |
mov al.cr |
; nowy wiersz i powrót kursora |
202 |
print_char al | ||
203 009E |
BO OA |
moval.lf | |
204 |
printcharal | ||
205 00AD |
5F |
pop di | |
206 OOAE |
C3 |
ret | |
207 |
wyniki endp |