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 
              
              

Hola Mundo



.model small
.stack
.data
   saludo   db "Hola mundo, soy vale vargas!!!", "$"

.code

main  proc              ;Inicia proceso
   mov   ax,seg saludo    
   mov   ds,ax         

   mov   ah,09          
   lea   dx,saludo         
   int   21h               

;mensaje en pantalla

   mov   ax,4c00h       
   int   21h            

main  endp              
end main

int10h





;CAMBIAR EL COLOR DE LA PANTALLA
;PILA SEGMENT STACK "STACK"
; DB 100 DUP("0)
;PILA ENDS

DATOS SEGMENT
    MENSAJE DB 10,13,"SE HA CAMBIADO EL COLOR DE LA PANTALLA$",10,13,"$"
    
DATOS ENDS


CODIGO SEGMENT
    
       ASSUME CS:CODIGO,DS:DATA
    
       INICIO:
              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
           
              ;despliege del mensaje
              mov ax,DATOS
              mov dx,ax
              lea dx,MENSAJE
              mov ah,9h
              int 21h
           
              ;cierre del programa
              mov ax,4c00h
              int 21h

CODIGO ENDS 
END INICIO


registro SF


; registro bandera SF, toma el valor de 1 cuando el resultado es negativo
ORG 100h

mov al,2
mov bl,3
sub al,bl 
ret

Registro OF



org 100h

mov al,100
mov bl,50
add al,bl
ret

Uso de constantes



.MODEL SMALL

.STACK 100H

;DECLARACION DE CONSTANTES
CR1 EQU 13
LF1 EQU 10
IMPRIMIR EQU 9H ;ORDEN DE EL 9PARA MOSTRAR EN PANTALLA
FIN EQU 4C00H
DOS EQU 21H

.DATA   ;ES OPCIONAL LA PALABRA RESERVADA SEGMENT
TEXTO DB LF1,LF1,CR1, "EJEMPLO DE USO DE CONSTANTES$"




.CODE 

Inicio: ;Punto de entrada al programa

MOV ax,@DATA
MOV ds,ax

mov dx,OFFSET TEXTO
MOV AH,IMPRIMIR ;IMPRIMIR EN PANTALLA
INT DOS
MOV AX,FIN
INT DOS
END Inicio
END

Suma



;programa del video del blog
.model small
.stack 64
.data

n1 db 0
n2 db 0
suma db 0
msg1 db "dame el primer valor,$"
msg2 db 10,13, "dame el segundo valor,$"
msg3 db 10,13, "suma:,$"
.code
inicio:
    ;Direccionamos al segmento de datos
    mov ax,@data
    mov ds,ax
    
    ;solicitamos el primer digito
    mov ah,09
    lea dx,msg1
    int 21h
    ;se lee el primer valor
    mov ah,01
    int 21h
    sub al,30h ;convertir el caracter a numero
    mov n1,al
    
    ;solicitamos el segundo digito
    mov ah,09
    lea dx, msg2
    int 21h
    ;se lee el primer valor
    mov ah,01
    int 21h
    sub al,30h ;convertir el caracter a numero
    mov n2,al
    
    ;operacion
    mov al,n1
    add al,n2
    add al,30h ;convierte a caracter
    mov suma,al
    mov ah,09
    lea dx,msg3
    int 21h
    
    ;se imprime el caracter con el servicio 02 de la int 21h
    mov ah,02
    mov dl, suma
    int 21h
    mov ah,4ch
 end inicio
 end
     

Mensaje en pantalla



.MODEL SMALL
.CODE 
Programa:
mov ax,@DATA
mov ds,ax
mov dx, OFFSET Texto
mov ah, 9
int 21h
mov ax,4c00h
int 21h
.DATA
Texto DB "Mensaje en pantalla.$"
.STACK
END Programa

Alfabeto



org 100h

mov dl, "A";se transfiere la letra A al registro de datos en el byte bajo

mov cx, 10; se transfiere   al registro contador
PRINT_loop: ;va a imprimir hasta acabar las   interaccionnes
mov AH,02;se tranfiere 02 al acumulador de byte alto
int 21h; dato ascii leido desde el teclado
inc dl; siguiente caracter del alfabeto
loop print_loop; continua

;mov dl,"a"
;mov cx,26
;print_loop2:
; mov ah, 02
;int 21h
;inc dl
;loop print_loop2
ret

lunes, 12 de febrero de 2018

Multiplicacion

Multiplicación
ORG 100

call inicializar
call multdlal
hlt; terminar proceso

inicializar:
mov dl, 5
mov al, 10
ret

multdlal:
mul dl
ret

Division

División
org 100h

call inicializar
call divaxbx
hlt; terminar proceso

inicializar:
mov ax,203
mov bl,4
ret

divaxbx:
div bl
ret

jueves, 8 de febrero de 2018

Resta

Resta

org 100

call inicializar
call restaraxbx
hlt;ordenar para terminar programa

inicializar:
mov ax, 10H
mov bx,12H
ret

restaraxbx:
sub ax,bx
ret

resta sin procedimiento
org 100
mov ax, 10H
mov bx,12H
sub ax,bx
ret

Suma

Suma


ORG 100

call inicializar
call sumaraxbx
hlt;terminar proceso

inicializar:
mov ax, 8H
mov bx, 9H
ret

sumaraxbx:
add ax,bx
ret

SumaSencilla

ORG 100


mov ax, 8H
mov bx, 9H
add ax,bx
ret

sábado, 3 de febrero de 2018

Registros de bandera(video y programa)

Es un registro de 16 bits , de los cuales nueve sirven para indicar el estado actual de la maquina y el resultado del procesamiento

CF: se activa cuando en una operacion aritmetica se produce un acarreo
PF: indica si el resultado es valido
AF: numeros decimales en binario, se activa si hay acarreo presente
ZF: se activa si el resultado es cero
SF: la bandera de signo
DF: se utiliza para el manejo de cadena de caracteres
OF: cuando un numero sobrepasa


Programa











Macro Potencia de un numero

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