Ensamblador - Ayuda con abecedario

 
Vista:
sin imagen de perfil

Ayuda con abecedario

Publicado por Nanus (1 intervención) el 23/07/2015 00:43:56
Necesito su ayuda para un proyecto de ensamblador. El programa tiene que imprimir el abecedario apartir de la letra que ingrese el usuario; por ejemplo,si ponemor "r", el programa responde stuvwxyz.
Les agradeceria mucho su ayuda.
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
sin imagen de perfil

Ayuda con abecedario

Publicado por gAb (1 intervención) el 27/07/2015 17:26:34
Hola,

El código ASCII está ordenado, suponiendo que trabajaras solo con minúsculas, la "a" sería "97" e irían aumentando de uno en uno hasta la "z" que sería "122" (en decimal, si fuese hexadecimal sería del "61" al "7A").

Simplemente tendrías que tomar el carácter introducido, convertirlo a ASCII y realizar un "For" desde ese número hasta el correspondiente a la "z", dentro del propio bucle convertir cada código ASCII a su carácter correspondiente e imprimirlo, o almacenarlo en una variable, matriz, archivo, o donde quieras y luego imprimir lo almacenado.

Lo pongo en pseudo código porque hace muchísimo que no toco asm y tengo muchas lagunas, pero la estructura si te valdrá.
Espero que esto te de una pista y te sirva de guía


Ej:
Dato introducido: r

caracter r a ASCII = 114
caracter z a ASCII = 122
CaracImpr = 114
Repeticiones = 122 - 114 = 8
MOV CX,0008h
BucleFor: INC DX
CMP DX,0000h
CaracImpr =CaracImpr + 1
Imprimir CaracImpr
JE FinBucle
LOOP BucleFor
FinBucle: ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con abecedario

Publicado por MSH (120 intervenciones) el 28/07/2015 20:33:36
Espero sirva. Los conocimientos en asm se estaban volviendo herrumbe...

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
.model small
 
.stack 64
 
;--------------------------------------------------------
.data
 
mensa db  'Teclea un caracter de abecedario  ','$',0dh,0ah
;tab   db  '$',0dh,0ah
char db 41h
;---------------------------------------------------------
 
.code
 
inicio:
 
mov ax,@data
mov ds,ax
push ds
pop es
 
; pone mensaje
mov ah,09h
lea dx,mensa
int 21h
 
;lee caracter tecleado y limpia buffer
mov ah,08h
int 21h
mov char,al
 
mov ah,02h
mov dl,char
int 21h
 
mov ah,02h
mov dl,0ah
int 21h
 
mov ah,02h
mov dl,0dh
int 21h
;-------------------- por lo general limpio los registros antes de las rutinas
sub ax,ax
sub dx,dx
sub cx,cx
sub bx,bx
;---------------------
;inicia rutina
;---------------------
mov dl,char
inc dl       ;letra que le sigue
 
;cmp dl,41h  ;A
;jae sigue1
;cmp dl,5ah  ;Z
;jbe sigue1
 
cmp dl,61h  ;a
jae sigue2
cmp dl,7ah  ;z
jbe sigue2  ;---------------fuga
 
jmp sale
 
sigue1:
mov ah,02h
int 21h
cmp dl,5ah
je  suma_min
inc dl
jmp sigue1
 
suma_min:
add dl,07h ; salta a las minusculas
sigue2:
mov ah,02h
int 21h
cmp dl,07ah
jae  sale    ;llega a la "z" y termina
inc dl
jmp sigue2
 
sale:
mov ax,4c00h
int 21h
end inicio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar