sábado, 14 de abril de 2018

lOOPZ



; uso del LOOPZ, REPETICION BASADA EN
;COMPARACION SI ES IGUAL A 0

; INTERRUPCION PARA LEER DEL TECLADO ES LA INT16H

; CUANDO USAMOS LA INT16H , EL PARAMETROA USAR ES AH = 0
; Y EL CARACTER LEIDO QUEDARA EN AL= CARACTER LEIDO


.model small
.stack 64

.data         
;mensaje1 db "instrucciones de repeticion

.code 


inicio:

   
    mov al,'>' ; caracter inicial
    mov cx,10 ;numero de veces a repetir el ciclo
leer_car:
   
     mov ah,0EH ;FUNCION PARA IMPRIMIR EL CARACTER AL
     int 10h    ;llama al BIOS
   
     mov ah,08     ;pausa y espera a que el usuario precione una tecla
     int 21h ;interrupcion para capturar

     
     cmp al,'S'; el caracter leeido la int 16h lo guarda en al
   
loopz leer_car ;toma en cuenta la comparacion del cmp si se cumple continua

 
    ; coloco el fin de la linea para que baje una linea y lo baje
    mov ah,0EH ; FUNCION DEL BIOS PARA IMPRIMIR CARACTER
    mov al,10
    int 10h
 
    MOV AL,13
    INT 10H
 
 
 
  mov ah,04ch ;Al terminar finaliza el programa.
  int 21h
 end inicio

mensaje con loop



.model small
.stack 64

.data
mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
repetir db 13,10,"Repitiendo el ciclo $"

.code
inicio proc far
   
    mov ax, @data
    mov ds, ax
   
    mov ah, 09
    lea dx, mensaje
    int 21h

    mov ah, 01
    int 21h
    sub al, 30h
   
    mov cl, al
   
    ciclo:
        mov ah, 09
        lea dx, repetir
        int 21h
    loop ciclo

    mov ax,4c00h
    int 21h
inicio endp
end

colores


BIOS EQU 10H
DOS EQU 21H
FIN EQU 4C00H

.DATA
    TITULO DB 'Princess Moon '
    COLORES DB 5BH
    DB 5FH
    DB 5BH
    DB 5FH
    DB 5BH
    DB 5BH
    DB 0F0H
    DB 00H
    DB 09CH
    DB 09FH
    DB 09CH
    DB 09FH
    DB 09CH
    DB 00H
    ;DB 0CH
   
.CODE
    INICIO PROC NEAR:
    MOV AX, @DATA
    MOV DS, AX
    ;Esta parte de aqui no es necesaria
    INT BIOS
   
    MOV CX, 15
       
        BUCLE:
            ;Ponemos esto para no agarrar basura
            MOV DX,SI
            ADD DX,35 ;columna
            MOV DH, 12 ;renglon
            CALL COLOCA
            MOV AL, [SI+OFFSET TITULO]
            MOV BL, [SI+OFFSET COLORES]
            CALL COLOR
            INC SI
        LOOPNZ BUCLE
       
        MOV AH, 0
        INT DOS
        CALL COLOCA
        MOV AX, FIN
        INT DOS
   
    COLOR PROC
    MOV AH, 9
    INT BIOS
    RET
        
    COLOCA PROC
    MOV AH,2
    INT BIOS
    RET

END INICIO

domingo, 25 de febrero de 2018

tres mensajes con fondo de color



CR EQU 13
LF EQU 0Ah
IMPRIMIR EQU 9
FIN EQU 4C00H
DOS EQU 21H

DATOS SEGMENT
    MENSAJE DB CR,LF,'SARAHI CRUZ MEDINA', CR, LF, '$'
    

    MENSAJE2 DB CR,LF,'LUZ EDITH PEREZ SOTO', CR, LF, '$'
    

    MENSAJE3 DB CR,LF,'VALERIA ESMERALDA VARGAS REQUENA', CR, LF, '$'
DATOS ENDS
    
PILA SEGMENT STACK 
    DB 64 DUP ("PILA")
PILA ENDS 

CODIGO SEGMENT 
    HM PROC FAR
    ASSUME CS: CODIGO, DS:DATOS, SS:PILA
              MOV ah,06H ;MANEJA SCROLL
              mov bh,2fh ;2 color verde fondo y f letras blanco, ver liga de colores BIOS
              mov cx,0000h;ESQUINA SUPERIOR IZQ
              mov dx,999fh;esquina inf derecha
              int 10h ;modo de video,cosas de pantalla
              mov ah,02h ;posicionar el cursor
              mov bh,00h ;pone el modo de vi
              mov dx,0000h
              int 10h
   
    ;EMPIEZA LOS LETREROS
    MOV AX,DATOS
    MOV DS,AX  
    
    LEA DX,MENSAJE
    MOV AH,9
    INT 21H
    
    lea dx,MENSAJE2
    MOV AH,9
    INT 21H
    
    LEA DX,MENSAJE3
    MOV AH,9
    INT 21H
    
    MOV AX,4C00H
    INT 21H
    
   
   
    
    HM ENDP
