Ensamblador - Crear cuadro con caracteres introducidos Ensamblador

 
Vista:
Imágen de perfil de Francisco
Val: 1
Ha disminuido su posición en 10 puestos en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

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.

Ejemplo

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder