Sistem macro Asamblor
msystem.zip 411KB.
Sistem macro
vă permite să scrieți programe în
sintaxa limbajului familiar
nivel ridicat și nu
textele programului mai mult
transparent de citit și
percepţie. Sistem
conceput pentru compilatoare cu
limbaj de asamblare TASM-2.5 și MASM-5.0.
Reprezintă
limbaj structurat
nivel înalt care poate
folosesc pentru a scrie
programe de orice dimensiune și
orice scop. Calculat
pentru un programator care deja are
experiență în programarea limbajului
asamblator.
Scurtă descriere a fișierelor principale din arhivă.
Sistemul de macrocomenzi în sine:
MSYSTEM.MAC Acest fișier conține sistemul macro actual.
MMACROS.MAC Acest fișier conține macro-uri utile suplimentare.
MBIOS.MAC Acest fișier conține macrocomenzi pentru BIOS-ul IBM-PC.
MDOS.MAC Acest fișier conține macrocomenzi pentru IBM-PC DOS.
CONIO.MAC
DIR.MAC
ERROR.MAC
FLOAT.MAC
IO.MAC
KBD.MAC
MATH.MAC
MBIOS.MAC
MEM.MAC
MOUSE.MAC
STOV.MAC
STRING.MAC
SYS.MAC
Sistemul de macrocomenzi în sine:
CHOISE.M
CLOCK.M
CODER.M
COLOR.M
CURSOR.M
DBEDIT.M
INIT.M
KEY.M
MENU.M
MKEYS.M
READ.M
REC.M
SAY.M
SCROLL.M
SORT.M
SOUND.M
WINDOW.M
DOCUMENTARE:
MSYSTEM.DOC Acesta este fișierul de documentare pentru sistemul macro.
EXTA.DOC
MMACROS.DOC
MMEM.DOC
OGLAV.DOC
READ.DOC
TITLE.DOC
* Fișiere .ASM Aceste fișiere conțin
exemple de programe scrise în
sistem macro.
Pentru instalare pe sistem
copiați fișierul necesar
MSYSTEM.MAC și restul fișierelor - de
Discreția dumneavoastră. Pentru
programare de succes în
sistem de macrocomenzi
recomandat în detaliu
citiți manualul și
sistemul în sine
macrocomenzi conținute în
fișierul MSYSTEM.MAC.
Amintiți-vă că erorile de asamblare
nu înțelege și totul depinde
numai de la tine.
Oricare ar fi abordarea ta -
succese !!!
Asamblorul în sine poate fi descărcat de aici
tasm25.zip - 175 KB.
De exemplu, iată un cod simplu
programe de baze de date, contabilitate
venituri și cheltuieli de bani
; MB.ASM
; D. L. Konyukhov
.MODEL MIC
include msystem.mac
include sys.mac
include conio.mac
include mouse.mac
include mem.mac
include kbd.mac
include math.mac
include cursor.m
include fereastra.m
include culoare.m
include rec.m
include dbedit.m
include say.m
include read.m
include cheia.m
include mkeys.m
include mb.m
size_com=20000 + 256
len_stack=20000
len_vars=20000
.CODE
ÎNCEPE, START, 100h, _principal, {
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; octet X, octet Y \u0026 gt ;, \u0026 lt; SI \u0026 gt ;, 1, public
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, @ space, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
spuneți \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
setcolor \u0026 lt; DebAttr \u0026 gt;
spuneți \u0026 lt; @ spațiu, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
spuneți \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
setcolor \u0026 lt; DebAttr \u0026 gt;
spuneți \u0026 lt; @ spațiu, @ f_s \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
spuneți \u0026 lt; @ spațiu, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
spuneți \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
spuneți \u0026 lt; @ spațiu, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
spuneți \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
setcolor \u0026 lt; KreAttr \u0026 gt;
spuneți \u0026 lt; @ spațiu, @ f_s \u0026 gt;
setcolor \u0026 lt; old_color \u0026 gt;
endf
func _fuser, \u0026 lt; byte mode, word RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, public
old_color EQU [BP] -1
mov DI, 1
mov AL, cs: mode
comutați AL, \u0026 lt; 0,1 \u0026 gt;
cazul 1 {; desenează
getcolor, \u0026 lt; old_color \u0026 gt;
setcolor \u0026 lt; LblAttr \u0026 gt;
recontează \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;
cazul 2 {
mov retr_cho, TRUE
în timp ce \u0026 lt; retr_cho e TRUE \u0026 gt; {
mov retr_cho, FALSE
mkeys_to
mov AL, cs: key_AL
comutați AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
cazul 1 {
mov AH, cs: key_AH
comutați AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
cazul 1; introduceți
Se introduce, \u0026 lt; DI \u0026 gt;
cazul 2; șterge
Ștergerea, \u0026 lt; DI \u0026 gt;
cazul 3; sortează
Sortare, \u0026 lt; DI \u0026 gt;
cazul 4; gaseste
cazul 5; data
Întâlniri, \u0026 lt; DI \u0026 gt;
cazul 6; meniu
menupull
mov DI, 3
endcase
caz 2 {; marca
cazul 3; de intrare
Introducerea \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
cazul 4; ieșire
mov făcut, FALS
mov DI, 0
endcase
endwh}
endcase
endf \u0026 lt; cuvânt DI \u0026 gt;
label1 db 'PAROHIE', 0
label2 db 'FLOW', 0
title1 db 'Nume Cantitate
', 0
ukeys1 db 1Eh, 0
ukeys2 db 1Fh, 0
skeys1 db 'ENTER', 0
nkeys1 db 'ENTER', 0
skeys2 db 'INS', 0
nkeys2 db 'NOU', 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 'CAUTARE', 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
; --- Procedura șefului
func main
; Stiva
cli
mov SP, size_com + len_stack
sti
; Deschid sistemul
farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
initcon
lansează \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
initsys
initmouse
cursor_off
; Desenați cadrul principal
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;
spuneți \u0026 lt; @ title1, @ f_s \u0026 gt;
setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
; Linia de meniu
color \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 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; FALS \u0026 gt;
; Deschiderea fișierului
redeschideți \u0026 lt; @ rec_A, @ file_A, len_A \u0026 gt;
getmem \u0026 lt; len_A \u0026 gt ;, \u0026 lt; buf_A \u0026 gt; ; recbuffer
recumpty \u0026 lt; @ rec_A, @ _mb_empty \u0026 gt;
; Lucrul cu fișierul
culoare \u0026 lt; MainAttr \u0026 gt;
mov făcut, ADEVĂRAT
în timp ce \u0026 lt; done e TRUE \u0026 gt;
dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
endwh
; Închideți fișierul
freemem \u0026 lt; * buf_A \u0026 gt;
închideți \u0026 lt; @ rec_A \u0026 gt;
; Îl închid pe celălalt
mkeys_of
; Închid sistemul
mouse_off
cursor_on
; Ieșirea din program
clrscr
opriți \u0026 lt; 0 \u0026 gt;
endf
END START