
Crear cuadro con caracteres introducidos Ensamblador
Publicado por Francisco (1 intervención) el 19/06/2018 07:55:45
Buenas noches, estoy teniendo un problema con un programa en ensamblador que estoy construyendo , el propósito del programa es imprimir un cuadrado de "n" x "n" (donde "n" es un numero entero introducido por el usuario) que este formando por un carácter introducido por el usuario, mediante el uso de procedimientos (PROC). El problema que tengo es que al imprimir por ejemplo el carácter "R", 4 veces, la primera fila imprime 4 veces el carácter, despues en la segunda fila imprime 3 veces el carácter y sigue decrementando en las siguientes filas hasta no imprimir ningún carácter, lo que necesito es que este programa me imprima las filas de caracteres completos para asi poder formar una cuadrado de 4x4 (en este ejemplo) con el carácter R.
Dejo adjunta una imagen de mi programa.

Aqui dejo el codigo del programa, trabajo en Visual Studio con la librería Irvine32.
Espero y puedan ayudarme, muchas gracias de antemano.
Dejo adjunta una imagen de mi programa.

Aqui dejo el codigo del programa, trabajo en Visual Studio con la librería Irvine32.
Espero y puedan ayudarme, muchas gracias de antemano.
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
INCLUDE Irvine32.inc
.data
cuantos BYTE ?
caracter BYTE "-",0
askN BYTE "Ingresa un numero entero: ",0
askC BYTE "Ingresa un caracter: ",0
.code
colores PROC
mov edx, offset askN
call WriteString
call ReadInt
mov cuantos, al
call crlf
jmp label1
label1 :
mov edx, OFFSET askC
call WriteString
call ReadChar
mov caracter, al
call crlf
jmp label2
label2 :
call repetir
call crlf
cmp al, 0
cmp al, 0
jnz label2
ret
colores ENDP
repetir PROC
mov ecx, 0
mov cl,cuantos
add ax, 1
sub cuantos, 1
mov al, cuantos
L1:
mov edx, OFFSET caracter
call WriteString
loop L1
ret
repetir ENDP
main PROC
call colores
call ReadDec
exit
main ENDP
END main
Valora esta pregunta


0