msystem.zip 411 KB.

System makr umożliwia pisanie programów w znanej składni języka wysokiego poziomu i sprawia, że ​​teksty programów są bardziej przejrzyste do czytania i percepcji. Zaprojektowany dla kompilatorów języków asemblera TASM-2.5 i MASM-5.0, jest to język strukturalny wysokiego poziomu, który może być używany do pisania programów o dowolnym rozmiarze i przeznaczeniu. Zaprojektowany dla programisty, który ma już doświadczenie w programowaniu w języku asemblerowym.

Krótki opis głównych plików w archiwum.

Sam system makr:

  • MSYSTEM.MAC Ten plik zawiera rzeczywisty system makr.
  • MMACROS.MAC Ten plik zawiera dodatkowe przydatne makra.
  • MBIOS.MAC Ten plik zawiera makra dla systemu BIOS IBM-PC.
  • MDOS.MAC Ten plik zawiera makra dla 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
  • Sam system makr:

  • 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
  • DOKUMENTACJA:

  • MSYSTEM.DOC To jest plik dokumentacji dla systemu makr.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • READ.DOC
  • TITLE.DOC

  • Pliki * .ASM Te pliki zawierają przykłady programów napisanych w systemie makr.

    Aby zainstalować w systemie, pamiętaj o skopiowaniu pliku MSYSTEM.MAC i pozostałych plików - według własnego uznania. W celu pomyślnego zaprogramowania w systemie makr zaleca się szczegółowe zapoznanie się z instrukcją obsługi i samym systemem makr zawartym w pliku MSYSTEM.MAC.
    Pamiętaj, że asembler nie rozumie błędów i wszystko zależy tylko od Ciebie.
    Niezależnie od podejścia, sukces !!!
    Sam asembler można pobrać tutaj tasm25.zip - 175 KB.

    Na przykład, tutaj jest kod prostego programu bazodanowego, uwzględniający dochody i wydatki finansowe

    ; MB.ASM
    ; D. L. Konyukhov

    .MODEL MAŁY

    zawiera msystem.mac
    zawiera sys.mac
    include conio.mac
    zawierać mouse.mac
    include mem.mac
    include kbd.mac
    include math.mac
    uwzględnij kursor. m
    dołącz window.m
    uwzględnij kolor.m
    uwzględnij rec.m
    zawiera dbedit.m
    zawierać say.m
    uwzględnij read.m
    dołącz klucz. m
    uwzględnij mkeys.m

    zawiera mb.m

    size_com = 20000 + 256
    len_stack = 20000
    len_vars = 20000

    .CODE
    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, bajt 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;
    powiedz \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    powiedz \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    powiedz \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    powiedz \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    powiedz \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    powiedz \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    powiedz \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    powiedz \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    powiedz \u0026 lt; @ space, @ 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: tryb
    przełącznik AL, \u0026 lt; 0,1 \u0026 gt;
    przypadek 1 {; rysować
    getcolor, \u0026 lt; old_color \u0026 gt;
    setcolor \u0026 lt; LblAttr \u0026 gt;
    reccount \u0026 lt; @ rec_A \u0026 gt ;, \u0026 lt; ii \u0026 gt;
    sayxy \u0026 lt; 35, 2, @ ii, @ f_w4 \u0026 gt;
    rekrecno \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;
    przypadek 2 {
    mov retr_cho, TRUE
    podczas gdy \u0026 lt; retr_cho e TRUE \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    przełącznik AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    przypadek 1 {
    mov AH, cs: key_AH
    przełącznik AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    przypadek 1; wstaw
    Wstawianie, \u0026 lt; DI \u0026 gt;
    przypadek 2; usuń
    Usuwanie, \u0026 lt; DI \u0026 gt;
    przypadek 3; sortuj
    Sortowanie, \u0026 lt; DI \u0026 gt;
    przypadek 4; znajdź
    przypadek 5; data
    Randki, \u0026 lt; DI \u0026 gt;
    przypadek 6; menu
    menupull
    mov DI, 3
    koniec
    przypadek 2 {; znak
    przypadek 3; wejście
    Wprowadzanie \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
    przypadek 4; wyjście
    mov gotowe, FALSE
    mov DI, 0
    koniec
    endwh}
    koniec
    endf \u0026 lt; word DI \u0026 gt;

    label1 db 'PARISH', 0
    label2 db 'FLOW', 0
    title1 db 'Ilość tytułów', 0

    ukeys1 db 1Eh, 0
    ukeys2 db 1Fh, 0
    skeys1 db 'ENTER', 0
    nkeys1 db 'ENTER', 0
    skeys2 db 'INS', 0
    nkeys2 db 'NOWOŚĆ', 0
    skeys3 db 'DEL', 0
    nkeys3 db 'DELETE', 0
    skeys4 db 'F5', 0
    nkeys4 db 'PRINT', 0
    skeys5 db 'F6', 0
    nkeys5 db 'ZAMÓWIENIE', 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

    ; --- Procedura głowy
    func główna wersja ; Stos
    cli
    mov SP, size_com + len_stack
    sti
    ; Otwieram system
    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
    kursor_wyłącz
    ; Narysuj ramę główną
    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;
    powiedz \u0026 lt; @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ;
    linii menu kolor \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;
    ; Otwieranie pliku
    recopen \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;
    ; Praca z plikiem
    kolor \u0026 lt; MainAttr \u0026 gt;
    mov gotowe, TRUE
    podczas \u0026 lt; done e TRUE \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ; Zamknij plik
    freemem \u0026 lt; * buf_A \u0026 gt;
    recclose \u0026 lt; @ rec_A \u0026 gt;
    ; Zamykam drugi
    mkeys_of
    ; Zamykam system
    mouse_off
    kursor_on
    ; Wyjście z programu
    clrscr
    zatrzymaj \u0026 lt; 0 \u0026 gt;
    endf
    KONIEC START