Het systeem van macro's stelt u in staat om programma's te schrijven in de vertrouwde syntaxis van een taal op hoog niveau en maakt de teksten van programma's transparanter voor lezen en perceptie. Ontworpen voor TASM-2.5 en MASM-5.0 assembleertaalcompilers, het is een gestructureerde taal op hoog niveau die kan worden gebruikt om programma's van elke grootte en elk doel te schrijven. Ontworpen voor een programmeur die al ervaring heeft met programmeren in assembleertaal.
* .ASM-bestanden Deze bestanden bevatten voorbeelden van programma's die in het macrosysteem zijn geschreven.
Om op het systeem te installeren, moet u naar eigen goeddunken het MSYSTEM.MAC-bestand en de rest van de bestanden kopiëren. Voor een succesvolle programmering in het macrosysteem, wordt aanbevolen dat u uzelf vertrouwd maakt met de handleiding en het macrosysteem zelf in het MSYSTEM.MAC-bestand.
Onthoud dat de assembler fouten niet begrijpt en dat alles alleen van jou afhangt.
tasm25.zip
- 175 KBytes.
Hier is bijvoorbeeld de code voor een eenvoudig databaseprogramma dat rekening houdt met de inkomsten en uitgaven van geld
MB.ASM
D. L. Konyukhov
.MODEL KLEIN
omvatten msystem.mac
omvatten sys.mac
omvatten conio.mac
omvatten mouse.mac
omvatten mem.mac
omvatten kbd.mac
omvatten math.mac
omvatten cursor.m
omvatten window.m
omvatten color.m
omvatten rec.m
omvatten dbedit.m
omvatten say.m
omvatten read.m
include key.m
omvatten mkeys.m
inclusief mb.m
size_com = 20000 + 256
len_stack = 20000
len_vars = 20000
.CODE
BEGIN START, 100 uur, _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, openbaar
old_color EQU [BP] -1
getcolor, \u0026 lt; old_color \u0026 gt;
mov SI, buf_A
setcolor \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; X, Y, @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
zeg \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
setcolor \u0026 lt; DebAttr \u0026 gt;
zeg \u0026 lt; @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
zeg \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
setcolor \u0026 lt; DebAttr \u0026 gt;
zeg \u0026 lt; @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
zeg \u0026 lt; @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
zeg \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
zeg \u0026 lt; @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
zeg \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
zeg \u0026 lt; @ spatie, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
endf
func _fuser, \u0026 lt; bytemodus, woord RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, openbaar
old_color EQU [BP] -1
mov DI, 1
mov AL, cs: modus
schakelaar AL, \u0026 lt; 0.1 \u0026 gt;
zaak 1 {; tekenen
getcolor, \u0026 lt; old_color \u0026 gt;
setcolor \u0026 lt; LblAttr \u0026 gt;
hertelling \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;
setcolor \u0026 lt; old_color \u0026 gt;
geval 2 {
mov retr_cho, WAAR
terwijl \u0026 lt; retr_cho e TRUE \u0026 gt; {
mov retr_cho, FALSE
mkeys_to
mov AL, cs: key_AL
schakelaar AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
geval 1 {
mov AH, cs: key_AH
schakelaar AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
zaak 1; invoegen
Invoegen, \u0026 lt; DI \u0026 gt;
geval 2; verwijderen
Verwijderen, \u0026 lt; DI \u0026 gt;
geval 3; sorteren
Sorteren, \u0026 lt; DI \u0026 gt;
geval 4; vind
geval 5; datum
Dating, \u0026 lt; DI \u0026 gt;
geval 6; menu
menupull
mov DI, 3
einddoos
geval 2 {; markeren
geval 3; invoer
Invoeren van \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
geval 4; afsluiten
mov gedaan, FALSE
mov DI, 0
einddoos
endwh}
einddoos
endf \u0026 lt; word DI \u0026 gt;
label1 db 'PARISH', 0
label2 db 'FLOW', 0
title1 db 'Titel Aantal', 0
ukeys1 db 1Eh, 0
ukeys2 db 1Fh, 0
skeys1 db 'ENTER', 0
nkeys1 db 'ENTER', 0
skeys2 db 'INS', 0
nkeys2 db 'NIEUW', 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 'SEARCH', 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
; --- Hoofdprocedure
func belangrijkste
Stapel
cli
mov SP, size_com + len_stack
sti
Ik open het systeem
farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
initcon
release \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
initsys
initmouse
cursor_off
Teken het hoofdframe
setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
drawbox \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
drawbox \u0026 lt; 0, 2.79, 2, @ box_main \u0026 gt;
mouse_on
setcolor \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;
setcolor \u0026 lt; DebAttr \u0026 gt;
sayxy \u0026 lt; 0, 1, @ title1, @ f_s \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
zeg \u0026 lt; @ title1, @ f_s \u0026 gt;
setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
Menuregel
kleur \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;
Het bestand openen
heropenen \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;
Werken met het bestand
kleur \u0026 lt; MainAttr \u0026 gt;
mov gedaan, WAAR
while \u0026 lt; done e TRUE \u0026 gt;
dbedit \u0026 lt; @ rec_A, 0, 3.79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
endwh
Sluit het bestand
freemem \u0026 lt; * buf_A \u0026 gt;
hersluit \u0026 lt; @ rec_A \u0026 gt;
Ik sluit de andere
mkeys_of
Ik sluit het systeem
mouse_off
cursor_on
Het programma verlaten
clrscr
halt \u0026 lt; 0 \u0026 gt;
endf
EINDE BEGIN