msystem.zip 411 KB.

Il sistema di macro consente di scrivere programmi nella sintassi familiare di un linguaggio di alto livello e rende i testi dei programmi più trasparenti per la lettura e la percezione. Il sistema è progettato per i compilatori in linguaggio assembly TASM-2.5 e MASM-5.0, è un linguaggio strutturato di alto livello che può essere utilizzato per scrivere programmi di qualsiasi dimensione e per qualsiasi scopo. Progettato per un programmatore che ha già esperienza nella programmazione in linguaggio assembly.

Una breve descrizione dei file principali nell'archivio.

Il sistema di macro stesso:

  • MSYSTEM.MAC Questo file contiene il sistema macro effettivo.
  • MMACROS.MAC Questo file contiene macro utili aggiuntive.
  • MBIOS.MAC Questo file contiene le macro per il BIOS IBM-PC.
  • MDOS.MAC Questo file contiene macro per 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
  • Il sistema di macro stesso:

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

  • MSYSTEM.DOC Questo è il file di documentazione per il sistema macro.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • READ.DOC
  • TITLE.DOC

  • File * .ASM Questi file contengono esempi di programmi scritti nel sistema macro.

    Per installare sul sistema, assicurati di copiare il file MSYSTEM.MAC e il resto dei file, a tua discrezione. Per una corretta programmazione nel sistema macro, si consiglia di familiarizzare in dettaglio con il manuale e il sistema macro stesso contenuto nel file MSYSTEM.MAC.
    Ricorda che l'assemblatore non capisce gli errori e tutto dipende solo da te.
    Qualunque sia il tuo approccio, il successo !!!
    Lo stesso Assembler può essere scaricato qui tasm25.zip - 175 KB.

    Ad esempio, ecco il codice per un semplice programma di database, che tiene conto delle entrate e delle uscite in denaro

    ; MB.ASM
    ; D. L. Konyukhov

    .MODELLO PICCOLO

    include msystem.mac
    include sys.mac
    include conio.mac
    include mouse.mac
    include mem.mac
    include kbd.mac
    include math.mac
    includi cursore.m
    include window.m
    include color.m
    includi rec.m
    include dbedit.m
    includi say.m
    include read.m
    include key.m
    include mkeys.m

    includi mb.m

    size_com = 20000 + 256
    len_stack = 20000
    len_vars = 20000

    .CODE
    BEGIN START, 100 h, _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, pubblico
    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, @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    dì \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    dì \u0026 lt; @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    dì \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    dì \u0026 lt; @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    dì \u0026 lt; @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    dì \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    dì \u0026 lt; @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    dì \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    dì \u0026 lt; @ spazio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    endf

    func _fuser, \u0026 lt; modalità byte, word RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, pubblico
    old_color EQU [BP] -1
    mov DI, 1
    mov AL, cs: modalità
    cambia AL, \u0026 lt; 0.1 \u0026 gt;
    caso 1 {; disegnare
    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;
    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;
    caso 2 {
    mov retr_cho, TRUE
    mentre \u0026 lt; retr_cho e TRUE \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    switch AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    caso 1 {
    mov AH, cs: key_AH
    interruttore AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    caso 1; inserire
    Inserimento, \u0026 lt; DI \u0026 gt;
    caso 2; elimina
    Eliminazione, \u0026 lt; DI \u0026 gt;
    caso 3; ordina
    Ordinamento, \u0026 lt; DI \u0026 gt;
    caso 4; trova
    caso 5; data
    Incontri, \u0026 lt; DI \u0026 gt;
    caso 6; menu
    menupull
    mov DI, 3
    endcase
    caso 2 {; segnare
    caso 3; input
    Inserimento di \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
    caso 4; uscita
    mov fatto, FALSO
    mov DI, 0
    endcase
    endwh}
    endcase
    endf \u0026 lt; word DI \u0026 gt;

    label1 db \PARISH\, 0
    label2 db \FLOW\, 0
    titolo1 db \Quantità titolo\, 0

    ukeys1 db 1Eh, 0
    ukeys2 db 1Fh, 0
    skeys1 db \ENTER\, 0
    nkeys1 db \ENTER\, 0
    skeys2 db \INS\, 0
    nkeys2 db \NEW\, 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

    ; --- Procedura testa
    func main
    ; Stack
    cli
    mov SP, size_com + len_stack
    sti
    ; Apro il sistema
    farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
    initcon
    rilascia \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
    initsys
    initmouse
    cursor_off
    ; Disegna la cornice principale
    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;
    dì \u0026 lt; @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ; Linea di menu
    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 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;
    ; Apertura del file
    riapri \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;
    ; Lavorare con il file
    color \u0026 lt; MainAttr \u0026 gt;
    mov fatto, VERO
    mentre \u0026 lt; done e TRUE \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ; Chiudi il file
    freemem \u0026 lt; * buf_A \u0026 gt;
    recclose \u0026 lt; @ rec_A \u0026 gt;
    ; Chiudo l'altro
    mkeys_of
    ; Chiudo il sistema
    mouse_off
    cursor_on
    ; Uscita dal programma
    clrscr
    interrompi \u0026 lt; 0 \u0026 gt;
    endf
    FINE INIZIO