A menudo veo INT 21H en lenguaje ensamblador, ¿qué significa? ¿Cuándo debo escribir? ¿Dónde debería estar escrito?
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 p>
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 p>
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 p>
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) p >
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 p>
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 p>
=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 p>
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