Programación General > ASM (Ensamblador)
Duda Con Code Asm En Gcc
Emperorxdevil:
Hola a todos, verán estaba programando en C cuando pense qué podía hacer para borrar la ventana de consola (el cls de windows, vamos) en vez de hacer unos cuantos printf("\n") cutres.
Revise mis archivos y me encontre con un code en asm que lo hacía.
Su code es éste:
--- Código: Text --- Mov ax,0600h Mov bh, 07h Mov cx,0000h Mov dx,184fh Int 10h
Tras mirar como gcc trabajaba con el asm y ver que la sintaxis era AT&T
porté el code a ésto:
--- Código: Text --- void cls() { __asm__ ("movw $0x600, %ax\n" "movb $0x7, %bh\n" "movw $0x0, %cx\n" "movw $0x184f, %dx\n" "int $0x10");}
El programa me compila, pero al usar la función cls() en la linea:
--- Código: Text --- "int $0x10");
El programa de un Segmentation Fault.
Pueden decirme por qué falla ? No he portado bien el code, o es que Windows Xp no me deja usar esa interrupción ?
A ver si me pueden ayudar.
Salu2
Eternal Idol:
Ese codigo esta pensado para 16 bits, ni en Windows ni Linux te sirve.
Emperorxdevil:
Pos vaya tela, entonces debo suponer que compila pero al ejecutar es cuando falla.
Alguna idea de como posicionar el cursor coordenadas x,y en la consola de c (que no sea con gotoxy q no es ansi) ?
Porque tenia otro code en asm que hace eso, pero tambien es de 16 bits y no va a funcionar, aunque creo que debería porque si no para que quiere windows la maquina virtual de 16 bits ?
O puedo pasar ese code de alguna forma a 32 bits (y se supone que funcionará) ?
Gracias
Eternal Idol:
--- Cita de: "Emperorxdevil" ---Pos vaya tela, entonces debo suponer que compila pero al ejecutar es cuando falla.
--- Fin de la cita ---
Si, que yo sepa gcc solo genera ejecutables de 32/64 bits para PC.
--- Cita de: "Emperorxdevil" ---Alguna idea de como posicionar el cursor coordenadas x,y en la consola de c (que no sea con gotoxy q no es ansi) ?
--- Fin de la cita ---
Usando los servicios que provea el S.O. en cuestion.
--- Cita de: "Emperorxdevil" ---Porque tenia otro code en asm que hace eso, pero tambien es de 16 bits y no va a funcionar, aunque creo que debería porque si no para que quiere windows la maquina virtual de 16 bits ?
--- Fin de la cita ---
Para eso necesitarias generar un ejecutable de 16 bits.
--- Cita de: "Emperorxdevil" ---O puedo pasar ese code de alguna forma a 32 bits (y se supone que funcionará) ?
--- Fin de la cita ---
No.
Emperorxdevil:
Gracias por el soporte !
Salu2
Navegación
[#] Página Siguiente
Ir a la versión completa