Whatsapp Telegram
 



msystem.zip 411 KB.

Sistema macro permite que você escreva programas em sintaxe de linguagem familiar alto nível e faz textos do programa mais transparente para ler e percepção. Sistema projetado para compiladores com linguagem assembly TASM-2.5 e MASM-5.0. Representa linguagem estruturada alto nível que pode usar para escrever programas de qualquer tamanho e qualquer propósito. Calculado para um programador que já tem experiência em programação de linguagem assembler.

Breve descrição dos principais arquivos do arquivo.

O próprio sistema de macros:

  • MSYSTEM.MAC Este arquivo contém o sistema de macro real.
  • MMACROS.MAC Este arquivo contém macros úteis adicionais.
  • MBIOS.MAC Este arquivo contém macros para o BIOS do IBM-PC.
  • MDOS.MAC Este arquivo contém macros para 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
  • O próprio sistema de macros:

  • 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
  • DOCUMENTAÇÃO:

  • MSYSTEM.DOC Este é o arquivo de documentação para o sistema de macro.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • READ.DOC
  • TITLE.DOC

  • Arquivos * .ASM Esses arquivos contêm exemplos de programas escritos em sistema macro.

    Para instalação no sistema copie o arquivo requerido MSYSTEM.MAC, e o resto dos arquivos - por Sua discrição. Pra programação de sucesso em sistema de macros recomendado em detalhes leia o manual e o próprio sistema macros contidas em o arquivo MSYSTEM.MAC.
    Lembre-se de que os erros do montador não entende e tudo depende apenas de você.
    Seja qual for a sua abordagem - sucessos !!!
    O próprio Assembler pode ser baixado aqui tasm25.zip - 175 KB.

    Por exemplo, aqui está um código simples programas de banco de dados, contabilidade receita e despesa de dinheiro

    ; MB.ASM
    ; D. L. Konyukhov

    .MODEL SMALL

    incluir msystem.mac
    incluir sys.mac
    inclui conio.mac
    incluir mouse.mac
    incluir mem.mac
    inclui kbd.mac
    incluir math.mac
    incluir cursor.m
    incluir window.m
    incluir color.m
    incluir rec.m
    incluir dbedit.m
    inclua say.m
    incluir read.m
    incluir key.m
    incluir mkeys.m

    inclui 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, byte Y \u0026 gt ;, \u0026 lt; SI \u0026 gt ;, 1, público
    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, @ espaço, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    diga \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    diga \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    diga \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    diga \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    diga \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    diga \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    diga \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    diga \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    diga \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    endf

    func _fuser, \u0026 lt; modo de byte, palavra RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, público
    old_color EQU [BP] -1
    mov DI, 1
    mov AL, cs: modo
    alternar AL, \u0026 lt; 0,1 \u0026 gt;
    caso 1 {; desenhar
    getcolor, \u0026 lt; old_color \u0026 gt;
    setcolor \u0026 lt; LblAttr \u0026 gt;
    recontagem \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
    enquanto \u0026 lt; retr_cho e TRUE \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    alternar AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    caso 1 {
    mov AH, cs: key_AH
    mudar AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    caso 1; inserir
    Inserindo, \u0026 lt; DI \u0026 gt;
    caso 2; deletar
    Excluindo, \u0026 lt; DI \u0026 gt;
    caso 3; classificar
    Classificação, \u0026 lt; DI \u0026 gt;
    caso 4; encontrar
    caso 5; data
    Datar, \u0026 lt; DI \u0026 gt;
    caso 6; menu
    menupull
    mov DI, 3
    endcase
    case 2 {; marca
    caso 3; entrada
    Inserindo \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
    caso 4; sair
    mov feito, FALSE
    mov DI, 0
    endcase
    endwh}
    endcase
    endf \u0026 lt; palavra DI \u0026 gt;

    label1 db 'PARISH', 0
    label2 db 'FLOW', 0
    title1 db 'Nome Quantidade ', 0

    ukeys1 db 1Eh, 0
    ukeys2 db 1Fh, 0
    skeys1 db 'ENTER', 0
    nkeys1 db 'ENTER', 0
    skeys2 db 'INS', 0
    nkeys2 db 'NOVO', 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 'SAÍDA', 0

    ; --- Procedimento de cabeça
    função principal
    ; Pilha
    cli
    mov SP, size_com + len_stack
    sti
    ; Eu abro o sistema
    farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
    initcon
    libere \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
    initsys
    initmouse
    cursor_off
    ; Desenhe o quadro 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;
    caixa de tração \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;
    diga \u0026 lt; @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ; Menu-line
    cor \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;
    ; Abrindo o arquivo
    reabrir \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;
    ; Trabalhando com o arquivo
    cor \u0026 lt; MainAttr \u0026 gt;
    mov feito, TRUE
    enquanto \u0026 lt; feito e TRUE \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ; Feche o arquivo
    freemem \u0026 lt; * buf_A \u0026 gt;
    recclose \u0026 lt; @ rec_A \u0026 gt;
    ; Eu fecho o outro
    mkeys_of
    ; Eu fecho o sistema
    mouse_off
    cursor_on
    ; Saindo do programa
    clrscr
    interromper \u0026 lt; 0 \u0026 gt;
    endf
    END START