5. ¿Qué es?
El Emulador EMU8086 es el primer programa que se utiliza en el curso de
Microprocesadores. se ha elegido este emulador porque posee una interfaz de usuario
6. muy amistosa que permite familiarizarse con los fundamentos de la programación en
lenguaje ensamblador de forma muy intuitiva, aparte de eso brinda una serie de
recursos para ejecutar y depurar los programas. También tiene algunas desventajas
como el de no soportar algunas de las interrupciones más interesantes que posee el
sistema operativo y tampoco puede acceder a los puertos físicos (reales), sino que los
emula usando otros programas que ya están incluidos en su respectiva carpeta.
Ejecutar el programa hola mundo, y debe cambiar los mensajes de pantalla al
español.
Hola mundo en español
7. Código:
Compilar un programa en EMU8086 que indique lo siguiente: Nombre completo
del estudiante, Universidad, Fecha y materia.
Código:
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
8. mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
int 20h
mensaje_a_mostrar db "Nombre: Luis Fernando Molina Onate//Universidad: PUCE-
SI, Fecha: 26/04/2019,Materia: COMPILADORES$",0
CODE ENDS
end principio
Compilar un programa que permita comparar 2 números del 0 al 9.
Código:
.stack
.data
var1 db ?
var2 db ?
msg1 db ' El primer numero es mayor $'
msg2 db ' El primer numero es menor $'
msg3 db ' Los dos son iguales $'
9. msg4 db ' Ingrese el Primer numero $'
msg5 db ' Ingrese el Segundo numero $'
.code
.startup
mov ah,00h
mov al,03h
int 10h
mov ah,02h
mov dx,0510h
mov bh,0
int 10h
mov ah,09h
lea dx,msg4
int 21h
mov ah,07h
int 21h
mov ah, 02h
mov dl,al
int 21h
mov var1,al
mov ah,09h
lea dx,msg5
int 21h
mov ah,07h
int 21h
mov ah,02h
mov dl,al
int 21h
mov var2,al
cmp var1,al
ja mayor
jb menor
10. je igual
mayor:
mov ah,09h
lea dx,msg1
int 21h
jmp salir
menor:
mov ah,09h
lea dx,msg2
int 21h
jmp salir
igual:
mov ah,09h
lea dx,msg3
int 21h
jmp salir
salir:
.exit
End
Compilar un programa que permita sumar 10 valores asignados a un vector.
Código:
org 100h
mov cx, 10
11. mov al, 0
mov bx, 0
next: add al, vector[bx]
inc bx
loop next
mov m, al
mov bl, m
mov cx, 8
print: mov ah, 2
mov dl, '0'
test bl, 10000000b
jz zero
mov dl, '1'
zero: int 21h
shl bl, 1
loop print
mov dl, 'b'
int 21h
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
mov al, m
call print_al
mov ah, 0
int 16h
ret
vector db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
m db 0
print_al proc
cmp al, 0
jne print_al_r
12. push ax
mov al, '0'
mov ah, 0eh
int 10h
pop ax
ret
print_al_r:
pusha
mov ah, 0
cmp ax, 0
je pn_done
mov dl, 10
div dl
call print_al_r
mov al, ah
add al, 30h
mov ah, 0eh
int 10h
jmp pn_done
pn_done:
popa
ret
end
13. Compilar un programa sugerido por usted, como propuesta adicional.
Números factoriales:
Código:
.stack 64h
.DATA
.code
MOV AX,@DATA
mov ds,ax
14. call capt
mov al,05
mov bl,al
FACT:
CMP BL,01
JBE FIN
DEC BL
MUL BX
LOOP FACT
FIN:
MOV CL,00
aam
CMP AL,0Ah
JB DIG2
daa
DIG2:
MOV BL,AL
MOV AL,AH
CMP AL,0Ah
JB dig
daa
MOV CL,31h
dig:
MOV BH,AL
AND BX,0F0Fh
OR BX,3030h
call resultado
mov ah,01
int 21h
mov ah,4Ch
15. int 21h
RESULTADO:
MOV AH,02h
MOV DL,3Dh
INT 21h
MOV DL,CL
INT 21h
MOV DL,BH
INT 21h
MOV DL,BL
INT 21h
RET
CAPT:
MOV AH,01h
INT 21h
MOV BH,AL
INT 21h
MOV AH,BH
SUB AX,3030h
RET
END