Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios Resueltos en Ensamblador 8086
Ejercicios Resueltos en Ensamblador 8086
py)
Inicio ( htt p://www.program ac ion.c om .py) » Escritorio ( htt p://www.program ac ion.c om .py/c ategoria/esc ritorio) » Ensam
blador
( htt p://www.program ac ion.c om .py/c ategoria/esc ritorio/ensam blador) » Ejercicios resueltos en Ensam blador 8086
0
En este artículo les voy a dejar los program as m ás im portantes que he hecho en Ensam blador. La m ayoría de los program as eran
tareas que m e dio m i profesor en la universidad.
org 100h
comienzo:
mov si, x
mov al, msg2[si]
cmp msg[si], al ;comparar letra por letra las cadenas, si uno no coincide manda directamente a fin y termina el
programa jne fin:
cmp msg[si], "$" ;si es el final y el programa llega aca, quiere decir que son
iguales jz final:
inc x
loop comienzo
final:
mov dx, offset
msg3 mov ah, 9
int 21h
fin:
ret
msg db "hello world $"
msg2 db "hello world
$" msg3 db "Son
iguales $" x dw 0
org 100h
mov si, 0 ;ponemos si en 0
comienzo:
mov al, msg2[0] ;copiar la primera letra de la palabra a
al cmp msg[si],"$" ;si es el fin de la cadena mandar a
final
jz final
cmp msg[si], al ;comparar si encuentra la primera letra de la
cadena jne seguir
cmp msg2[di],"$" ;si es el fin de la cadena y el programa llego aca quiere decir que la cadena es parte de la
palabra jz resultado
cadena seguir:
inc si ;para seguir recorriendo la palabra
loop comienzo ;bucle principal para recorrer
palabra resultado:
mov dx, offset msg3 ;copiar msg3 a dx
mov ah, 9 ;preparar ah con 9 para la interrupcion
21h int 21h ;mostrar contenido en dx
final:
ret
msg db "Hola
Mundo$" msg2 db
"ola$"
msg3 db "Si es subcadena$"
E j e r c i c i o 3 : Escribir un código que verifique que todas los caracteres de una cadena se encuentran en otra.
Por ejem plo: todas las letras de la cadena “casa” se encuentran en “escaso”. Pero no todas las letras de “cerro” se en cuentran en
“recanate”
org 100h
mov si, 0 ;ponemos si en
0 comienzo:
cmp msg[si],"$" ;si es el fin de la cadena mandar a
final jz resultado
recorrer seguir:
inc si ;para seguir recorriendo la palabra
loop comienzo ;bucle principal para recorrer
palabra resultado:
mov dx, offset msg3 ;copiar msg3 a dx
mov ah, 9 ;preparar ah con 9 para la interrupcion
21h int 21h ;mostrar contenido en dx
final:
ret
msg db "cerro$"
msg2 db "recanate$"
msg3 db "Si se encuentran todos los caracteres$"
E j e r c i c i o 4 : Escribir una program a que reciba una cadena ingresada por teclado, term inada en ENTER. Luego que elim ine todos los
caracteres que no son dígitos, sin utilizar una variable auxiliar.
ORG 100H
mov si, 0
lectura:
mov ah,1
int 21h
cmp al,13
jz resultado:
cmp al, 57 ;si tecla es mayor a 57 entonces ir a fin3 (tecla > 57)
ja fin3
cmp al,47 ;si tecla no es mayor a 47 ir a fin3 (tecla <= 47)
jng fin3
mov bx[si], al ;si es un digito entonces guardo en
bx inc si ;incrementa si
fin3:
jmp lectura
resultado:
mov ah,00h ;limpia la
pantalla mov al,03h
int 10h
mov bx[si], "$"
mov dx, offset
bx
mov ah, 9 ;preparar ah con 9 para la interrupcion
21h int 21h ;mostrar contenido en dx
ret
E j e r c i c i o 5 : Escribir un program a que tom e una cadena que representa un núm ero decim al y escriba su equivalente octal
cadAnum:
cmp cad[si],
"$" jz seguir
mov bl, 10
mul bl
sub cad[si],
'0' add al,
cad[si]
inc si
loop cadAnum
seguir:
mov cx, si
mov si, 0
mov bl, 8
pasar:
div bl ;dividir al con bl
mov oct[si], ah ;copiar a la cadena oct el resultado sobrante de la
division inc si ;incrementar si
loop pasar
fina:
cmp ah, 0
jnz final
mov oct[si],
al final:
;mov dx, offset res
;mov ah, 9 ;preparar ah con 9 para la interrupcion 21h
;int 21h ;mostrar contenido en
dx ret
cad db "64$"
oct db 0
E j e r c i c i o 6 : Escribir un program a que tom e tres cadenas, la prim era y la tercera representan un núm ero y la segunda una operación, por
ejem plo: “329″, “-”, “21″ e im prim a el resultado “308″
mov bl, 10
mul bl
sub cad1[si],
'0' add al,
cad1[si]
inc si
loop cadAnum
seguir:
mov aux1, al
;Convertir segunda cadena a
numero mov si, 0
mov al, 0
cadAnum2:
cmp cad3[si],
"$" jz seguir2
mov bl, 10
mul bl
sub cad3[si],
'0' add al,
cad3[si]
inc si
loop cadAnum2
seguir2: mov
bl, al mov
al, aux1
;realizar operaciones normalmente teniendo ya los dos numeros
decimales cmp cad2, "-"
jz resta
cmp cad2, "+"
jz suma
cmp cad2, "*"
jz multi
cmp cad2, "/"
jz divi
resta:
sub al, bl
jmp fin
suma:
add al, bl
jmp fin
multi:
mul bl
jmp fin
divi:
div bl
jmp fin
fin:
mov bx, ax
mov ah,09
lea dx,msg
int 21h
mov ax, bx
call PRINT_NUM
ret
cad1 db "10$"
cad2 db "-"
cad3 db "2$"
aux1 db ?
aux2 dw ?
msg dw "El resultado es: $"
name "keybrd"
org 100h
; print a welcome message:
mov dx, offset
msg mov ah, 9
int 21h
;============================
; eternal loop to get
; and print keys:
wait_for_key:
; check for keystroke in
; keyboard buffer:
mov dh, pos
mov dl, pos
mov bh, 0
mov ah, 2
int 10h ;Movemos el
cursor mov al,'X'
mov bh,0
mov bl,1
mov cx,1
mov ah,09h
inc pos ;Imprimimos una
x int 10h
mov ah, 1
int 16h
jz wait_for_key
; get keystroke from keyboard:
; (remove from the buffer)
mov ah, 0
int 16h
; print the key:
mov ah, 0eh
int 10h
; press 'esc' to exit:
cmp al, 1bh
jz exit
jmp wait_for_key
;============================
exit:
ret
msg db "Type anything...", 0Dh,0Ah
db "[Enter] - carriage return.", 0Dh,0Ah
db "[Ctrl]+[Enter] - line feed.",
0Dh,0Ah db "You may hear a beep",
0Dh,0Ah
db " when buffer is overflown.",
0Dh,0Ah db "Press Esc to exit.",
0Dh,0Ah, "$"
pos db 1
end
name "arreglo-
mayor" org 100h
mov cx, 8
bucle1:
mov c, cx
mov bx, cx
mov cx, 9
bucle2:
mov si, cx
mov ah, v[si-
1]
cmp ah,v[bx-1]
jnge seguir ;Si v[8] < v[7] no hacer nada,
sino:
mov dh, v[bx-1] ;Copiar v[7] en
dh mov dl, v[si-1] ;Copiar v[8]
en dl mov v[bx-1], dl ;Copiar dl
en v[7] mov v[si-1], dh ;Copiar
dh en v[8] seguir:
loop bucle2
mov cx, c
loop bucle1
ret
v db
2,32,64,32,98,12,5,21,91 c
dw 0
parte3: ;una vez que tengamos el MCM primero multiplicar nro1 * nro
2
mov al, nro1 ;con ese resultado, dividir por el MCM de nro1 y nro2 y tenemos el
MCD
mov bl, nro2
mul bl
mov bl, MCM
div bl
mov MCD,
al
ret ;fin del programa
cont db 0 ;cont =
contador
MCM db 0 ;en esta variable se guarda el
MCM MCD db 0 ;en esta variable se guarda
el MCD nro1 db 48 ;numero1 decimal
nro2 db 60 ;numero2
decimal
mov cx,1
mov al, 13h
mov ah, 0
int 10h ; set graphics video mode.
bucle1:
mov dx, cx
mov al, color ;AL = pixel color
mov ah, 0ch ;Change color for a single
pixel int 10h ;set pixel
E je rc ic io 1 1 : Escribir un program a que lea un archivo y cuente cuantas palabras term inan con la letra a.
name
"archivo3"
org 100h
mov al, 0 ;modo de acceso para abrir arhivo, modo lectura/escritura
mov dx, offset archivo ;offset lugar de memoria donde esta la
variable mov ah, 3dh ;se intenta abrir el archivo
int 21h ;llamada a la interrupcion DOS
jc error ; si se prendio la bandera c ir a error
error:
; ....
;leer archivo
leer:
mov bx, handle
mov cx, 1
mov dx, offset
leido mov ah, 3fh
int 21h
ir a abajo
mostrar:
cmp aux, "a" ;compara si el anterior es a
jnz abajo
contador abajo:
mov aux, dl ;guardar en aux lo que hay en dl para comparar en la proxima
vuelta jmp leer
FIN:
;cerramos archivo
mov bx, handle
mov ah, 3eh
int 21h
ret
En: Ensamblador (ht t p:// www.pr ogr am ac ion.c om.py/c at egoria/esc rit orio/ensamblador) 8086 (ht t p://www.pr ogr am ac ion.c om.py/t ag/8086)
asm
(ht t p:// www.pr ogr am ac ion.c om.py/t ag/asm) ensamblador (ht t p:// www.pr ogr am ac ion.c om.py/t ag/ensamblador- 2)
Posts Relacionados
(http://www.program ac ion.c om .py/esc ritorio/ensam blador/ejem plos- de- program as- en- ensam blador- 8086) Ejem
plos
(http://www.program ac ion.c om .py/esc ritorio/ensam blador/introducc ion- al- lenguaje- ensam blador) Introducción al
Deja un comentario
Tu debes loguearte ( htt p://www.program ac ion.c om .py/wp- login.php? redirect_to=http%3A%2F%2¡Error! Referencia de hipervínculo no
válida.) para hacer com entarios.
( htt p://www.fac ebook.c om /pages/P rogram ac ionc om py/170660109749450) (https://twitter.com /ProgC om Py) ()
()
( htt p://www.program ac ion.c om .py/c ontac tenos) ( htt p://www.program ac ion.c om .py/feed)
GITHUB
(https://github.com /Program acionC om
Py)
ENTRADAS RECIENTES
Google lanza Dart 1.0, su alternativa a Javascript ( htt p://www.program ac ion.c om .py/notic ias/google- lanza- dart- 1- 0- su-
alternativa- a- javascript)
Django 1.6 final disponible ( htt p://www.program ac ion.c om .py/notic ias/django- 1- 6- final- disponible)
Instalar Zabbix 2 en Ubuntu 13 utilizando MySql com o m otor de base de datos (http://www.program ac ion.c om
.py/varios/linux- all/instalar-zabbix-2-en-ubuntu-13-utilizando-m ysql-com o-m otor-de-base-de-datos)
Open Site Explorer: Herram ienta para m ejorar SEO (htt p://www.program ac ion.c om .py/notic ias/open- site- explorer- herram
ienta- para- m ejorar-seo)
Offline.js, avisa de una desconexión a Internet a los usuarios de tu site (http://www.program ac ion.c om .py/notic ias/offline- js-
avisa- de- una-desconexion-a-internet-a-los-usuarios-de-tu-site)
COMENTARIOS RECIENTES
ETIQUETAS
8086 ( htt p: //www. programacion. com. py/t ag/8086) android (http://www.programac ion.c om.py/tag/android- 2) asm
( htt p: //www . programacion. com. py/t ag/asm) Bootstrap 3 ( htt p: //www . programacion. com. py/t ag/boot st rap- 3) c
(http://www.program acion.com.py/tag/c-3) c++
(http://www.programacion.com.py/tag/c-2) c adenas (http://w w w .programac ion.c om.py/tag/c
adenas) CentOS (http://www.programac i on.c om.py/tag/c entos) css (htt p://www.programacion.com.py/tag/css- 2)
delphi (http://www.programacion.com.py/tag/delphi-2) ensamblador
(h tt p ://www.pro g ramac ion.c om.p y /t ag /e nsambl ado r- 2) exportar ( htt p://www .programacion.com.py/t ag/export ar) fechas
( htt p: //www . programacion. com. py/t ag/fechas) fedora (h tt p ://www.pro g ramac ion.c om.p y /t ag /fe do ra) FICHEROS ( htt p: //www . programacion. com. py/t ag/ficheros)
func iones (h ttp://w w w .programac ion.c om.py/tag/func iones) gii ( htt p://www .programacion.com.py/t ag/gii) google
(http://www.programac ion.c om.py / tag/ google ) gridview (htt p://www.programacion.com.py/t ag/gridview ) HTML5
( htt p: //www . programacion. com. py/t ag/ht ml5) HTML parser ( htt p: //www . programacion. com. py/t ag/ht ml- parser) Java
(http://www.programac i on.c om.py/tag/j ava- esc ri tori o) jquery (http://www.programacion.com.py/tag/jquery) JSOUP
linux
( htt p: //www . programacion. com. py/t ag/jsoup) lamp ( htt p: //www . programacion. com. py/t ag/lamp)
(http://www.program acion.com.py/tag/linux) Menu ( htt p: //www . programacion. com. py/t ag/menu) mint
( htt p: //www . programacion. com. py/t ag/mint ) mysql (h tt p ://www.pro g ramac ion.c om.p y /t ag /my sql ) PageSpeed ( htt p://www .programacion.com.py/t ag/pagespeed)
pdf
( htt p: //www . programacion. com. py/t ag/sql- server) ubuntu (h ttp://w w w .programac ion.c om.py/tag/ubuntu) validaciones
( htt p: //www . programacion. com. py/t ag/validaciones) windows ( htt p: //www. programacion. com. py/t ag/w indow s) Wordpress
Yii (http://w w w
( htt p: //www . programacion. com. py/t ag/w ordpress)
.programacion.com.py/tag/yii)
Sitio web bajo licencia C reative C om m ons Attribution-NonC om m ercial-ShareAlike 3.0 License (http://c reativec om m
ons.org/lic enses/by- nc - sa/3.0/deed.es)
META
LO MÁS LEÍDO
Funciones y procedim ientos + Operaciones con fechas + Funciones de cadenas en Delphi (http://www.program ac ion.c om
.py/esc ritorio/delphi/func iones- y- proc edim ientos- operac iones- c on- fec has- func iones- de- c adenas) DEFINES Y MAC ROS en C
( htt p://www.program ac ion.c om .py/esc ritorio/c /defines- y- m ac ros- en- c )
Manual básico de Yii fram ework (PHP) (http://www.program ac ion.c om .py/web/php/m anual- basic o- de- yii)
Ejercicios resueltos en Ensam blador 8086 ( htt p://www.program ac ion.c om .py/esc ritorio/ensam blador/ejerc ic ios- resueltos- en- ensam
blador-
8086)
Bases de datos (DAO) en Yii (http://www.program ac ion.c om .py/web/php/bases- de- datos- dao- en- yii)
ACERCA DE
Program acion.com .py es un sitio web donde podrás encontrar recursos y docum entación de distintos lenguajes de program ación.
StiloGam es (htt p://www.stilogam es.c om Tecnologia (htt p://www.tec nologia.c om Network (http://www.network.c om .py)
.py) .py)
© 2013 PROGRAMAC ION.C OM.PY - Design By Rodrigo Paszniuk ( htt p://rodrigopasz niuk.stilogam es.c om .py)
(http://www.facebook.com /pages/Program
acioncom py/170660109749450)
(https://twitter.com /ProgC om Py) () ()
( htt p://www.program ac ion.c om .py/c ontac tenos) ( htt p://www.program ac ion.c om .py/feed)