C/Visual C - asm en DJGPP

 
Vista:

asm en DJGPP

Publicado por desgraciado (29 intervenciones) el 01/12/2002 02:14:39
no es igual que en borland mmm como es si puende darme un ejemplo con interrupciones ?????gracias¡¡¡¡¡¡¡¡¡¡
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
Imágen de perfil de Alejandro

Uso de ensamblador en DJGPP con interrupciones

Publicado por Alejandro (980 intervenciones) el 22/04/2025 22:22:45
El ensamblador en DJGPP (DJ's GNU Programming Platform) utiliza la sintaxis AT&T, que es diferente de la sintaxis que se usa en Borland. En Borland, se utiliza la sintaxis Intel, que puede ser más familiar para algunos programadores. A continuación, te muestro un ejemplo básico de cómo llamar a una interrupción en DJGPP utilizando ensamblador.

Ejemplo: Llamar a una interrupción de DOS en DJGPP



Este ejemplo muestra cómo utilizar la interrupción de DOS `INT 21h` para leer un carácter desde el teclado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main() {
    char c;
 
    // Llamada a la interrupción de DOS para leer un carácter
    __asm__ (
        "movb $0, %%ah\n"      // Función 0: Leer carácter
        "int $0x21\n"          // Llamar a la interrupción 21h
        "movb %%al, %0\n"      // Guardar el carácter leído en 'c'
        : "=r" (c)             // Salida: c
        :                       // Sin entradas
        : "%ah", "%al"         // Registros que se modifican
    );
 
    printf("Carácter leído: %c\n", c);
    return 0;
}

Explicación del código:



1. Incluir la biblioteca estándar: Se incluye `stdio.h` para poder usar `printf`.

2. Definir la función principal: Se define `main()` donde se ejecutará el código.

3. Declarar una variable: Se declara una variable `c` para almacenar el carácter leído.

4. Código ensamblador:
- `movb $0, %%ah`: Se mueve el valor `0` al registro `AH`, que indica que queremos leer un carácter.
- `int $0x21`: Se llama a la interrupción `21h`, que es la interrupción de DOS para servicios de entrada/salida.
- `movb %%al, %0`: Se mueve el valor del registro `AL` (que contiene el carácter leído) a la variable `c`.

5. Imprimir el resultado: Se utiliza `printf` para mostrar el carácter leído.

Notas:



- Asegúrate de que tu entorno de DJGPP esté configurado correctamente para poder ejecutar este código.
- Este ejemplo es específico para DOS y puede no funcionar en entornos modernos sin un emulador o un entorno compatible con DOS.
- La sintaxis de ensamblador en DJGPP es diferente a la de Borland, así que asegúrate de familiarizarte con la sintaxis AT&T si estás acostumbrado a Intel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar