256
z parametrem błędnym (różnym od 1 lub 2) powoduje wyświetlenie komunikatu informującego o sposobie prawidłowego wywołania.
Microsoft (R) Macro Assembler Version 4.00 5/16/88 11:59:21
TEST. ASM Pagc 1-1
1
2
3
4
5
6
7
8
9
10 11 12
13
14
15
16
17
18
19
20 21 22
23
24
title TEST.ASM page 60,130 ifl
%out
%out program: TEST.ASM (generator liczb pierwszych)
%o\xl v.L2 16.05.1988
%out
9£out 1 przejście asemblera endif
if2
%out 2 przejście asemblera
endif
.sali
comment ;*•*•********•**•*********************•' *
* Program generuje 1000 liczb pierwszych,
* oblicza czas generacji i opcjonalnie wyświetla
* obliczone liczby na ekranie monitora.
************************************************
: deklaracje wstępne nazw symbolicznych
«
25 = 0001)
26 = 000A
27 = 0030
28 = 0021
29 = 03E8
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
er equ
If cqu
zero cqu
dos equ
ilejiczb equ
0DII : kod ASCII "Carriagc Return”
0AH ; kod ASCII "Linę Feed”
’0’ ; kod ASCII cyfry ”0”
21H ; numer przerwania dla funkcji MS-DOS 1000 : liczba szukanych liczb pierwszych
; definicje makroinstrukcji
print macro xx : wyświetlanie komunikatu na ekranie
mov dx.offset xx mov ah.9 int dos endm
print char macro xx ; wyświetlenie jednego znaku
local bez_wysw mov dl.xx mov ah,2 emp opcja.O je bcz_wysw int dos
bcz_wysw:
endm - » • . ■ “ ’ .
51 |
koniec |
macro ; powrót do DOS-u | |
52 |
mov ah.4CH | ||
53 |
int dos | ||
54 |
endm | ||
55 | |||
56 |
• | ||
57 |
; dane występujące w programie | ||
58 |
» | ||
FEST. ASM |
Page 1-2 | ||
59 0000 |
DANE |
segment para | |
60 | |||
61 |
: tablica liczb pierwszych: największa znaleziona ma | ||
62 |
; indeks 0; pierwsza liczba w tablicy to "2" | ||
63 | |||
64 0000 |
03E8[ |
pierwsze dw ilcjiczb dup (0),2 | |
65 | |||
66 |
i | ||
67 |
0002 | ||
68 | |||
69 07D2 |
0000 |
liczba |
dw 0 ; liczba znalezionych liczb pierwszych |
70 07D4 |
03E9 |
reszta |
dw ilcjiczb + 1 ; tyle liczb trzeba jeszcze znaleźć |
71 07D6 |
000A |
baza |
dw 10 ; baza dla liczb dziesiętnych |
72 07D8 |
99 * • |
opcja |
db ? ; opcja bez (z) wyświetlaniem liczb |
73 73 | |||
74 07D9 |
99 • • |
minuty |
db ? ; czas w minutach |
75 07DA |
99 • • |
sekundy |
db ? ; czas w sekundach |
76 07DB |
99 # • |
setnese |
db ? ; czas w setnych częściach sekundy |
77 | |||
78 07DC |
OA OD |
tekst |
db 10.13 |
79 07DE |
50 72 61 77 69 64 8C |
db Prawidłowe wywołanie programu ma następującą * | |
80 |
6F 77 65 20 77 79 77 | ||
81 |
6F 8C616E 69 65 20 | ||
82 |
70 72 6F67 72 616D | ||
83 |
75 20 6D 61 20 6E 61 | ||
84 |
73 74 65 70 75 6A 89 | ||
85 |
63 89 20 | ||
86 080B |
70 6F 73 74 61 8A 3A |
db postać:MO, 10.13 | |
87 |
OA OA OD | ||
88 0815 |
20 58 3E 20 54 45 53 |
db ' X > TEST 1 (opcja bez wyświetlania liczb)’ | |
89 |
54 20 31 20 20 20 28 | ||
90 |
6F 70 63 6A 61 20 62 | ||
91 |
65 7A 20 77 79 8F77 | ||
92 |
69 65 74 6C616E69 | ||
93 |
61 20 6C69 63 7A62 | ||
94 |
29 | ||
95 0840 |
OA OD |
db 10.13 | |
96 0842 |
20 58 3E 20 54 45 53 |
db ’ X TEST 2 (opcja z wyświetlaniem liczb)’ | |
97 |
54 20 32 20 20 20 28 | ||
98 |
6F 70 63 6A 61 20 7A | ||
99 |
20 77 798F 77 6965 | ||
100 |
746C61 6E69 65 6D | ||
101 |
20 6C 69 63 7A 62 29 | ||
102 | |||
103 086C |
OA OD OA OD 24 |
db 10,13.10,13.36 |