Systemet med makroer giver dig mulighed for at skrive programmer i den velkendte syntaks på et sprog på højt niveau og gør programmernes tekster mere gennemsigtige til læsning og opfattelse. Designet til TASM-2.5 og MASM-5.0 samlingssprog-kompilatorer, det er et struktureret sprog på højt niveau, der kan bruges til at skrive programmer af enhver størrelse og formål. Designet til en programmør, der allerede har erfaring med programmering på samlingssprog.
* .ASM-filer Disse filer indeholder eksempler på programmer skrevet i makrosystemet.
For at installere på systemet skal du sørge for at kopiere MSYSTEM.MAC-filen og resten af filerne - efter eget skøn. For en vellykket programmering i makrosystemet anbefales det, at du gør dig detaljeret fortrolig med manualen og selve makrosystemet indeholdt i filen MSYSTEM.MAC.
Husk at samleren ikke forstår fejl, og alt afhænger kun af dig.
tasm25.zip
- 175 KBytes.
For eksempel er her koden til et simpelt databaseprogram, der tegner sig for indtægter og udgifter af penge
; MB.ASM
; D. L. Konyukhov
.MODEL SMÅ
inkluderer msystem.mac
inkluderer sys.mac
inkluderer conio.mac
inkluderer mouse.mac
inkluderer mem.mac
inkluderer kbd.mac
inkluderer math.mac
inkluderer cursor.m
inkluderer windows.m
inkluderer farve.m
inkluderer rec.m
inkluderer dbedit.m
inkluderer say.m
inkluderer read.m
inkluderer nøgle.m
inkluderer mkeys.m
inkluderer mb.m
size_com = 20000 + 256
len_stack = 20000
len_vars = 20000
.KODE
BEGIN START, 100h, _main, {
func mb_empty ,, \u0026 lt; SI \u0026 gt;
mov SI, buf_A
memfill \u0026 lt; 32, @ DEBET_NAME, LEN_NAME \u0026 gt;
memfill \u0026 lt; 0, @ DEBET_QUAN, LEN_QUAN \u0026 gt;
memfill \u0026 lt; 32, @ KREDIT_NAME, LEN_NAME \u0026 gt;
memfill \u0026 lt; 0, @ KREDIT_QUAN, LEN_QUAN \u0026 gt;
endf
func _pic, \u0026 lt; byte X, byte Y \u0026 gt ;, \u0026 lt; SI \u0026 gt ;, 1, offentlig
old_color EQU [BP] -1
getcolor, \u0026 lt; old_color \u0026 gt;
mov SI, buf_A
sætfarve \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; X, Y, @ space, @ f_s \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
sig \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
sætfarve \u0026 lt; DebAttr \u0026 gt;
sig \u0026 lt; @ mellemrum, @ f_s \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
sig \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
sætfarve \u0026 lt; DebAttr \u0026 gt;
sig \u0026 lt; @ mellemrum, @ f_s \u0026 gt;
sætfarve \u0026 lt; KreAttr \u0026 gt;
sig \u0026 lt; @ mellemrum, @ f_s \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
sig \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
sætfarve \u0026 lt; KreAttr \u0026 gt;
sig \u0026 lt; @ mellemrum, @ f_s \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
sig \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
sætfarve \u0026 lt; KreAttr \u0026 gt;
sig \u0026 lt; @ mellemrum, @ f_s \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
endf
func _fuser, \u0026 lt; byte mode, word RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, offentlig
old_color EQU [BP] -1
mov DI, 1
mov AL, cs: tilstand
skift AL, \u0026 lt; 0,1 \u0026 gt;
sag 1 {; tegne
getcolor, \u0026 lt; old_color \u0026 gt;
sætfarve \u0026 lt; LblAttr \u0026 gt;
optælling \u0026 lt; @ rec_A \u0026 gt ;, \u0026 lt; ii \u0026 gt;
sayxy \u0026 lt; 35, 2, @ ii, @ f_w4 \u0026 gt;
recrecno \u0026 lt; @ rec_A \u0026 gt ;, \u0026 lt; ii \u0026 gt;
sayxy \u0026 lt; 41, 2, @ ii, @ f_w4 \u0026 gt;
sætfarve \u0026 lt; gammel_farve \u0026 gt;
sag 2 {
mov retr_cho, SAND
mens \u0026 lt; retr_cho e SAND \u0026 gt; {
mov retr_cho, FALSE
mkeys_to
mov AL, cs: key_AL
skift AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
sag 1 {
mov AH, cs: key_AH
afbryder AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
sag 1; indsæt
Indsætter, \u0026 lt; DI \u0026 gt;
sag 2; slet
Sletning, \u0026 lt; DI \u0026 gt;
sag 3; sortere
Sortering, \u0026 lt; DI \u0026 gt;
sag 4; find
sag 5; dato
Dating, \u0026 lt; DI \u0026 gt;
sag 6; menu
menupull
mov DI, 3
endcase
sag 2 {; mærke
sag 3; input
Indtastning af \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
sag 4; afslutning
mov færdig, FALSK
mov DI, 0
endcase
endwh}
endcase
endf \u0026 lt; ord DI \u0026 gt;
label1 db 'PARISH', 0
label2 db 'FLOW', 0
title1 db 'Titelmængde', 0
ukeys1 db 1Eh, 0
ukeys2 db 1Fh, 0
skeys1 db 'ENTER', 0
nkeys1 db 'ENTER', 0
skeys2 db 'INS', 0
nkeys2 db 'NY', 0
skeys3 db 'DEL', 0
nkeys3 db 'SLET', 0
skeys4 db 'F5', 0
nkeys4 db 'PRINT', 0
skeys5 db 'F6', 0
nkeys5 db 'ORDER', 0
skeys6 db 'F7', 0
nkeys6 db 'SØG', 0
skeys7 db 'F8', 0
nkeys7 db 'SUM', 0
skeys8 db 'F10', 0
nkeys8 db 'MENU', 0
skeys9 db 'ESC', 0
nkeys9 db 'EXIT', 0
; --- Hovedprocedure
func main
; Stak
cli
mov SP, size_com + len_stack
sti
; Jeg åbner systemet
farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
initcon
slip \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
initsys
initmouse
cursor_off
; Tegn hovedrammen
sætfarve \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
trækboks \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
trækboks \u0026 lt; 0, 2.79, 2, @ box_main \u0026 gt;
mouse_on
sætfarve \u0026 lt; LblAttr \u0026 gt;
sayxy \u0026 lt; 16, 0, @ label1, @ f_s \u0026 gt;
sayxy \u0026 lt; 56, 0, @ label2, @ f_s \u0026 gt;
sætfarve \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; 0, 1, @ title1, @ f_s \u0026 gt;
sætfarve \u0026 lt; KreAttr \u0026 gt;
sig \u0026 lt; @ title1, @ f_s \u0026 gt;
sætfarve \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
; Menulinje
farve \u0026 lt; MenuAttr \u0026 gt;
mkeys_on \u0026 lt; SAND \u0026 gt;
mkeys_fr \u0026 lt; 79, 0, PGUPKEY * 100h, @ ukeys1, @ snull \u0026 gt;
mkeys_fr \u0026 lt; 79.24, PGDNKEY * 100h, @ ukeys2, @ snull \u0026 gt;
mkeys_fr \u0026 lt; 4.24, CRKEY, @ skeys1, @ nkeys1 \u0026 gt;
mkeys_fr \u0026 lt; 14.24, INSKEY * 100h, @ skeys2, @ nkeys2 \u0026 gt;
mkeys_fr \u0026 lt; 22,24, DELRKEY * 100h, @ skeys3, @ nkeys3 \u0026 gt;
mkeys_fr \u0026 lt; 30,24, F5KEY * 100h, @ skeys4, @ nkeys4 \u0026 gt;
mkeys_fr \u0026 lt; 37.24, F6KEY * 100h, @ skeys5, @ nkeys5 \u0026 gt;
mkeys_fr \u0026 lt; 44,24, F7KEY * 100h, @ skeys6, @ nkeys6 \u0026 gt;
mkeys_fr \u0026 lt; 51,24, F8KEY * 100h, @ skeys7, @ nkeys7 \u0026 gt;
mkeys_fr \u0026 lt; 58.24, F10KEY * 100h, @ skeys8, @ nkeys8 \u0026 gt;
mkeys_fr \u0026 lt; 65,24, ESCKEY, @ skeys9, @ nkeys9 \u0026 gt;
mkeys_on \u0026 lt; FALSE \u0026 gt;
; Åbning af filen
genåbn \u0026 lt; @ rec_A, @ file_A, len_A \u0026 gt;
getmem \u0026 lt; len_A \u0026 gt ;, \u0026 lt; buf_A \u0026 gt; ; recbuffer
recempty \u0026 lt; @ rec_A, @ _mb_empty \u0026 gt;
; Arbejde med filen
farve \u0026 lt; MainAttr \u0026 gt;
mov færdig, SAND
mens \u0026 lt; færdig e SAND \u0026 gt;
dbedit \u0026 lt; @ rec_A, 0, 3.79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
endwh
; Luk filen
freemem \u0026 lt; * buf_A \u0026 gt;
luk igen \u0026 lt; @ rec_A \u0026 gt;
; Jeg lukker den anden
mkeys_of
; Jeg lukker systemet
mouse_off
cursor_on
; Afslutter programmet
clrscr
stop \u0026 lt; 0 \u0026 gt;
endf
END START