Programación General > ASM (Ensamblador)

 Duda Con Code Asm En Gcc

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa