Programación en ensamblador

Page 85

CC-BY-SA • PID_00178132

85

Programación en ensamblador (x86-64)

Ejemplo A continuación se muestra otro ejemplo de acceso a puertos de E/S: se trata de leer el registro de datos del teclado, puerto 60h. El código siguiente hace un bucle que muestra el código de la tecla pulsada (scancode) hasta que se pulsa la tecla ESC. El registro 60h almacena en los 7 bits de menos peso el código de cada tecla que se pulsa. #include <stdio.h> #include <stdlib.h> #include <sys/io.h> #define KBD_DATA 0x60 int main(){ int salir=0; char data; if (ioperm(KBD_DATA, 1, 1)) { perror("ioperm"); exit(1);

}

}

while (salir==0){ data=inb(KBD_DATA); //se muestra el código de la tecla pulsada, scancode //se hace una AND lógica ('&') para tomar solo los // 7 bits menos significativos del dato leído printf("tecla: %0x\n", fecha & 0b01111111); //se pulsa ESC para salir del bucle, scancode=1 if ((data & 0b01111111) == 1) salir=1; } if (ioperm(KBD_DATA, 1, 0)) { perror("ioperm"); exit(1); }

5.6. Controlar la consola En Linux no existen funciones estándar o servicios del sistema operativo para controlar la consola, por ejemplo, para mover el cursor. Disponemos, sin embargo, de la posibilidad de escribir secuencias de escape que nos permiten manipular el emulador de terminal de Linux, entre otras operaciones: mover el cursor, limpiar la consola, etc.

Una secuencia de escape es una cadena de caracteres que empieza con el carácter ESC (que corresponde al código ASCII 27 decimal o 1Bh).

Las principales secuencias de escape son las siguientes: 1)�Mover�el�cursor. Para mover el cursor hay que considerar que la posición inicial en un terminal Linux corresponde a la fila 0 de la columna 0; para mover el cursor escribiremos la cadena de caracteres siguiente: ESC[F;CH


Turn static files into dynamic content formats.

Create a flipbook

Articles inside

6.8. IDIV: división entera con signo

2min
pages 98-99

5.7.3. Retorno al sistema operativo (exit

0
page 90

6. Anexo: manual básico del juego de instrucciones

1min
page 91

5.6. Controlar la consola

1min
page 85

5.7. Funciones del sistema operativo (system calls

1min
page 86

5.7.1. Lectura de una cadena de caracteres desde el teclado

1min
page 87

5.4.4. Llamadas a subrutinas y paso de parámetros desde C

6min
pages 78-82

4.2.6. Apuntadores

1min
page 56

4.2.4. Control de flujo

3min
pages 51-53

4.2.5. Vectores

2min
pages 54-55

4.2.3. Operadores

1min
page 50

4.1.1. Generación de un programa ejecutable

1min
page 47

4.2.2. Variables

1min
page 49

3.4.2. Modos de direccionamiento

7min
pages 39-42

3.4.3. Tipos de instrucciones

3min
pages 43-45

3.4.1. Tipos de operandos de las instrucciones x86-64

5min
pages 36-38

3.2.3. Definición de otros elementos

2min
pages 31-32

2. Lenguajes de programación

1min
page 22

1.1.2. Modo heredado de 16 y 32 bits

1min
page 14

1.2.1. Organización de la memoria

1min
pages 16-17

2.1. Entorno de trabajo

2min
pages 23-24

1.2.2. Registros

5min
pages 18-21

Objetivos

0
pages 9-10

3.2.2. Definición de variables

5min
pages 27-30

Introducción

2min
pages 7-8
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.