msystem.zip 411 KB.

Sistema de macros te permite escribir programas en sintaxis de lenguaje familiar alto nivel y lo hace textos del programa más transparente para leer y percepción. Sistema diseñado para compiladores con lenguaje ensamblador TASM-2.5 y MASM-5.0. Representa lenguaje estructurado alto nivel que puede usar para escribir programas de cualquier tamaño y cualquier propósito. Calculado para un programador que ya tiene experiencia en programación de lenguajes ensamblador.

Breve descripción de los archivos principales del archivo.

El propio sistema de macros:

  • MSYSTEM.MAC Este archivo contiene el sistema de macros real.
  • MMACROS.MAC Este archivo contiene macros útiles adicionales.
  • MBIOS.MAC Este archivo contiene macros para el BIOS de IBM-PC.
  • MDOS.MAC Este archivo contiene 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
  • El propio 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
  • DOCUMENTACIÓN:

  • MSYSTEM.DOC Este es el archivo de documentación del sistema de macros.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • READ.DOC
  • TITLE.DOC

  • Archivos * .ASM Estos archivos contienen ejemplos de programas escritos en macro sistema.

    Para la instalación en el sistema copiar el archivo requerido MSYSTEM.MAC y el resto de archivos, por Tu discreción. Para programación exitosa en sistema de macros recomendado en detalle leer el manual y el propio sistema macros contenidas en el archivo MSYSTEM.MAC.
    Recuerda que los errores del ensamblador no entiende y todo depende solo de ti.
    Cualquiera que sea su enfoque: éxitos !!!
    El propio ensamblador se puede descargar aquí tasm25.zip - 175 KB.

    Por ejemplo, aquí hay un código simple programas de base de datos, contabilidad ingresos y gastos de dinero

    ; MB.ASM
    ; D. L. Konyukhov

    .MODEL PEQUEÑO

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

    incluir 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, 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, @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    di \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    di \u0026 lt; @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    di \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    di \u0026 lt; @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    di \u0026 lt; @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    di \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    di \u0026 lt; @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    di \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    di \u0026 lt; @ espacio, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    endf

    func _fuser, \u0026 lt; modo byte, palabra RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, public
    old_color EQU [BP] -1
    mov DI, 1
    mov AL, cs: modo
    cambiar AL, \u0026 lt; 0.1 \u0026 gt;
    caso 1 {; dibujar
    getcolor, \u0026 lt; old_color \u0026 gt;
    setcolor \u0026 lt; LblAttr \u0026 gt;
    recuento \u0026 lt; @ rec_A \u0026 gt ;, \u0026 lt; ii \u0026 gt;
    sayxy \u0026 lt; 35, 2, @ ii, @ f_w4 \u0026 gt;
    recreacno \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
    mientras que \u0026 lt; retr_cho e TRUE \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    cambiar AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    caso 1 {
    mov AH, cs: key_AH
    cambiar AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    caso 1; insertar
    Insertar \u0026 lt; DI \u0026 gt;
    caso 2; eliminar
    Eliminando \u0026 lt; DI \u0026 gt;
    caso 3; ordenar
    Clasificación, \u0026 lt; DI \u0026 gt;
    caso 4; encontrar
    caso 5; fecha
    Citas, \u0026 lt; DI \u0026 gt;
    caso 6; menú
    menupull
    mov DI, 3
    endcase
    caso 2 {; marcar
    caso 3; entrada
    Ingresando \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
    caso 4; salir
    mov hecho, FALSO
    mov DI, 0
    endcase
    endwh}
    endcase
    endf \u0026 lt; word DI \u0026 gt;

    label1 db PARROQUIA, 0
    label2 db 'FLOW', 0
    title1 db 'Nombre Cantidad ', 0

    ukeys1 db 1Eh, 0
    ukeys2 db 1Fh, 0
    skeys1 db 'ENTER', 0
    nkeys1 db 'ENTER', 0
    skeys2 db 'INS', 0
    nkeys2 db 'NUEVO', 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 'MENÚ', 0
    skeys9 db 'ESC', 0
    nkeys9 db 'EXIT', 0

    ; --- Procedimiento de cabeza
    func main
    ; Apilar
    cli
    mov SP, size_com + len_stack
    sti
    ; Abro el sistema
    farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
    initcon
    lanzamiento \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
    initsys
    initmouse
    cursor_off
    ; Dibuja el marco principal
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    cuadro de dibujo \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
    caja de dibujo \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;
    di \u0026 lt; @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ; Línea de menú
    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;
    ; Abriendo el archivo
    volver a abrir \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;
    ; Trabajando con el archivo
    color \u0026 lt; MainAttr \u0026 gt;
    mov hecho, TRUE
    mientras que \u0026 lt; done e TRUE \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ; Cerrar el archivo
    freemem \u0026 lt; * buf_A \u0026 gt;
    recierre \u0026 lt; @ rec_A \u0026 gt;
    ; Cierro el otro
    mkeys_of
    ; Cierro el sistema
    mouse_off
    cursor_on
    ; Salir del programa
    clrscr
    detener \u0026 lt; 0 \u0026 gt;
    endf
    FIN INICIO

    1