lunes, 18 de febrero de 2019

Unidad No.1-Programa que resta dos numeros de un digito

Ejecución del programa:






Código:

org 100h

.model small
.stack 64
.data
 n1 db 0
 n2 db 0
 resta db 0
 msg1 db "Ingrese el primer valor:", '$'
 msg2 db 10,13, "Ingrese el segundo valor:", '$'
 msg3 db 10,13, "Resta=", '$'
 .code

 begin proc far
    ;direccionamos al segmentos 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; convierte el caracter en numero
    mov n1,al        
    
    ;solicitamos el segundo digito
    mov ah,09
    lea dx,msg2
    int 21h
    mov ah,01
    int 21h
    sub al,30h;convierte el caracter en numero
    mov n2,al
    
    ;operacion
    mov al,n1 ;lo que esta en n1 lo asigna a al
    sub al,n2 
    add al,30h;convierte a caracter
    mov resta,al
    mov ah,09
    lea dx,msg3
    int 21h
    
    ;se imprime el caracter con el servicio 02 de la int 21h
    mov ah,02  ;valor que se usa para poner algo en pantalla
    mov dl,resta 
    int 21h
    mov ah,4ch
    begin endp   

 end
    
    
ret

Unidad No.1-Programa que hace una suma de dos numero de un digito(Ej:video)


Ejecución del programa:







Código:


org 100h

.model small
.stack 64
.data
 n1 db 0
 n2 db 0
 suma db 0
 msg1 db "Ingrese el primer valor:", '$'
 msg2 db 10,13, "Ingrese el segundo valor:", '$'
 msg3 db 10,13, "Suma=", '$'
 .code

 begin proc far
    ;direccionamos al segmentos 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; convierte el caracter en numero
    mov n1,al        
    
    ;solicitamos el segundo digito
    mov ah,09
    lea dx,msg2
    int 21h
    mov ah,01
    int 21h
    sub al,30h;convierte el caracter en numero
    mov n2,al
    
    ;operacion
    mov al,n1 ;lo que esta en n1 lo asigna a al
    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  ;valor que se usa para poner algo en pantalla
    mov dl,suma 
    int 21h
    mov ah,4ch
    begin endp   

 end
    
    
ret

Unidad No.-1 Programa que muestra mensajes dependiendo las veces que quiera el usuario


Ejecución del programa:







Código:

org 100h

;EMU8086

.model small
.stack 64

.data       

;codigo ascii 

mensaje db "Ingrese 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   
   
   ;convertir a valor lo que se tecleo
   sub al, 30h
   
   mov cl, al
   
   ciclo:
       mov ah, 09
       lea dx, repetir  
       int 21h
       
   loop ciclo
    
   mov ax, 4c00h ;cierra el programa
   int 21h        ;cierra el programa
inicio endp      

ret

Unidad No.1-Registros en el lenguaje ensamblador

Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits). Los registros de la CPU son conocidos por sus nombres propios, que son:
·· AX (acumulador)
·· BX (registro base)
·· CX (registro contador)
·· DX (registro de datos)
·· DS (registro del segmento de datos)
·· ES (registro del segmento extra)
·· SS (registro del segmento de pila)
·· CS (registro del segmento de código)
·· BP (registro de apuntadores base)
·· SI (registro índice fuente)
·· DI (registro índice destino)
·· SP (registro del apuntador de pila)
·· IP (registro del apuntador de siguiente instrucción)
·· F (registro de banderas)
El registro AX se usa para almacenar resultados, lectura o escritura desde o
hacia los puertos. 
El BX sirve como apuntador base o índice.
 El CX se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa o decrementa de acuerdo con el tipo de instrucción usada. 
El DX se usa como puente para el acceso de datos.
El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.com, ya que en éstos sólo puede existir un segmento. 
El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del DS.
El SS tiene la tarea exclusiva de manejar la posición de memoria donde se encuentra la pila (stack) Esta es una estructura usada para almacenar datos en forma temporal, tanto de un programa como de las operaciones internas de la computadora personal (PC, por sus siglas en inglés) En términos de operación interna, la CPU usa este segmento para almacenar las direcciones de retorno de las llamadas a rutinas. 
El registro de segmentos más importante es el CS o segmento de código. Es aquí donde se encuentra el código ejecutable de cada programa, el cual está directamente ligado a los diferentes modelos de memoria.
El registro BP (base pointer) se usa para manipular la pila sin afectar al registro de segmentos SS.
 Es útil cuando se usa interfaz entre lenguajes de alto nivel y el ensamblador. Puesto que dicha interfaz se basa en el concepto de la pila BP, nos permite acceder parámetros pasados sin alterar el registro de segmento SS.
 Los registros SI y DI son útiles para manejar bloques de cadenas en memoria, siendo el primero el índice fuente y el segundo el índice destino. En otras palabras, SI representa la dirección donde se encuentra la cadena y DI la dirección donde será copiada.
El registro SP apunta a un área específica de memoria que sirve para almacenar datos bajo la estructura LIFO (último en entrar, primero en salir), conocida como pila(stack) El registro IP (instruction pointer) apunta a la siguiente instrucción que será ejecutada en memoria.

Unidad No.1-Suma y resta de numeros (Version Dos)

Ejecución del programa:









Código:


org 100h

mov ax, 80 ;ax=80

mov bx, 450 ;bx=450
inc bx ;bx++ bx=451
add ax, 80 ;ax=ax+80=160
mov cx, 200 ;cx-200
sub cx,ax ;cx=cx-ax 200-160=40


ret

Unidad No.1-Suma y resta de numeros

Ejecución del programa:









Código:

org 100h

;suma numero de un solo digito

mov ax, 8h ;a donde se va a mover un registro
mov bx, 4h
add ax,bx      ;hace suma
mov bx,5
sub ax,bx     ;hace resta
mov bx,3
inc bx

mov ax,6

hlt

Unidad No.1-Movimiento de registros e incrementos(programa)

Ejecución del programa:









Código:

org 100h

mov ax, 8h
mov bx, 4h
mov ax, bx
mov bx,5
mov ax,bx
mov bx,3
inc bx

mov ax,6

hlt

Unidad No.3: Mejora programa # 9: Letras de colores(Versión Ingrid Sauceda)

Ejecución del programa: Código: include 'emu8086.inc' Mostrar Macro Mensaje     LEA DX,Mensaje ;mandamos el mensaje a leer     MO...