Ensamblador - Cambiar caracteres de un mensaje en ensamblador

 
Vista:
sin imagen de perfil
Val: 11
Ha mantenido su posición en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

Cambiar caracteres de un mensaje en ensamblador

Publicado por Andrés (4 intervenciones) el 16/08/2020 19:47:35
Hola, tengo un trabajo que vale muchos puntos y necesito hacer un reemplazo de caracteres en una cadena que el usuario ingresa pero no tengo idea de cómo hacer el cambio, lo que hay que hacer realmente es traducir de Malespín y viceversa que es un tipo de codificación por así decirlo, y también de un tipo de codificación numérica que es por ejemplo reemplazar las A por 4 y las T por 7 por decir un ejemplo.
Pero no logro hacerlo...
Acá está mi código, de verdad les agradezco que me ayuden porque queda poco tiempo para la entrega del trabajo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
.model small
.stack
.data
 
mensaje db "Curso: IC1400 Estudiante: Andres Martinez Fumero$"
mensaje2 db "Tarea de ASM Version 0.74-3 Fecha de Creacion: 15/08/20$"
salto db 13, 10, "$"
 
info db 13,10, "Ingrese", 13, 10
i6 db "-H para ayuda,",13, 10
i1 db "-M para Malespin,",13, 10
i2 db "-E para Codif Num a Espanol",13, 10
i3 db "-N para Espanol a Codif Num", 13, 10
i4 db "-S para salir",13, 10
i5 db "Opcion $"
 
.code
main proc ; Inicia el proceso
mov ax,@data ; Se hace el set de @data
mov ds,ax ; Movemos los datos de data
mov ah,09h ; Función (Print String)
mov dx, offset mensaje ; Carga el mensaje a printear
int 21h ; Ejecuta la interrupcion 21h que llama al DOS
 
mov ah,09h ; Función (Print String)
mov dx, offset salto ; Carga el mensaje a printear
int 21h ; Ejecuta la interrupcion 21h que llama al DOS
 
mov ah,09h ; Función (Print String)
mov dx, offset mensaje2 ; Carga el mensaje a printear
int 21h ; Ejecuta la interrupcion 21h que llama al DOS
 
mov ah,09h ; Función (Print String)
mov dx, offset salto ; Carga el mensaje a printear
int 21h ; Ejecuta la interrupcion 21h que llama al DOS
 
call mostrarInfo
;mov ah,09h ; Función (Print String)
;mov dx, offset info ; Carga el mensaje a printear
;int 21h ; Ejecuta la interrupcion 21h que llama al DOS
 
call leerLetra
 
mov ax, 4c00h  ; salir del programa
int 21h
 
 
mostrarInfo proc        ; Funcion que muestra la info del programa
 
   mov ah,09h ; Función (Print String)
   mov dx, offset info ; Carga el mensaje a printear
   int 21h ; Ejecuta la interrupcion 21h que llama al DOS
   ret
 
mostrarInfo endp
 
 
leerLetra proc
 
   xor ax,ax  ;Funcion 0
   int 16h    ;del teclado
 
   cmp al,'H' ; Se compara con el carcter H
   je Ayuda ; Salta a la etiqueta Ayuda
 
   cmp al,'M' ; Se compara con el caracter M
   je Malespin ; Salta a la etiqueta Malespin
 
   cmp al,'E' ; Se compara con el caracter E
   je Decodificar ; Salta a la etiqueta Decodificar
 
   cmp al,'N' ; Se compara con el caracter N
   je Codificar ; Salta a la etiqueta Codificar
 
   cmp al,'S' ; Se compara con el caracter S
   je Salir
 
   jmp leerLetra
 
leerLetra endp
 
Ayuda:          ; Se muestra la ayuda
   call mostrarInfo
   jmp leerLetra
Malespin:
   jmp leerLetra
 
Decodificar:   ; Se decodifica y se vuelve al menú
   jmp leerLetra
 
Codificar:     ; Se codifica y se vuelve al menú
   jmp leerLetra
 
Salir:        ; Se sale del programa
   ret
 
main endp
 
end main
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder