Sistem macro Asamblor
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