• Domingo 22 de Diciembre de 2024, 15:35

Autor Tema:  Duda Con Code Asm En Gcc  (Leído 2438 veces)

Emperorxdevil

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Duda Con Code Asm En Gcc
« en: Jueves 26 de Julio de 2007, 01:24 »
0
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
  1.  
  2. Mov ax,0600h
  3. Mov bh, 07h  
  4. Mov cx,0000h
  5. Mov dx,184fh
  6. Int 10h
  7.  
  8.  

Tras mirar como gcc trabajaba con el asm y ver que la sintaxis era AT&T
porté el code a ésto:

Código: Text
  1.  
  2.  
  3. void cls() {
  4.  
  5.  __asm__ ("movw $0x600, %ax\n"
  6.               "movb $0x7, %bh\n"
  7.               "movw $0x0, %cx\n"
  8.               "movw $0x184f, %dx\n"
  9.               "int $0x10");
  10. }
  11.  
  12.  
  13.  

El programa me compila, pero al usar la función cls() en la linea:

Código: Text
  1.  
  2. "int $0x10");
  3.  
  4.  

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

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Duda Con Code Asm En Gcc
« Respuesta #1 en: Jueves 26 de Julio de 2007, 19:22 »
0
Ese codigo esta pensado para 16 bits, ni en Windows ni Linux te sirve.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Emperorxdevil

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda Con Code Asm En Gcc
« Respuesta #2 en: Jueves 26 de Julio de 2007, 23:17 »
0
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

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Duda Con Code Asm En Gcc
« Respuesta #3 en: Jueves 26 de Julio de 2007, 23:40 »
0
Cita de: "Emperorxdevil"
Pos vaya tela, entonces debo suponer que compila pero al ejecutar es cuando falla.

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) ?

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 ?

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á) ?

No.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Emperorxdevil

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda Con Code Asm En Gcc
« Respuesta #4 en: Viernes 27 de Julio de 2007, 00:57 »
0
Gracias por el soporte !

Salu2

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Duda Con Code Asm En Gcc
« Respuesta #5 en: Viernes 27 de Julio de 2007, 07:46 »
0
De nadas  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Duda Con Code Asm En Gcc
« Respuesta #6 en: Viernes 27 de Julio de 2007, 09:00 »
0
los servicios que brinda linux son de la interrupcion 0x80

aca tenes una breve referencia

http://tiger.la.asu.edu/Quick_Ref/Linux_Syscall_quickref.pdf