Red de conocimiento informático - Material del sitio web - A menudo veo INT 21H en lenguaje ensamblador, ¿qué significa? ¿Cuándo debo escribir? ¿Dónde debería estar escrito?

A menudo veo INT 21H en lenguaje ensamblador, ¿qué significa? ¿Cuándo debo escribir? ¿Dónde debería estar escrito?

21H es un número de interrupción

Se puede decir que es como un menú, por ejemplo, Archivo y Editar en el navegador IE

Los archivos incluyen Nuevo, Abrir, etc.

Este es el número de función

Está representado por mov ah y xx

Si hace clic en el archivo en el navegador IE

se muestra el contenido del archivo

Entonces 21h debe usarse con su número de función

Es solo un número de función

Es un número de función. Función

Por lo tanto, el número de interrupción de 21h debe usarse con el número de función

mov ah, xx

int 21h

-- -- --------------------------

Por supuesto, también existen métodos que combinan el número de función y la interrupción. número en uno (opinión personal)

Por ejemplo

int 20h (llamar a las 20h interrumpir regresar)

Muchos estudiantes que son nuevos en el lenguaje ensamblador pueden estar confundidos acerca la instrucción INT 21H y no lo sé. ¿Qué significa? Usemos un programa simple para explicarlo:

Por ejemplo, necesita ingresar el teclado y hacer eco.

El valor de AH debe obtenerse consultando la tabla, de la siguiente manera

Instrucción: MOV AH, 01

INT 21H

A través de estas dos instrucciones, los caracteres ingresados ​​se almacenarán en AL.

Tabla: llamada de función del sistema DOS INT 21H

Parámetros de llamada de función AH parámetros de retorno

00 terminación del programa (igual que INT 20H) CS=prefijo del segmento del programa

01 Entrada y eco por teclado AL=entrada de caracteres

02 Salida de display DL=salida de caracteres

03 Entrada de comunicación asíncrona AL=entrada de datos

04 Salida de comunicación asíncrona salida de comunicación DL=datos de salida

05 Salida de impresora DL=carácter de salida

06 E/S de consola directa DL=FF (entrada)

DL=carácter (salida) AL=carácter de entrada

07 Entrada por teclado con visualización de retorno de carro AL=Ingresar carácter

08 Entrada por teclado AL= con visualización de retorno de carro Ingresar caracteres

08 Entrada de teclado (sin eco)

Detectar Ctrl-break AL=Ingresar caracteres

09 Mostrar cadena DS: DX=Dirección de cadena

'$' finaliza la cadena

0Una entrada de teclado al buffer DS:DX=primera dirección del buffer

(DS:DX)=buffer máximo Número de caracteres (DS:DX 1) = número real de caracteres ingresados

0B Verifique el estado del teclado AL=00 con entrada

AL=FF sin entrada

0C Borre el búfer de entrada y solicitar la función de entrada especificada AL=número de función de entrada

(1, 6, 7, 8, A)

0D reinicio del disco Borrar el búfer de archivos

0E Especifique la unidad de disco predeterminada actual DL=número de unidad 0=A, 1=B,...AL=número de unidad

0F Abrir archivo DS: DX= Primera dirección FCB AL=00 archivo encontrado

Archivo AL=FF no encontrado

10 Cerrar archivo DS: DX=FCB primera dirección AL=00 modificación del directorio exitosa

Archivo AL=FF no encontrado en el directorio

11 Encuentre la primera entrada del directorio DS: DX=FCB primera dirección AL=00 Modificación del directorio exitosa

AL=Directorio FF no encontrado

11 Encuentre el primer directorio entrada DS: DX=FCB primera dirección AL=00 encontrada

AL=FF no encontrada

12 Busque la siguiente entrada del directorio DS :DX=FCB primera dirección

(Archivo con * o ?) AL=00 encontrado

AL=FF no encontrado

13 Eliminar archivo DS: DX =FCB primera dirección AL=00 eliminado exitosamente

AL=FF no encontrado

14

Lectura secuencial

DS: DX= Primera dirección FCB

AL=00 Lectura exitosamente

=01 Fin del archivo, no hay datos en el registro

=02 Espacio DTA insuficiente

=03 El archivo finaliza y el registro está incompleto

15 Escribe DS secuencialmente: DX=FCB primera dirección AL=00 Escribe correctamente

=01 El disco está lleno

=02 El espacio DTA es insuficiente

16 Crear archivo DS: DX=FCB primera dirección AL=00 escrito correctamente

=01 Disco lleno

=02 Espacio DTA insuficiente

16 Crear archivo DS: DX = primera dirección FCB AL=00 Creado correctamente

=FF No hay espacio en disco

17 Cambiar nombre de archivo DS: DX=primera dirección FCB

( DS: DX 1

)=nombre de archivo antiguo

(DS: DX 17)=nombre de archivo nuevo AL=00 exitoso

AL=FF fallido

19 Obtener el disco predeterminado actual Unidad AL=Letra de unidad predeterminada 0=A, 1=B, 2=C,...BX=bytes de identificación FAT

DX=Número de clústeres en la unidad predeterminada

1C Obtenga la información FAT de cualquier unidad DL = número de unidad como se indica arriba

21

Lectura aleatoria

DS: DX=primera dirección FCB

AL=00 Lectura exitosa

=01 Fin del archivo

=02 Desbordamiento del buffer

=03 Buffer lleno

22 Escritura aleatoria DS: DX=FCB primera dirección AL=00 escritura exitosa

=01 disco lleno

=02 desbordamiento del búfer

23 determinar el tamaño del archivo DS: DX=FCB primera dirección AL=00 Éxito (la longitud del archivo se completa en FCB)

AL=FF no encontrado

24 Establezca un número de registro aleatorio DS: DX= primera dirección de FCB

25 Establecer vector de interrupción DS: DX= vector de interrupción

AL= número de tipo de interrupción

26 Crear prefijo de segmento DX= nuevo prefijo de segmento

27

Lectura aleatoria de bloque

DS: DX=Primera dirección FCB

CX=número de registro AL=00 leído con éxito

=01 Fin del archivo

=02 El búfer es demasiado pequeño, la transferencia finaliza

=03 Desbordamiento del búfer

28 Bloque aleatorio escrito en DS: DX=FCB Primera dirección

CX=Número de registros AL=00 Escritura exitosa

=01 Disco lleno

=02 Desbordamiento de buffer

29 Analizar el nombre del archivo ES: ESX primera dirección

CX=recuento de registros AL=00 escritura exitosa

=01 disco lleno

=02 desbordamiento del buffer

p>

29 Nombre del archivo de análisis ES: DI=Primera dirección FCB

DS: SI=cadena ASCIIZ

AL=Indicador de análisis de control AL=00 archivo estándar

=01 Múltiple archivos de tinte

=02 Símbolo de disco ilegal

2A Fecha de extracción CX=año

DH:DL=mes:día (binario)

2B Establecer fecha CX: DH: DL=Año: Mes: Día AL=00 Éxito

=FF Inválido

2C Hora de recuperación CH: CL= Hora: Minuto

DH: DL=Segundos: 1/100seg

2D Establecer hora CH: CL=Hora: Minuto

DH: DL=Segundos: 1 /100seg /100 segundos AL= 00 Exitoso

=FF Inválido

2E Configure el indicador de lectura/escritura automática del disco AL=00 Indicador de cierre

AL=01 Indicador de apertura

2F Obtener la primera dirección ES del buffer del disco: BX=Primera dirección del buffer

30 Obtener el número de versión de DOS AH=Número de versión, AL=Versión

31 Fin y estancia AL=código de retorno

DX=

Tamaño de residencia

33

Ctrl-Detección de interrupción

AL=00 Obtener estado

=01 Estado de lugar (DL)

DL=00 Desactivar detección

=01 Activar detección DL=00 Desactivar detección Ctrl-desconexión

=01 Activar detección Ctrl-desconexión

35 Obtener vector de interrupción AL = tipo de interrupción ES: BX = vector de interrupción

36

Obtener espacio disponible en disco

DL=letra de unidad

0=Valor predeterminado, 1=A, 2=B,...

Éxito: AX=Número de sectores por cluster

BX=Número de clusters activos

p>

CX=Número de bytes por sector

DX=Número total de clusters

Fallo: AX=FFFF

Configuración 38/ obteniendo información del país DS: DX=título del área de información BX=código de país (código de prefijo telefónico internacional)

Código de error AX

3C Crear archivo DS: DX=dirección de cadena ASCIIZ

CX=Propiedades del archivo Correcto: AX=Código de archivo

Error: AX=Código de error

3D

Abrir archivo

DS : DX=dirección de cadena ASCIIZ

AL=0 lectura

=1 escritura

DX: DX=dirección de cadena ASCIIZ

AL=0 Leer

Agregar=1 Escribir

Agregar=1 Escribir=1 Escribir

=3 Leer/escribir exitosamente: AX=Código de archivo

Error: AX=código de error

3E No se pudo cerrar el archivo BX= código de archivo: AX=código de error

3F

Leer archivo o dispositivo

DS: DX=Dirección del búfer de datos

