Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Ejercicio 2: Escribir un código que verifique si una cadena es subcadena de otra. Por
ejemplo: “la Mu” es subcadena de “Hola Mundo”. La cadena: “233” es subcadena de la
cadena “2122432234”
comienzo:
mov al, msg2[0] copia la primera letra de la palabra a la dirección de
memoria al
cmp msg[si],"$" cuando encuentre el carácter $ sabrá que es el final de
la cadena para mandar al final
jz evalúa solo un bit del registro de estado y salta si el
valor es cero
cmp msg[si], al compara la primera letra de la cadena de la dirección al
jne salto condicional, si la condición es ≠
mov di, 1 poner en 1 di
di comprobar:
mov al, msg2[di] copia la siguiente letra de la palabra a la dirección de
memoria al
mov bx, di
cmp msg[si+bx], al posición de la letra + di, comparar con la cadena
jne si no coincide el carácter mandar a seguir
inc di incremento de di y guarda el resultado en el mismo
operando
cmp msg2[di],"$" si es el fin de la cadena y el programa llego hasta esta
línea, quiere decir que la cadena es parte de la palabra.
jz evalúa solo un bit del registro de estado y salta si el
valor es cero
loop comprobar bucle para recorrer cadena
seguir:
inc si incremento de si
loop comienzo Bucle principal para recorrer
palabra resultado:
mov dx, offset msg3 copiar msg3 a la dirección dx
mov ah, 9 preparar ah con 9 para la interrupción 21h
int 21h mostrar contenido en dx
final:
ret
msg db "Hola Mundo$" declaración de la variable msg
msg2 db "ola$" declaración de la variable msg2
msg3 db "Si es subcadena$" declaración de la variable msg3
2
Ejercicio 3: Escribir un código que verifique que todos 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 encuentran en “recanate”
3
msg db "cerro$" declaración de la variable msg y el $ es para señalar el
final de la cadena
msg2 db "recanate$" declaración de la variable msg2 y el $ es para señalar el
final de la cadena
msg3 db "Si se encuentran todos los caracteres$" declaración de la variable msg3 y el $ es
para señalar el final de la cadena
Ejercicio 4: Escribir un 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.
lectura:
mov ah,1 ponemos ah en 1
int 21h mostrar contenido en dx
cmp al,13 comparar el valor ingresado con 13, si es igual
ir al resultado
jz salto condicional, si la condición es =
cmp al, 57 comparar el valor ingresado con 57, si es
mayor ir al final
ja fin3 salto condicional, si la condición es >
cmp al,47 compara el valor con 47, si no es mayor ir a
fin3
jng fin3 salto condicional, si la condición es <
mov bx[si], al si es un digito entonces guardo en bx
inc si incrementar si
4
fin3
jmp Realiza un salto incondicional a la dirección
especificada
resultado:
mov ah,00h limpiar la pantalla
mov al,03h modo de texto 80x25x16
int 10h ingreso de 10h
mov bx[si], "$" si es el fin de la cadena
mov dx, offset bx obtener la dirección de bx y mover a dx
mov ah, 9 preparar ah con 9 para la interrupción 21h
int 21h mostrar contenido en dx y terminar el
programa
ret
5
Ejercicio 5: Escribir un programa que tome una cadena que representa un número decimal
y escriba su equivalente
Octal
6
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”
7
add al, cad3[si] sumar cad3 a al
inc si incrementar si
loop cadAnum2 bucle cadAnum2
seguir2: Función seguir2
mov bl, al mover al a bl
mov al, aux1 mover aux1 a al
cmp cad2, "-" comprar cad2 con -
jz resta saltar a resta si es igual a cero
cmp cad2, "+" comprar cad2 con +
jz suma saltar a suma si es igual a cero
cmp cad2, "*" comprar cad2 con *
jz multi saltar a multi si es igual a cero
cmp cad2, "/" comprar cad2 con /
jz divi saltar a divi si es igual a cero
resta: función resta
sub al, bl restar bl de al
jmp fin saltar al final
suma: función suma
add al, bl sumar bl a al
jmp fin saltar al final
multi: función multi
mul bl multiplicar bl
jmp fin saltar al final
divi: función división
div bl dividir bl
jmp fin saltar al final
fin: función fin
mov bx, ax mover ax a bx
mov ah,09 mover 09 a ah
8
9