CODIGO ENDS 
END HM






limpia pantalla


FIN EQU 4C00H
DOS EQU 21H
MONITOR EQU 10H

PILA SEGMENT STACK 
    DW 100 DUP("0")
PILA ENDS



codigo segment
    CLS PROC FAR
        ASSUME CS:CODIGO, SS:PILA
        CALL LIMPIA_PANTALLA
        MOV AX,FIN ;SE USA PARA FINALIZAR UN PROGRAMA
        INT DOS ;SE DEBE INCLUOR LA INT 21H
    CLS ENDP
    
    
    LIMPIA_PANTALLA PROC NEAR
        MOV AX,0600H ;ah 06(es un recorrido),al 00(pantalla completa)
        MOV BH,30H ;FONDO BLANCO(7),SOBRE AZUL(1)
        MOV CX,000H;ES LA ESQUINA SUPERIOR IZQUIERDA REGLON:COLUMNA
        MOV DX,484FH;ES LA ESQUINA SUPERIOR DERECHA RENGLON:COLUMNA
        INT 10H
        RET
    LIMPIA_PANTALLA ENDP
   
   
codigo ENDS
END CLS


holamundo(turboassambler)


CR EQU 13
LF EQU 0Ah

DATOS SEGMENT
    MENSAJE DB CR,LF,'Hola mundo este programa fue compilado por Vale Vargas',CR,LF,'$'
DATOS ENDS

PILA SEGMENT STACK
    DB 64 DUP("PILA")
PILA ENDS

CODIGO SEGMENT
    HM PROC FAR
    ASSUME CS: CODIGO,DS:DATOS,SS:PILA
    
    MOV AX,DATOS
    MOV DS,AX
    LEA DX,MENSAJE
    
    MOV AH,9
    INT 21H
    
    MOV AX,4C00H
    INT 21H
    
    HM ENDP
    
CODIGO ENDS
END HM

cambiar color de pantalla








pila segment stack "stack" ;segmento de pila
    db 100h dup (?) ;a partir de la direccion de 100 de la pila
pila ends

datos segment
    titulo db 13,10," cambiar fondo de pantalla ",13,10 ,"$"
    mensaje db "presione ENTER si quiere que la pantalla azul.Siquiere morado presione 2",13,10,"para salir presione cualquier tecla",13,10,"$"  
    
datos ends

codigo segment ;segmento de codigo
    assume cs:codigo, ss:pila, ds:datos
    
    inicio:
           ;...........................................preparar pantalla
           mov ah,0
               mov al,3h ;modo texto
               int 10h ;interrupcion de video  
               
               mov ax,0600h ;limpiar pantalla
               mov bh,0fh ;0 color de fondo negro, f color de letra blanco
               mov cx,0000h
               mov dx,784fh
               int 10h
               
               mov ah,02h         
               mov bh,00         
               mov dh,00         
               mov dl,00
               int 10h
               
             ;..............................................mostrar mensajes
           mov ax,datos
           mov ds,ax
               
           lea dx,titulo
           mov ah,9h
           int 21h
               
           lea dx,mensaje
           mov ah,9h
           int 21h
              ;.........................................captura de teclas
                mov ah,08 ;pausa y captura de datos 05 espera que el usuario presione una tecla
                int 21h
                
                cmp al,13 ;verifica si presiono Enter,el cual tiene un codigo ascii
                je llamarAzul ;salto condicional jump equals opcion 1 saltar si es igual ala opcion 1
                
                cmp al,50 ;ascii 50= numero 2 compara lo que tiene el registro ah con el ascii 50 en el reg ah
                je llamarMorado
                
                jmp fin  ;si no escoge ni enter ni 2, sale del programa
                
         fin:  ;saca el mensaje por pantalla
         
              mov ax,4c00h
              int 21h
llamarAzul:
    CALL AZULPROC
llamarMorado:
    CALL MORADOPROC
;........................................................................
AZULPROC PROC NEAR
    
mov ah,0
              mov al,3h ;modo texto
              int 10h  ;interrupcion de video
              
              mov ax,0600h ;limpiar pantalla
              mov bh,0fh ;0 color de fondo negro, f color de letra blanco
              mov cx,0000h
              mov dx,184fh
              int 10h
              
              mov ah,02h
              mov bh,00
              mov dh,00
              mov dl,00
              int 10h
              
;;;;;;//////////////
              mov ah,06h    
              mov bh,1fh       
              mov cx,0000h 
              mov dx,184fh    
              int 10h   

   
   
   
              mov ax,4c00h
              int 21h
              
RET

AZULPROC ENDP

;----------------------------------
MORADOPROC PROC NEAR
           mov ah,06h    
           mov bh,5fh       
           mov cx,0000h    
           mov dx,184fh    
           int 10h   
           
           mov ax,4c00h    
           int 21h 
RET 

MORADOPROC ENDP

codigo ends
end inicio 
              
              

Macro Potencia de un numero

name "potencia" include "emu8086.inc" include "macroos.txt" .model small data segment     base  dw ? ...