sábado, 19 de mayo de 2018

MACRO DE ABIGAIL CANTÚ

       
include 'macros.txt'
data segment
var dw 6
ends

main proc
mov bx,1
mov ax,1
m_suma bx
m_final

end main

       

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

       

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...