BX=Nombre en clave del archivo

CX=Nombre en clave del archivo

CX=Número de bytes leídos correctamente leer:

AX=Número de bytes realmente leídos

AX=0 Fin del archivo alcanzado

Error de lectura: AX= código de error

40 Escribir archivo o dispositivo DS: DX= dirección del buffer de datos

BX=código de archivo

CX=número de bytes escritos escritos exitosamente.

:

AX=número real de bytes escritos

Error de escritura: AX=código de error

41 Eliminar archivo DS: DX=Dirección de cadena ASCIIZ Éxito: AX= 00

Error: AX=Código de error (2, 5)

42

Mover puntero de archivo

BX= Código de archivo

CX=Código de archivo

CX: DX=Desplazamiento

AL=método de movimiento (0: desplazamiento absoluto desde el encabezado, 1: desplazamiento relativo desde la posición actual, 2: desplazamiento absoluto desde el final del archivo) Éxito: DX: AX=Nueva posición del puntero del archivo

Error: AX=Código de error

43

Colocar/buscar atributos del archivo

DS.DX=Dirección de cadena ASCIIZ

AL=0 Obtener atributos de archivo

AL=1 Colocar atributos de archivo

CX=Archivo Atributo correcto: CX=Atributo de archivo

Error: CX= Código de error

44

Control de E/S de archivos del dispositivo

BX= Código de archivo

AL=0 Obtener estado

=1 Establecer estado DX

=2 Leer datos

= 3 Escribir datos

=6 Obtener estado de entrada

=7 Obtener estado de salida DX=información del dispositivo

45 Copiar código de archivo BX= código de archivo 1 Éxito: AX = Código de archivo 2

Error: AX=Código de error

46 Copiar manualmente el código de archivo BX= Código de archivo 1

CX= Código de archivo 2 falló: AX= Código de error

47 Obtener el nombre de la ruta del directorio actual DL= número de unidad

DS:SI=dirección de cadena ASCIIZ (DS:SI)=cadena ASCIIZ

Fallo: AX=Código de error

48 Asignar espacio de memoria BX=Capacidad de memoria solicitada Éxito: AX=Primera memoria asignada

Error: BX=Memoria máxima disponible

49 No se pudo liberar espacio de contenido ES=dirección del segmento inicial de memoria: AX= código de error

4A Ajustar bloque de memoria asignado ES=dirección inicial de memoria original

BX= No se pudo solicitar capacidad: BX=espacio máximo disponible

AX= Código de error

4B

Programa de ensamblaje/ejecución

DS: DX= Dirección de cadena ASCIIZ

ES : BX=dirección del encabezado del área de parámetros

AL=0 ejecución de carga

AL=3 carga no ejecutada fallida: AX=código de error

4C termina con código de retorno AL=código de retorno

4D toma el código de retorno AX=código de retorno

4E Encuentra el primer DS coincidente: DX=dirección de cadena de caracteres ASCIIZ

CX=Atributo AX =Código de error (02, 18)

4F Encuentra el siguiente elemento coincidente DS: DX=Dirección de cadena ASCIIZ

( Nombre de archivo con ?DI=cadena ASCIIZ (nueva) AX=error código (03, 05, 17)

57 Establecer/recuperar fecha y hora del archivo BX=nombre clave del archivo

A

L=0 Lectura

AL=1 Establecer (DX:CX) DX:CX= Fecha y hora

Error: AX= Código de error

58 Obtener devolución /Colocar código de estrategia de asignación AL=0 Código de recuperación

AL=1 Código de lugar (BX) Éxito: AX=Código de estrategia

Error: AX= Código de error

59

59

60

60

60

61

62

63

66

64

Esta es la primera vez que un código de política de asignación se establece en un código de asignación.

59

Obtener código de error extendido

AX=código de error extendido

BH=tipo de error

BL =Acción recomendada

CH=Ubicación del error

5A Crear archivo temporal CX=Propiedades del archivo

DS.DX=Dirección de cadena ASCIZ

64

Esta es la primera vez que configuramos el código de estrategia de asignación: DX=dirección de cadena ASCIIZ exitosa: AX= nombre de código de archivo

Error: AX=código de error

5B Crear un nuevo archivo CX= Atributos de archivo

DS: DX=Dirección de cadena ASCIIZ Éxito: AX=Nombre de código de archivo

Error: AX=Código de error

5C

Control de acceso a archivos

AL=00 Bloqueado

=01 en

BX=Código de archivo

CX: DX =Desplazamiento del archivo

SI: DI=Longitud del archivo Fallo: AX=Código de error

62 Toma prefijo de segmento BX=Dirección PSP