Documentos de Académico
Documentos de Profesional
Documentos de Cultura
py/categoria/escritorio) » Ensamblador
(https://www.programacion.com.py/categoria/escritorio/ensamblador) » Ejercicios resueltos en Ensamblador 8086
45
(//m.addthis.com/live/redirect/?
url=mailto%3A%3Fbody%3Dhttps%253A%252F%252Fwww.programacion.com.py%252Fescritorio%252Fensamblador%252Fejercicios-
resueltos-en-ensamblador-
8086%26subject%3DEjercicios%2520resueltos%2520en%2520Ensamblador%25208086&uid=5a2cb17c6f0 6a5&pub=ra-
513297721cbba692&rev=v8.3.10-wp&per=unde ned&pco=tbx32-300)
Los mejores
Lo mejor de partidos en HD.
Rusia en HD Desde $479 al
mes x 2 meses
En este artículo les voy a dejar los programas más importantes que he hecho en Ensamblador. La mayoría de los programas eran
tareas que me dio mi profesor en la universidad.
Ejercicio 1: Escribir un código que veri que si dos cadenas son iguales
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 term
ina 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
Ejercicio 2: Escribir un código que veri que si una cadena es subcadena de otra.
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
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$"
Ejercicio 3: Escribir un código que veri que que todas los caracteres de una cadena se encuentran en otra.
Por ejemplo: todas las letras de la cadena “casa” se encuentran en “escaso”. Pero no todas las letras de “cerro” se en cuentran en
“recanate”
Lo mejor de Rusia
en HD
Los mejores partidos en HD.
Desde $479 al mes x 2
meses
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
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$"
Ejercicio 4: Escribir una programa que reciba una cadena ingresada por teclado, terminada en ENTER. Luego que elimine 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
Ejercicio 5: Escribir un programa que tome una cadena que representa un número decimal y escriba su equivalente octal
org 100h ; inicio de programa
mov si, 0
mov al, 0
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
Ejercicio 6: Escribir un programa que tome tres cadenas, la primera y la tercera representan un número y la segunda una operación,
por ejemplo: “329”, “-“, “21” e imprima el resultado “308”
org 100h ; inicio de programa
include 'emu8086.inc' ;Incluye funciones de libreria emu8086
; DEFINE_SCAN_NUM
; DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
mov si, 0
mov al, 0
;Convertir primera cadena a numero
cadAnum:
cmp cad1[si], "$"
jz seguir
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: $"
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
bucle1:
mov dx, cx
mov al, color ;AL = pixel color
mov ah, 0ch ;Change color for a single pixel
int 10h ;set pixel
Ejercicio 11: Escribir un programa que lea un archivo y cuente cuantas palabras terminan 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
mostrar:
cmp aux, "a" ;compara si el anterior es a
jnz abajo
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
45
(//m.addthis.com/live/redirect/?
url=mailto%3A%3Fbody%3Dhttps%253A%252F%252Fwww.programacion.com.py%252Fescritorio%252Fensamblador%252Fejercicios-
resueltos-en-ensamblador-
8086%26subject%3DEjercicios%2520resueltos%2520en%2520Ensamblador%25208086&uid=5a2cb17c6f0 6a5&pub=ra-
513297721cbba692&rev=v8.3.10-wp&per=unde ned&pco=tbx32-300)
Posts Relacionados
(https://www.programacion.com.py/escritorio/ensamblador/ejemplos-de-programas-en-ensamblador-
8086)
Ejemplos de programas en Ensamblador 8086
(https://www.programacion.com.py/escritorio/ensamblador/introduccion-al-lenguaje-ensamblador)
Learn More
Sponsored by Kryptonex
Report ad
Mejores primero
Recomendar ⤤ Compartir
Unite a la discusión...
Nombre
Rodrigo Amezcua
hace 12 días
− ⚑
Muy bueno, como seria el de ordenar los numeros de mayor a menor pero que te los pida en pantalla y que los muestre en
pantalla?
△ ▽ Responder
Learn More
Report ad
Í
SEGUÍNOS EN FACEBOOK
Programación Paraguay
Me gusta esta página 431 Me gusta
Programación Paraguay
hace aproximadamente 9 meses
GITHUB
(https://github.com/ProgramacionComPy)
ACERCA DE
Programacion.com (http://Programacion.com).py es un sitio web donde podrás encontrar recursos y documentación de distintos
lenguajes de programación.
ENTRADAS RECIENTES
ETIQUETAS
Java
(https://www.programacion.com.py/tag/hibernate) HTML5 (https://www.programacion.com.py/tag/html5)
(https://www.programacion.com.py/tag/java-escritorio) java ee
(https://www.programacion.com.py/tag/java-ee) Javascript (https://www.programacion.com.py/tag/javascript-2) jsp
linux
(https://www.programacion.com.py/tag/jsp)
(https://www.programacion.com.py/tag/linux) maven
(https://www.programacion.com.py/tag/maven) MONGODB (https://www.programacion.com.py/tag/mongodb) mvc
(https://www.programacion.com.py/tag/mvc) mysql (https://www.programacion.com.py/tag/mysql) Node.js
(https://www.programacion.com.py/tag/node-js) nodejs (https://www.programacion.com.py/tag/nodejs) phonegap
php
(https://www.programacion.com.py/tag/phonegap-2)
(https://www.programacion.com.py/tag/php-2) PostgreSQL
(https://www.programacion.com.py/tag/postgresql) rails (https://www.programacion.com.py/tag/rails) red hat
(https://www.programacion.com.py/tag/red-hat) reportes (https://www.programacion.com.py/tag/reportes) rest
(https://www.facebook.com/pages/Programacioncompy/170660109749450) (https://twitter.com/ProgComPy) ()
() (https://www.programacion.com.py/contactenos) (https://www.programacion.com.py/feed)