Systemet med makroer lar deg skrive programmer i den kjente syntaksen til et høyt nivå språk og gjør tekstene til programmene mer gjennomsiktige for lesing og oppfatning. Designet for TASM-2.5 og MASM-5.0 monteringsspråk kompilatorer, er det et høyt nivå strukturert språk som kan brukes til å skrive programmer i alle størrelser og formål. Designet for en programmerer som allerede har erfaring med programmering på monteringsspråk.
* .ASM-filer Disse filene inneholder eksempler på programmer skrevet i makrosystemet.
For å installere på systemet, må du kopiere MSYSTEM.MAC-filen og resten av filene - etter eget skjønn. For vellykket programmering i makrosystemet, anbefales det at du gjør deg detaljert kjent med manualen og selve makrosystemet i MSYSTEM.MAC-filen.
Husk at montøren ikke forstår feil, og alt avhenger bare av deg.
tasm25.zip
- 175 kBytes.
Her er for eksempel koden for et enkelt databaseprogram, som står for inntekt og bekostning av penger
; MB.ASM
; D. L. Konyukhov
.MODELL 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 window.m
inkluderer color.m
inkluderer rec.m
inkluderer dbedit.m
inkluderer say.m
inkluderer read.m
inkluderer key.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
settfarge \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; X, Y, @ space, @ f_s \u0026 gt;
settfarge \u0026 lt; gammel_farge \u0026 gt;
si \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
settfarge \u0026 lt; DebAttr \u0026 gt;
si \u0026 lt; @ mellomrom, @ f_s \u0026 gt;
settfarge \u0026 lt; gammel_farge \u0026 gt;
si \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
settfarge \u0026 lt; DebAttr \u0026 gt;
si \u0026 lt; @ mellomrom, @ f_s \u0026 gt;
settfarge \u0026 lt; KreAttr \u0026 gt;
si \u0026 lt; @ mellomrom, @ f_s \u0026 gt;
settfarge \u0026 lt; gammel_farge \u0026 gt;
si \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
settfarge \u0026 lt; KreAttr \u0026 gt;
si \u0026 lt; @ mellomrom, @ f_s \u0026 gt;
settfarge \u0026 lt; gammel_farge \u0026 gt;
si \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
settfarge \u0026 lt; KreAttr \u0026 gt;
si \u0026 lt; @ mellomrom, @ f_s \u0026 gt;
settfarge \u0026 lt; gammel_farge \u0026 gt;
endf
func _fuser, \u0026 lt; byte-modus, ord RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, offentlig
old_color EQU [BP] -1
mov DI, 1
mov AL, cs: modus
bytt AL, \u0026 lt; 0.1 \u0026 gt;
sak 1 {; tegne
getcolor, \u0026 lt; old_color \u0026 gt;
settfarge \u0026 lt; LblAttr \u0026 gt;
telle \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;
settfarge \u0026 lt; gammel_farge \u0026 gt;
sak 2 {
mov retr_cho, SANT
mens \u0026 lt; retr_cho e SANT \u0026 gt; {
mov retr_cho, FALSE
mkeys_to
mov AL, cs: key_AL
bytt AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
sak 1 {
mov AH, cs: key_AH
bryter AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
sak 1; sett inn
Setter inn, \u0026 lt; DI \u0026 gt;
sak 2; slett
Sletter, \u0026 lt; DI \u0026 gt;
sak 3; sortere
Sortering, \u0026 lt; DI \u0026 gt;
sak 4; finn
sak 5; dato
Dating, \u0026 lt; DI \u0026 gt;
sak 6; meny
menupull
mov DI, 3
endcase
sak 2 {; merke
sak 3; innspill
Inndata \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
sak 4; avkjørsel
mov gjort, FALSE
mov DI, 0
endcase
endwh}
endcase
endf \u0026 lt; ord DI \u0026 gt;
label1 db 'PARISH', 0
label2 db 'FLOW', 0
title1 db 'Tittelmengde', 0
ukeys1 db 1Eh, 0
ukeys2 db 1Fh, 0
skeys1 db 'ENTER', 0
nkeys1 db 'ENTER', 0
skeys2 db 'INS', 0
nkeys2 db 'NYTT', 0
skeys3 db 'DEL', 0
nkeys3 db 'DELETE', 0
skeys4 db 'F5', 0
nkeys4 db 'PRINT', 0
skeys5 db 'F6', 0
nkeys5 db 'ORDER', 0
skeys6 db 'F7', 0
nkeys6 db 'SØK', 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
; --- Hodeprosedyre
func main
; Stack
cli
mov SP, size_com + len_stack
sti
; Jeg åpner systemet
farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
initcon
slipp \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
initsys
initmouse
cursor_off
; Tegn hovedrammen
settfarge \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
trekkboks \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
trekkboks \u0026 lt; 0, 2.79, 2, @ box_main \u0026 gt;
mouse_on
settfarge \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;
settfarge \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; 0, 1, @ title1, @ f_s \u0026 gt;
settfarge \u0026 lt; KreAttr \u0026 gt;
si \u0026 lt; @ title1, @ f_s \u0026 gt;
settfarge \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
; Menylinje
farge \u0026 lt; MenuAttr \u0026 gt;
mkeys_on \u0026 lt; TRUE \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;
; Åpne filen
gjenåpne \u0026 lt; @ rec_A, @ file_A, len_A \u0026 gt;
getmem \u0026 lt; len_A \u0026 gt ;, \u0026 lt; buf_A \u0026 gt; ; recbuffer
frikjent \u0026 lt; @ rec_A, @ _mb_empty \u0026 gt;
; Arbeider med filen
farge \u0026 lt; MainAttr \u0026 gt;
mov ferdig, SANT
mens \u0026 lt; gjort e SANT \u0026 gt;
dbedit \u0026 lt; @ rec_A, 0, 3.79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
endwh
; Lukk filen
freemem \u0026 lt; * buf_A \u0026 gt;
lukk \u0026 lt; @ rec_A \u0026 gt;
; Jeg lukker den andre
mkeys_of
; Jeg lukker systemet
mouse_off
cursor_on
; Avslutter programmet
clrscr
stopp \u0026 lt; 0 \u0026 gt;
endf
SLUTTSTART