ensamblador

10
PONTIFICIA UIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA ESCUELA DE INGENIERÍA NOMBRE: STEVEN TABANGO NIVEL: 5º SISTEMAS EMULATOR EMU8086 Es una gran herramienta para la emulación de microprocesadores en la computadora. Permite generar códigos escritos en lenguaje ensamblador. INSTALACIÓN El asistente de instalación guiará al usuario durante el proceso.

Upload: steven-tabango

Post on 21-Jan-2017

181 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Ensamblador

PONTIFICIA UIVERSIDAD CATÓLICA DEL ECUADOR

SEDE IBARRA

ESCUELA DE INGENIERÍA

NOMBRE: STEVEN TABANGO

NIVEL: 5º SISTEMAS

EMULATOR EMU8086

Es una gran herramienta para la emulación de microprocesadores en la computadora.Permite generar códigos escritos en lenguaje ensamblador.

INSTALACIÓN

El asistente de instalación guiará al usuario durante el proceso.

Page 2: Ensamblador

Se indica la ruta de nuestra PC donde se instalará el software

La instalación empieza, no tarda más de 3 minutos.

Page 3: Ensamblador

Una vez terminada la instalación se ejecuta el programa.

PROGRAMAS

/*Ejecutar el programa Hola Mundo y debe cambiar los mensajes de pantalla al español.*/

name "hi-world"org 100hmov ax, 3 int 10h mov ax, 1003hmov bx, 0int 10hmov ax, 0b800hmov ds, axmov [02h], 'H'mov [04h], 'o'mov [06h], 'l'mov [08h], 'a'mov [0ch], ','mov [0eh], 'M'mov [10h], 'u'mov [12h], 'n'mov [14h], 'd'mov [16h], 'o'mov [18h], '!'mov cx, 12 mov di, 03hc: mov [di], 11101100b

Page 4: Ensamblador

add di, 2 loop c

mov ah, 0int 16hret

/*Compilar un programa que indique el nombre completo del estudiante, Universidad, Fecha y Materia*/

name "hello"org 100h jmp startmsg db 'Steven Tabango-PUCESI-2015/04/28-COMPILADORES', 0start: mov si, 0next_char: mov al, msg[si] cmp al, 0 je stop mov ah, 0eh int 10h inc si jmp next_char

stop: mov ah, 0 int 16h ret end

Page 5: Ensamblador

/*Compilar un programa que permita comparar 2 números del 0 al 9*/

name "flags"org 100hmov ah, 4mov al, 4cmp ah, alnopmov ah, 4mov al, 3cmp ah, alnopmov ah, 1mov al, -5cmp ah, alnopmov ah, 1mov al, 251cmp ah, alnop

mov ah, -3mov al, -2cmp ah, alnop

mov ah, -2mov al, -3cmp ah, alnop

mov ah, 255mov al, 1

Page 6: Ensamblador

cmp ah, alnopgame: mov dx, offset msg1* mov ah, 9 int 21h mov ah, 1 int 21h cmp al, '0' jb stop cmp al, '9' ja stop cmp al, '8' jb below ja above mov dx, offset equal_5 jmp printbelow: mov dx, offset below_5 jmp printabove: mov dx, offset above_5print: mov ah, 9 int 21h jmp game

stop: ret

msg1 db "Ingrese un numero entre 0 y 9: $"equal_5 db " es igual a 8", 0Dh,0Ah, "$"below_5 db " es menor a 8!" , 0Dh,0Ah, "$"above_5 db " es mayor a 8!" , 0Dh,0Ah, "$"

*Se ingresan números comprendidos entre 0-9 y se indica si es mayor, menor o igual a 8

Page 7: Ensamblador

/*Compilar un programa que permita sumar 10 valores asignados a un vector.*/

name "calc-sum"

org 100h ; directive make tiny com file.

; calculate the sum of elements in vector,; store result in m and print it in binary code.

; number of elements:mov cx, 10

; al will store the sum:mov al, 0

; bx is an index:mov bx, 0

; sum elements:next: add al, vector[bx]

; next byte:inc bx; loop until cx=0:loop next

; store result in m: mov m, al

; print result in binary:mov bl, mmov cx, 8print: mov ah, 2 ; print function. mov dl, '0' test bl, 10000000b ; test first bit. jz zero mov dl, '1'zero: int 21h shl bl, 1loop print; print binary suffix:mov dl, 'b'int 21h

Page 8: Ensamblador

mov dl, 0ah ; new line.int 21hmov dl, 0dh ; carrige return.int 21h

; print result in decimal:mov al, mcall print_al

; wait for any key press:mov ah, 0int 16h

ret; variables:vector db 1, 2, 3, 4, 6,8,7,2,4,3m db 0

print_al proccmp al, 0jne print_al_r 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_donepn_done: popa ret endp

Page 9: Ensamblador

El contenido del vector es: 1, 2, 3, 4, 6, 8, 7, 2, 4, 3 por lo que la suma da 40