Lenguaje ensamblador

Asuma que se ha almacenado en memoria una cadena de caracteres que termine con un retorno. Escriba un diagrama de flujo y un programa lenguaje ensamblador para contar la cantidad de veces el que el carácter de espacio aparece en la cadena.
Gracias por la ayuda.

2 respuestas

1
Respuesta de
Diagrama de flujo (debes hacer un dibujo mejor).
1.- Inicialización:
2.- Memoria de caracteres
3.- Buscar caracter 2dh
4.- Caracter 2dh encontrado?
NO:
1.- Incremente el contador de búsqueda
2.- Incremente el puntero de la memoria (tabla de caract.)
3.- Continuar con la búsqueda del carácter.
SI:
1.-Cargue el contenido del contador de búsquedas (bc)
2.- Muestre el resultado en el display
3.- Fin del programa.
Aquí va el programa :
Contador equ 1100h ; Dir. del contador de caract.
display equ 01h ; Puerta del display del contador
org 0000h ; Inicio del programa
di ; Deshabilita interrupciones
jp inicio ; Salta a la rutina principal
org 0100h ; Dirección del bucle principal
inicio: ld (contador),00h ; Inicializa el contador en 00h
ld hl,memchar ; Apunta la memoria de caract.
otro: ld a,(hl) ; Carga el contenido de la memoria
cp 2dh ; Compara con caract. retorno
jp z, final ; Finaliza la búsqueda del retorno.
ld bc,contador ; Puntero en el contador
ld a,(bc) ; Carga el contenido del contador
add a,01h ; Suma 01 a la cuenta
daa ; Ajuste bcd
ld (bc),a ; Guarda la cuenta en decimal
inc hl ; Incrementa el puntero de la mem.
jp otro ; Sigue buscando caract. ret. en mem.
final: ld a,(contador) ; Carga el contenido del contador.
out (display),a ; Muestra la cuenta en el display
halt ; Fín del programa
org 1000h ; Tabla con la memoria cargada
memchar: db " 60 61 62 63 64 65 66 80 a8 f2 40 3c 2d"
; Fíjate que el car. retorno está en la última dirección (puedes ponerlo dónde desees o agrandar la tabla)
El programa funciona 100%. Espero te sirva de ayuda.
Saludos cordiales. RAFD.
Añade un comentario a esta respuesta
1
Respuesta de
Henry:
Te envío la respuesta en pseudocodigo, ya que no me dices en ensamblador de que procesador.
cuenta=0
p=direccion inicio cadena
mientras ( *p no es <CR>)
si (*p es ESPACIO) cuenta=cuenta+1
Incrementar p
-------------
*p significa el contenido de la dir de memoria apuntada por p
Espero te sea útil
Saludos,
Ernesto.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Ingeniería Electrónica o hacer tu propia pregunta: