Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - BioHazardTM

#1
Programación General / Ejercicio Pascal
1 Enero 2012, 23:41 PM
Buenas noches, tengo un problema con un ejercicio de Pascal, el ejercicio consiste en escribir un programa que a partir de un número entero impar, forme figuras de este tipo:

Número = 5

5
  4
    3
  2
1


Tengo todo el ejercicio hecho, pero me falta una parte, si hay 5 filas y 5 columnas, ¿cuál sería el número de espacios en función de las filas, que debería poner?
Código (pascal) [Seleccionar]
PROGRAM P04_8;
USES    CRT;
VAR     N, i, j, k, cont: integer;
BEGIN
        Write('Introduce un numero positivo impar: ');
        Read(N);

        FOR i := 1 TO N DO
                cont := 0;
                FOR j := 1 TO N DO
                        BEGIN
                                IF (j MOD 2 <> 0) AND (cont = 0) THEN
                                        BEGIN
                                                IF (i <> 1) THEN
                                                        BEGIN
                                                                k := ;   <------ k = Numero de espacios antes del numero, para la fila actual
                                                                REPEAT
                                                                        BEGIN
                                                                                Write(' ');
                                                                                k := k - 1;
                                                                        END;
                                                                UNTIL k = 0;
                                                        END;
                                                Write(N - i + 1);
                                                cont := cont + 1;
                                        END;
                                IF (cont <> 0) THEN Write(' ');
                        END;

READKEY;
END.


No se si me he explicado bien.
#2
Hola buenas, tengo un problema al ensamblar un programa escrito en ensamblador con sintaxis de AT&T en un ordenador Linux de 64 bits.
El problema es que al ensamblar con:
Código (bash) [Seleccionar]
gcc -nostartfiles -g -o power power.s

Me da estos errores:
power.s: Assembler messages:
power.s:10: Error: operand type mismatch for `push'
power.s:17: Error: operand type mismatch for `pop'
power.s:24: Error: operand type mismatch for `push'
power.s:45: Error: operand type mismatch for `pop'


Si pongo pushb, pushw, pushl o pushq no se soluciona el problema.
A ver si me podéis ayudar.


Este es mi programa fuente:
Código (asm) [Seleccionar]

.section .data
.section .text
.globl _start
_start:
push $3
push $2
call power
add $8, %esp

push %eax

push $2
push $5
call power
add $8, %esp

pop %ebx
add %eax, %ebx
mov $1, %eax
int $0x80

.type power, @function
power:
push %ebp
mov %esp, %ebp
sub $4, %esp

mov 8(%ebp), %ebx
mov 12(%ebp), %ecx

mov %ebx, -4(%ebp)

power_loop_start:
cmp $1, %ecx
je end_power
mov -4(%ebp), %eax
imul %ebx, %eax
mov %eax,-4(%ebp)
dec %ecx
jmp power_loop_start

end_power:
mov -4(%ebp), %eax
mov %ebp, %esp
pop %ebp
ret