include 'macros.txt'
data segment
var dw 6
ends
main proc
mov bx,1
mov ax,1
m_suma bx
m_final
end main
sábado, 19 de mayo de 2018
MACRO DE ABIGAIL CANTÚ
MACRO DE EMMANUEL
MyMacro MACRO p1, p2, p3
MOV AX, p1
MOV BX, p2
MOV CX, p3
ENDM
ORG 100h
include 'MyMacro1.txt'
include 'MyMacro2.txt'
ret
MACRO DE URIEL VEGA
imprime macro numero ;Nuestra macro se llama imprimir, nuestro parámetro es numero
mov ah,02h
mov dl,numero ;Indica que mueva al registro DL lo que pasamos como parámetro.
add dl,30h ;suma 30h para imprimir el número real.
int 21h
endm
.model small
.stack 64
.data
num db 0 ;declaramos nuestra variable.
.code
mov cx,9
inicio:
mov num,cl
imprime num ;Llamamos al macro con el valor de nuestra variable.
loop inicio ;repite ciclo
mov ah,04ch ;Finaliza el programa.
int 21h
end
MACRO DE BRITO, PEDRO Y ORTA
bucle1 macro tama,x,y
mov CX, tama
BUCLE:
MOV DX, SI
ADD DX, x
MOV DH, y
coloca ;este es el macro para colocar en la posicion la letra
;se guarda letra por letra
MOV AL, [SI+OFFSET TITULO]
;guarda color por color
MOV BL, [SI+OFFSET COLORES]
color ;este es el macro que selecciona un color
INC SI
LOOPNZ BUCLE
endm
color macro ;macro que selecciona el color
MOV AH, 9
INT BIOS
endm
coloca macro;macro que selecciona una posicion
MOV AH, 2
INT BIOS
endm
.STACK 64
.MODEL SMALL
CR EQU 13
LF EQU 10
BIOS EQU 10H
DOS EQU 21H
TEXTO EQU 3
FIN EQU 4C00H
.DATA
;ponemos el texto que querramos mostrar
TITULO DB 'Agnax & Alizz Y pedrito ♥ '
;aqui va la lista de los colores
;del texto
colores DB 50H
DB 5fH
DB 50H
DB 5fH
DB 50H
DB 00H
DB 0f0H
DB 00h
DB 20H
DB 20H
DB 20H
DB 20H
DB 20H
DB 00H
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
.CODE
;esta zona es para poner el texto
COLO PROC FAR
MOV AX, @DATA
MOV DS, AX
;Aquí se pone el macro del bucle
bucle1 25,30,12
MOV AH, 8
INT DOS
coloca ;este es el macro para colocar en la posicion la letra
MOV AX, FIN
INT DOS
COLO ENDP
RET
MACRO DE MARCO ESCOBEDO
restas macro p, s
mov al, p
sub al, s
add al, 30h
mov resta, al
mov ah, 09
lea dx, msj3
int 21h
mov ah, 02
mov dl, resta
int 21h
mov ah, 4ch
int 21h
endm
.model small
.stack 64
.data
n1 db 0
n2 db 0
resta db 0
msj db "Dame el primer valor: $"
msj2 db 10,13, "Dame el segundo valor $"
msj3 db 10,13, "resta = $"
.code
mov ax, @data
mov ds, ax
mov ah, 09
lea dx, msj
int 21h
mov ah, 01
int 21h
sub al, 30h
mov n1, al
mov ah, 09
lea dx, msj2
int 21h
mov ah, 01
int 21h
sub al, 30h
mov n2, al
restas n1, n2
ret
PROGRAMA MACRO DE RICARDO CASTILLO
name "Tutorial_Macros_En_EMU8086" ;NOMBRE DEL PROGRAMA
.model small ;MODELO DEL PROGRAMA
include 'emu8086.inc ' ;SE INCLUYE LA LIBRERIA EMU 8086
include 'macroschava.txt' ;SE MANDA A LLAMAR LA MACROS QUE ES EXTERNA
;SE DEFINE EL STACK
.stack 100h
;SE DEFINE EL SEGMENTO DE DATOS
.data ;SE DECLARAN DOS VECTORES DE 8 POSICIONES Y SE INICIAN EN 0
vector1 dw 8 dup(0)
vector2 dw 8 dup(0) ;SE DEFINEN LOS TAMANYOS DE LOS VECTORES
tama dw 1 dup(16)
tama2 dw 1 dup(16)
.code
;==================INICIO=====================================================
lea si,vector1 ; movemos el registro de la primera posicion del vector1 a si
mov ax,@data ; Colocamos la direccion de segmento de datos
mov ds,ax
printn " "
printn " Valores del Primer Vector"
llenado vector1, vector2, tama ;SE MANDA A LLAMAR UNA MACRO Y RECIBE 3 ARGUMENTOS
ordenamiento vector2, tama ;SE MANDA A LLAMAR OTRA MACRO
printn " "
print " Vector original: "
mov si, 0
imprimir1:
print " "
mov ax, vector1[si]
call print_num
add si, 2
cmp si, tama2
jb imprimir1
printn " "
print " Vector menor a mayor: "
mov si,0
jmp imprimir2
imprimir2:
print " "
mov ax, vector2[si]
call print_num
add si, 2
cmp si, tama2
jb imprimir2
mov si, 0
jmp pila
pila:
mov ax, vector2[si]
push ax
add si,2
cmp si, 16
jb pila
mov si,0
printn ' '
print ' Vector mayor a menor: '
jmp imprimir3
imprimir3:
print ' '
pop ax
call print_num
add si,2
cmp si,16
jb imprimir3
jmp salir
salir:
printn " "
printn " "
print " Aplasta tecla para terminar... "
mov ah, 0h
int 16h
mov ax, 4c00h
int 21h
DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
DEFINE_PTHIS
END
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ARCHIVO DE TEXTO EXTERNO, ES UN .TXT
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ordenamiento macro vect2, tama ;METODO BURBUJA
inicioreg: ;INICIALIZA EL SOURCE INDEX EN 0
mov si, 0 ;SE INICIALIZAN LOS REGISTROS EN 0
xor ax,ax
xor bx,bx
xor cx,cx
sub tama,2
jmp ciclo1
ciclo1: ;SE COMPARA NUESTRO PRIMER CONTADOR CX SI ES MENOR QUE EL TAMAÑO DEL VECTOR -2
mov si, 0 ;-2 PORQUE CON ESTO LOS CICLOS HACEN EXACTAMENTE LAS MISMAS COMPARACIONES PARA QUE EL VECTOR QUEDE ORDENADO
mov dx, tama
sub dx, cx
cmp cx, tama
jl ciclo2
jmp fin
ciclo2: ;SE COMPARA CON EL TAMAÑO DEL VECTOR -2 Y MENOS CX
cmp si, dx ;UNA VEZ QUE ENTRA EL CICLO 2 YA ESTARÁN ORDENADOS
jl condicion ;TODOS LOS VALORES, SE COMPARA UNO A UNO HASTA QUE
add cx,2 ;MANDE EL MÁS GRANDE AL FINAL
jmp ciclo1 ;
condicion: ;SE COMPARAN LOS VALORES
mov ax, vect2[si]
cmp vect2[si+2], ax
jl ordenamiento
add si, 2
jmp ciclo2
ordenamiento:
mov ax, vect2[si+2]
mov bx, vect2[si]
mov vect2[si+2], bx
mov vect2[si],ax
add si, 2
jmp ciclo2
fin:
endm
llenado macro vec1,vect2, tama ;PIDE CADA UNO DE LOS VALORES DE NUESTROS VECTORES POR TECLADO
llenado1: ;RECIBE 3 ARGUMENTOS
printn " " ;SE IMPRIME SALTO DE LINEA
print " >"
call scan_num ;SE LEE EL NUMERO
mov ax, cx ;SE MUEVE A AX
mov [vector1 + si],ax ;SE MUEVE AL VECTOR
mov [vector2 + si],ax
add si,2
cmp si,tama ;SE COMPARA EL SOURCE INDEX CON EL TAMAÑO
jne llenado1
endm
EJEMPLO DE MACROS
imprime macro numero ;Nuestra macro se llama imprimir, nuestro parámetro es numero
mov ah,02h
mov dl,numero ;Indica que mueva al registro DL lo que pasamos como parámetro.
add dl,30h ;suma 30h para imprimir el número real.
int 21h
endm
lup macro
mov num,cl
imprime num ;Llamamos al macro con el valor de nuestra variable.
loop inicio ;repite ciclo
endm
Fin macro
mov ah,04ch ;Finaliza el programa.
int 21h
endm
.model small
.stack 64
.data
num db 0 ;declaramos nuestra variable.
.code
mov cx,9
inicio:
lup
Fin
end
Suscribirse a:
Entradas (Atom)
EXPOSICIÓN 2: PROGRAMACION DEL PUERTO USB
RESUMEN DE LA EXPOSICIÓN DE PUERTOS USB PUERTO USB BUFFER DE VIDEO EN MODO TEXTO Se llama modo texto a cualquier modo de vi...
-
RESUMEN DE LA EXPOSICIÓN DE PUERTOS USB PUERTO USB BUFFER DE VIDEO EN MODO TEXTO Se llama modo texto a cualquier modo de vi...
-
REGISTROS DE BANDERAS: DEFINICIÓN De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y...
-
PROGRAMA USANDO EL MACROS PAQRA EMU 8086 CODIGO TITLE Cadena que solicita una cadena y una posición pa...