Flujo potencial, conceptos básicos y ejemplos resueltos.
Ensamblador
1. PONTIFICIA UIVERSIDAD CATÓLICA DEL ECUADOR
SEDE IBARRA
ESCUELA DE INGENIERÍA
NOMBRE: STEVEN TABANGO
NIVEL:5º SISTEMAS
EMULATOR EMU8086
Es una gran herramientapara la emulaciónde microprocesadores enla
computadora.
Permite generar códigos escritosen lenguaje ensamblador.
INSTALACIÓN
El asistente de instalaciónguiaráal usuario durante el proceso.
2. Se indica la ruta de nuestraPC donde se instalaráel software
La instalación empieza, notarda más de 3 minutos.
3. Una vez terminadala instalación se ejecutael programa.
PROGRAMAS
/*Ejecutar el programa Hola Mundo y debe cambiar los mensajes de
pantalla al español.*/
name "hi-world"
org 100h
movax, 3
int10h
movax, 1003h
movbx,0
int10h
mov ax,0b800h
mov ds,ax
mov[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
movdi,03h
c: mov[di],11101100b
4. add di,2
loopc
movah, 0
int16h
ret
/*Compilar un programa queindiqueel nombre completo del estudiante,
Universidad, Fecha y Materia*/
name "hello"
org 100h
jmp start
msg db'StevenTabango-PUCESI-2015/04/28-COMPILADORES',0
start:
mov si,0
next_char:
mov al, msg[si]
cmp al,0
je stop
mov ah, 0eh
int 10h
inc si
jmp next_char
stop: movah, 0
int 16h
ret
end
5. /*Compilar un programa quepermita comparar 2 números del 0 al 9*/
name "flags"
org 100h
movah, 4
moval, 4
cmp ah, al
nop
movah, 4
moval, 3
cmp ah, al
nop
movah, 1
moval, -5
cmp ah, al
nop
movah, 1
moval, 251
cmp ah, al
nop
movah, -3
moval, -2
cmp ah, al
nop
movah, -2
moval, -3
cmp ah, al
nop
movah, 255
moval, 1
6. cmp ah, al
nop
game: movdx,offsetmsg1*
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,offsetequal_5
jmpprint
below:movdx,offsetbelow_5
jmpprint
above:movdx,offsetabove_5
print:movah, 9
int 21h
jmpgame
stop:ret
msg1 db "Ingrese unnumeroentre 0 y 9: $"
equal_5db " esigual a 8", 0Dh,0Ah,"$"
below_5db" esmenora 8!" , 0Dh,0Ah,"$"
above_5db " es mayora 8!" , 0Dh,0Ah, "$"
*Se ingresannúmeroscomprendidosentre 0-9y se indicasi esmayor, menoro igual a 8
7. /*Compilar un programa quepermita sumar 10 valoresasignados a un
vector.*/
name "calc-sum"
org 100h ; directive make tinycomfile.
; calculate the sumof elementsinvector,
; store resultinm and printit inbinarycode.
; numberof elements:
movcx, 10
; al will store the sum:
moval, 0
; bx isan index:
movbx,0
; sum elements:
next:addal, vector[bx]
; nextbyte:
inc bx
; loopuntil cx=0:
loopnext
; store resultinm:
movm, al
; printresultinbinary:
movbl,m
movcx, 8
print:movah, 2 ; printfunction.
mov dl,'0'
testbl,10000000b ; testfirstbit.
jz zero
mov dl,'1'
zero: int21h
shl bl,1
loopprint
; printbinarysuffix:
movdl,'b'
int21h
8. movdl,0ah ; newline.
int21h
movdl,0dh ; carrige return.
int21h
; printresultindecimal:
moval, m
call print_al
; waitfor any keypress:
movah, 0
int16h
ret
; variables:
vectordb 1, 2, 3, 4, 6,8,7,2,4,3
m db 0
print_al proc
cmp al,0
jne print_al_r
pushax
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
divdl
call print_al_r
mov al,ah
add al,30h
mov ah,0eh
int 10h
jmp pn_done
pn_done:
popa
ret
endp