martes, 26 de febrero de 2019

Practica 14 del tutorial

CODIGO
include emu8086.inc

ORG    100h

PRINT 'Hello World!'

GOTOXY 10, 5

PUTC 65           ; 65 - is an ASCII code for 'A'
PUTC 'B'

RET               ; return to operating system.

EJECUCION


CODIGO

; demonstrate get_string and print_string
;----------------------------------------
include 'emu8086.inc'
ORG    100h

LEA    SI, msg1       ; set up pointer (SI) to msg
                      ; to ask for the number
CALL   print_string   ; print message that SI points to

LEA    DI, buffer     ; set up pointer (DI) to input buffer
MOV    DX, bufSize    ; set size of buffer
CALL   get_string     ; get name & put in buffer

LEA    SI, newln      ; point at CR/LF / Hello message 
CALL   print_string   ; print message that SI points to

RET                   ; return to operating system.

; data
msg1   DB "Enter your name: ", 0  
newln  DB 13, 10
       DB "Hello, "
buffer DB 20 DUP (0)  ; input buffer for get_string   
bufSize = $-buffer    ; calculates size of buffer

DEFINE_GET_STRING
DEFINE_PRINT_STRING
END                   ; directive to stop the compiler.
 
EJECUCION
 
 
 
 
 
 
CODIGO
; demonstrate scan_num, print_num, pthis
;----------------------------------------
include 'emu8086.inc'
ORG    100h

LEA    SI, msg1       ; ask for the number
CALL   print_string   ;
CALL   scan_num       ; get number in CX.

MOV    AX, CX         ; copy the number to AX.

; print the following string:
CALL   pthis
DB  13, 10, 'You have entered: ', 0

CALL   print_num      ; print number in AX.

RET                   ; return to operating system.

; data
msg1   DB  'Enter the number: ', 0

; macros to define procs
DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS  ; required for print_num.
DEFINE_PTHIS

END                   ; directive to stop the compiler.
 
EJECUCION 
 

miércoles, 20 de febrero de 2019

Practica 12 suma de dos numeros

CODIGO

name 'suma de dos numeros'
include 'emu8086.inc'
org 100h  

.data
suma db 2 dup (?)

.code
Sumas proc
    printn " "
    print "Introduce el primer numero ==> "
    call scan_num
    mov suma[0],cl
    printn " "
    print "Introduce el segundo numero ==> "
    call scan_num
    mov suma[1],cl
    printn " "
    xor ax,ax
    add al,suma[0]
    add al,suma[1]
    printn " "
    print "La suma es: "
    call print_num
Sumas endp

exit:
    printn " "
    printn " "
    print "Presiona enter para salir... "
    mov ah,0
    int 16h
    ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
end

Video de apoyo: https://www.youtube.com/watch?v=EftgPsQXTXs&t=276s

EJECUCION

martes, 19 de febrero de 2019

Practica 11 mayor o menor de edad

CODIGO

org 100h

.model small
.stack 64 ; segmento de pila

.data
diez db 10;variable
num1 db 0;variable para la edad
mens db 'ingrese la edad: $'
mens1 db 13, 10, 'Eres mayor de edad $'
mens2 db 13, 10, 'Eres menor de edad $'

.code
  inicio proc Far
    mov ax,@data ;direccionamiento
    mov ds,ax ;los datos de mue
    ;poner el primer letrero
    mov ah,09
    lea dx,mens
    int 21h
   
    mov ah,01
    int 21h               
    sub al,30h ;convertir a valor
    mul diez;se mult
    mov num1,al
  
    mov ah,01
    int 21h
    sub al,30h
    add num1,al ;se suma a las decenas
    mov al,num1
   
    cmp al,18
    jge mayor ;en caso de que sea mayor
    jmp menor
   
    mayor:
      mov ah,09
      lea dx,mens1
      int 21h
      jmp fin
     
    menor:
      mov ah,09
      lea dx,mens2
      int 21h
      jmp fin                         
   
   
  fin:
     mov ax,4c00h
    
    
  inicio endp
ret

EJECUCION


martes, 12 de febrero de 2019

Practica 9 emmu8086 CALIFICACION (12-02-19)

CODIGO


.model small

.stack 64

.data
   msg1 db 'Dame una calificacion (seguido de un enter)$'
   aprobado db 13,10, 'aprobado$'
   reprobado db 13,10, 'reprobado$'
   VAR1 dw ?,'$' ; de tipo write
   VAR2 dw ?,'$'
   VAR3 dw ?,'$'
  
.code ;inicia la seccion de codigo

RESULTADO PROC FAR
    MOV AX,@DATA ;PARA INICIAR
    MOV DS,AX

;----------------desplegar el primer mensaje    
    MOV AH,09H
    LEA DX,msg1
    int 21h  

;-------INTRODUCIR UN CARACTER
    MOV AH,01
    INT 21H
    MOV VAR1,AX   

;-------INTRODUCIR UN CARACTER
    MOV AH,01
    INT 21H 
    MOV VAR2,AX

;-------INTRODUCIR UN CARACTER  PARA ENTER
    MOV AH,01
    INT 21H 
    MOV VAR3,AX
                                
;USO DE IF Y COMPARAR
    CMP AL,13 ;pregunta si en AL hay un 13
    je continue
    jmp mayor
   
continue:
    mov AX,VAR1
    CMP AL,037H ;37H es 7 en hexadecimal y 55 es 7 en ASCII
    JGE mayor
    JMP menor
   
mayor:
    MOV AH,09H
    LEA DX,aprobado
    int 21h
    jmp fin                                 

menor:
    MOV AH,09H
    LEA DX,reprobado
    int 21h
    jmp fin                                 

fin:
    MOV AX,4C00H
    INT 21H                                
                                
   
RESULTADO ENDP ; FIN DEL PROCEDIMIENTO     
END RESULTADO


EJECUCION


lunes, 11 de febrero de 2019

Practica 8 emmu8086 RESTA(11-02-19)

CODIGO

.model small
.stack 64
.data

  n1 db 0
  n2 db 0
  RESTA db 0
  msg1 db "Dame el valor:",'$'
  msg2 db 10,13,"Dame el segundo valor:",'$'
  msg3 db 10,13,"RESTA=",'$'
.code
  Begin proc far
    ;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 ;convierte el caracter en un 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
    sub al,n2
    add al,30h;convierte en 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
    mov dl,resta
    int 21h
    mov ah,4ch
    int 21h
    Begin endp
  end
  
  
    mov ah,09
    lea

EJECUCION

Practica 7 emmu8086 SUMA (11-02-19)

CODIGO

.model small
.stack 64
.data

  n1 db 0
  n2 db 0
  suma db 0
  msg1 db "Dame el valor:",'$'
  msg2 db 10,13,"Dame el segundo valor:",'$'
  msg3 db 10,13,"suma=",'$'
.code
  Begin proc far
    ;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 ;convierte el caracter en un 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
    add al,n2
    add al,30h;convierte en 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
    int 21h
    Begin endp
  end
 
 
    mov ah,09
    lea

EJECUCION

miércoles, 6 de febrero de 2019

Practica 6 emmu8086 (06-02-19)

CODIGO

.model
.stack 64

.data                                         
mensaje db "ingresa el numero de veces que se repetira el mensaje (1-9) $"
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
    int 21h
inicio endp
end


EJECUCION