Sie sind auf Seite 1von 44

Universidad de El Salvador

Facultad de Ingeniera y Arquitectura


Escuela de Ingeniera Elctrica
Sistemas Digitales Programables

Laboratorio No. 3:
Programacin en Lenguaje Ensamblador
8086/88/286 en el ambiente DOS

Catedrtico:
Ing. Ricardo Cortez
Instructor:
Br. David Martnez
Bachilleres: Carnet:
Hernndez Nieto, Jairo Alejandro HN14001
Sorto Castillo, Jairo Josu SC14009

Porcentaje Nota
Introduccin 5%
Objetivos 5%
Marco Terico 10%
Desarrollo de la practica 10%
Asignaciones 40%
P1 8%
P2 8%
P3 8%
P4 8%
P5 8%
Conclusiones 30%
Nota final

Ciudad Universitaria, viernes 07 de abril del 2017


Lab. 3 SDG115

INDICE

Introduccin:.................................................................................. 3
Objetivo General:........................................................................... 4
Objetivos Especficos:.................................................................. 4
Marco terico:................................................................................ 5
Descripcin de la prctica:............................................................7
Asignaciones:................................................................................8
Conclusiones:..............................................................................31

2
Lab. 3 SDG115

Introduccin:

El presente informe de laboratorio contiene la prctica nmero tres de la


asignatura Sistemas Digitales Programables, dicha prctica consta de
continuar nuestro proceso de aprendiza en programacin en lenguaje
ensamblador 8086/88, e intentando agregar el 80286 en el ambiente DOS
(sigla de Disk Operating System, "Sistema Operativo de Disco" o "Sistema
Operativo en Disco").

Como ya sabemos los microprocesadores 8086 y 88 de Intel son precursores


de los actuales, la versin inmediatamente superior a estos es la 80286, para
simular el ambiente de trabajo con los microprocesadores mencionados
utilizaremos el programa el programa Macro-ensamblador 80X86, utilizado
en el laboratorio 2 de esta asignatura adems del EMU8086 utilizado en el
laboratorio 1.

El principio bsico de la prctica es conocer las distintas formas en las que un


programa en ensamblador se puede correr en el ambiente DOS, las formas
de pende de varios factores como el tamao del cdigo, la portabilidad e
interaccin con otros programas, adems de seguir estudiando el uso de
directivas e interrupciones que faciliten la elaboracin de programas.

Las directivas son rdenes para el programa ensamblador y no, como


muchos pensaran, instrucciones para el microprocesador. Las directivas
pueden ser usadas para definir smbolos, reservar memoria para
almacenamiento temporal y realizar una variedad de funciones que tienen
validez durante el tiempo de ensamble; mientras que las interrupciones se
usan para suspender la ejecucin normal de un programa, generalmente
como respuesta a una seal externa. Cuando se da una interrupcin, el
control se transfiere a una parte especial del programa denominado rutina.

3
Lab. 3 SDG115

Cuando esta finaliza, el control regresa al punto donde se interrumpi el


programa que se estaba ejecutando.

Este reporte consta de un desarrollo de la prctica donde se describe lo


realizado en la misma, una serie de asignaciones propuestas por la catedra
de la asignatura y las conclusiones de los alumnos aparte de los elementos
fundamentales de un reporte.

Todo esto se detalla a continuacin.

4
Lab. 3 SDG115

Objetivo General:

Conocer las distintas formas en las que un programa escrito en el


ambiente del sistema operativo DOS se puede presentar y los
parmetros de uso de estas.

Objetivos Especficos:
Estudiar el uso de directivas ms populares y comunes en el
MASM.

Analizar el funcionamiento de las interrupciones en ensamblador


y conocer las funciones especficas de estas.

Explicar con claridad las asignaciones planteadas.

5
Lab. 3 SDG115

Marco terico:

DOS (sigla de Disk Operating System, "Sistema Operativo de Disco" y


"Sistema Operativo en Disco") es una familia de sistemas operativos para
computadoras personales (PC). Creado originalmente para computadoras de
la familia IBM PC, que utilizaban los procesadores Intel 8086 y 8088, de 16
bits, siendo el primer sistema operativo popular para esta plataforma.
Contaba con una interfaz de lnea de comando en modo texto o
alfanumrico, va su propio intrprete de rdenes, command.com.
Probablemente la ms popular de sus variantes sea la perteneciente a la
familia MS-DOS, de Microsoft, suministrada con buena parte de los
ordenadores compatibles con IBM PC, en especial aquellos de la familia Intel,
como sistema operativo independiente o nativo, hasta la versin 6.22,
frecuentemente adjunto a una versin de la interfaz grfica de Windows de
16 bits, como las 3.1x.

Existen varias versiones de DOS:


MS-DOS, de Microsoft, es el ms conocido.
PC-DOS, de IBM.
DR-DOS, de Digital Research, que pasara posteriormente a Novell
(Novell DOS 7.0), luego a Caldera y finalmente a DeviceLogics.
FreeDOS, es el ms reciente, de licencia libre y cdigo abierto. Puede
hacer, en su versin para GNU/Linux y UNIX, de emulador de MS-DOS
bajo sistemas de este tipo.
Con la aparicin de los sistemas operativos con interfaz grfica de usuario
(GUI), del tipo Windows, en especial aquellos de 32 bits, del tipo Windows 95,
el DOS ha ido quedando relegado a un segundo plano, hasta verse reducido
al mero intrprete de rdenes, y a las lneas de comandos (en especial en
ficheros de tipo .PIF y .BAT), como ocurre en los sistemas derivados de
Windows NT.

6
Lab. 3 SDG115

Las directivas son rdenes para el programa ensamblador y no, como


muchos pensaran,
instrucciones para el microprocesador. Las directivas pueden ser usadas para
definir smbolos,
reservar memoria para almacenamiento temporal y realizar una variedad de
funciones que tienen
validez durante el tiempo de ensamble. A diferencia de las instrucciones en
lenguaje ensamblador,
la mayora de directivas no generan cdigo objeto.
El macroensamblador tiene cerca de 60 directivas diferentes. En esta
prctica discutiremos el ms
comunes, las cuales las dividiremos en tres grupos:
1. Directivas de Datos.
a. Directivas de definicin de smbolos
b. Directivas de definicin de datos (en memoria)
c. Referencias externas
d. Referencias de especificaciones de procedimiento/segmentos
e. Directivas de control de ensamble
f.
2. Directivas de Listado.

7
Lab. 3 SDG115

Estas se utilizan para indicarle al ensamblador cmo penetrar el listado


de ensamble.
3. Directivos de Modo.

Las interrupciones se usan para suspender la ejecucin normal de un


programa, generalmente como
respuesta a una seal externa. Cuando se da una interrupcin, el control se
transfiere a una parte
especial del programa denominado rutina. Cuando esta finaliza, el control
regresa al punto donde
se interrumpi el programa que se estaba ejecutando.
Existen tres tipos de interrupciones: RESET, interrupciones por hardware e
interrupciones por
software.

8
Lab. 3 SDG115

Descripcin de la prctica:
1. Escriba el programa del Apndice B con formato .COM, ensmblelo y
enlcelo segn el procedimiento escrito en la prctica anterior.

1. ;PROGRAMA.COM:

2. NAME PRUEBA

3. ;versin de un archivo .COM para una simple impresin

4. CSEG SEGMENT PARA PUBLIC 'code'

5. ORG 100H ;origen del programa

6. ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG

7. ;----------------------------------procedimiento------------------------

8. CODIGO PRoC NEAR

9. MOV DX,OFFSET MENSAJE ;obtener posicin del mensaje

10. MOV AH,9 ;mostrar el mensaje

11. INT 21H

12. MOV AL,0 ;cdigo de retorno

13. MOV AH,4CH ;terminar

14. INT 21H

15. CODIGO ENDP

16. ;----------------------------------Fin del procedimiento-----

17. MENSAJE DB 'Experimento del programador',0DH,0AH,'$'

18. CSEG ENDS

19. END CODIGO

a) Cree el programa con extensin .COM para crear un programa .COM a


partir de uno .EXE usando el programa BIN del DOS el formato general a
seguir es: BIN PROGR.EXE PROGR.COM

9
Lab. 3 SDG115

Al compilar el cdigo del apndice B no nos presenta errores el MASM.

Se obtuvieron estos archivos:

Se cre el programa con extensin .COM para crear un programa .COM a


partir de uno .EXE se us el programa BIN del DOS el formato general a
seguir fue: exe2bin PROGR.EXE PROGR.COM, como se muestra en la
siguiente imagen:

b) Imprima el cdigo fuente y el archivo. LST creado por el ensamblador.

10
Lab. 3 SDG115

c) Ejecute el programa.

2. Escriba el programa del Apndice A con formato.EXE, ensmblelo y


enlcelo segn el procedimiento escrito en la prctica anterior. Adems,
pruebe diferentes posibilidades de indicaciones al ensamblador para la gua
CSEG SEGMENT PARA. Haga pruebas tambin sin definir segmentos
explcitos de pila (stack) ni de datos, pero siempre logrando que el programa
muestre el mensaje requerido. Cdigo:

1. NAME PRUEBA

11
Lab. 3 SDG115

2. ; Versin de un archivo .EXE para una simple impresin

3. CSEG SEGMENT PARA PUBLIC 'code'

4. ASSUME CS:CSEG,DS:DSEG,SS:STACK

5. ;-------------------------------------Segmento de cdigo----------------

6. CODIGO PROC FAR

7. MOV AX,DSEG ;Fijar segmento de datos

8. MOV DS,AX

9. MOV DX,OFFSET MENSAJE ;obtener posicin del mensaje

10. MOV AH,9 ;mostrar el mensaje

11. INT 21H

12. CODIGO ENDP

13. CSEG ENDS

14. ;---------------------------------------Segmento de datos---------

15. DSEG SEGMENT PARA 'data'

16. MENSAJE DB 'Experimento del programador' , 0DH, 0AH, '$'

17. DSEG ENDS

18. ;---------------------------------------segmento de fila----------

19. STACK SEGMENT PARA STACK 'STACK'

20. DB 20 DUP ('STACK')

21. STACK ENDS

22. end

23. END CODIGO

12
Lab. 3 SDG115

Al ejecutar el programa:

Excluyendo PARA:

13
Lab. 3 SDG115

Quitando el segmento DSEG:

ARREGLANDO para que sin DSEG imprima:

14
Lab. 3 SDG115

Quitando Stack:

15
Lab. 3 SDG115

Asignaciones:

1 . Para qu sirve el Listado de los programas y como se obtiene:


Al ensamblar un cdigo se generan una serie de archivos entre ellos uno con
extensin .lst al que llamamos listado. Un archivo listado contiene el cdigo
mquina y el puntero de programa asociado a cada sentencia. Adems,
contiene los posibles errores que se pudieran generar durante la compilacin,
por lo que nos permitira realizar un seguimiento del mismo para detectar
errores y depurar.
Para obtenerlo como se hizo en el desarrollo en la prctica se obtuvo
compilando el cdigo con la instruccin ml /Zl /Fl /Fm JAIRO.ASM JAIRO.ASM
es el nombre del archivo, con ello se crean 4 archivos adicionales, el
ejecutable .exe, el objeto .obj, el listado .lst y el mapa .MAP:

Para abrir el listado. lst solo debemos darle click y se abrir por defecto con
el navegador dado que as esta predeterminado en mi PC. Esto resulta:

16
Lab. 3 SDG115

2. Escriba un programa equivalente en formato .EXE el cual solicite


una contrasea de acceso, (al momento de introducir la contrasea
debern mostrarse en pantalla en lugar del carcter
introducido, mnimo 4 caracteres) si la contrasea es correcta,
deber imprimir en pantalla un mensaje con el siguiente contenido:
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERIA Y ARQUITECTURA
ESCUELA DE INGENIERIA ELECTRICA
SISTEMAS DIGITALES PROGRAMABLES
Los nombres y carnet de los autores en renglones a parte utilizando
interrupciones (sin acceder directamente los chips de video). Si no
es correcta, imprimir "CONTRASEA INCORRECTA" y solicitar la
contrasea de nuevo.
El mtodo ms usado para estas acciones es usar las funciones de la
interrupcin 21H por lo cual se describirn alguna de ellas.
EL cdigo se describe a continuacin:

1. .8086

2. .model small

3. .DATA

4. msg_algo db "Ingrese contrasena",10,13,24h

5. CONTR DB "contrasena",'$'

6. temp_contr db 25 dup(?)

7. msg_ter db "UNIVERSIDAD DE EL SALVADOR",10,13,"FACULTAD DE INGENIERIA Y


ARQUITECTURA",10,13,"ESCUELA DE INGENIERIA ELECTRICA",10,13,"SISTEMAS
DIGITALES PROGRAMABLES",10,13,24h

8. msg_incorrecto db "Contrasena incorrecta.",10,13,24h

9. msg_nombres db "Jairo Josue Sorto Castillo",10,13,"Jairo Alejandro


Hernandez Nieto",10,13,24h

10. .CODE

11. IN_a_si_PAS PROC NEAR; esta funcion introduce lo digitado por el


usuario a

17
Lab. 3 SDG115

12. ; la variable temp_contr

13. mov si,0

14. INTR_datosp:

15. MOV AH,07H

16. INT 21H

17. cmp al,0dh ; si lo digitado es enter, el usuario termino de


digitar,

18. je seguir ;y ya no se agrega nada mas a temp_contr

19. MOV temp_contr[SI],AL;con esto se guarda en el lugar del arreglo


que apunte si

20. MOV AH,02H

21. MOV DL,'*'

22. INT 21H

23. inc SI

24. jmp INTR_DATOSp

25. seguir:

26. inc si

27. mov temp_contr[si],'$'

28. MOV AH,02 ; PONDRA UNA LINEA NUEVA DESPUES DE INTRODUCIR LOS DATOS

29. MOV DL,10

30. INT 21H

31. MOV DL,13

32. INT 21H

33. RET

34. IN_A_SI_PAS ENDP

35.

18
Lab. 3 SDG115

36. cmpr_pass proc near;funcion que compara lo de temp_contr con la


contrasena

37. password:

38. mov cx,10

39. mov si,offset contr

40. mov di,offset temp_contr

41. repe cmpsb

42. jz cnt_correcta ; si es verdadero se salta a imprimir el texto

43. jmp errorusuario; si es falso se vuelve a pedir la contrasena

44.

45. ;CMPR_USERAC ENDM

46. errorusuario:

47. mov ah,09h

48. mov dx,offset msg_incorrecto

49. int 21h

50. jmp inicio2

51. cmpr_pass endp

52.

53.

54. inicio2:

55. mov ax,@data

56. mov ds, ax

57. mov es, ax

58. mov ah,09h

59. MOV DX, OFFSET MSG_algo

60. INT 21H

19
Lab. 3 SDG115

61. call IN_a_si_PAS

62. call cmpr_pass

63. cnt_correcta:

64. mov ah,09h

65. mov dx, offset msg_ter

66. int 21h

67. mov dx, offset msg_nombres

68. int 21h

69. .exit

70. END inicio2

Como se observa en la pantalla se tal ingresar la contrasea incorrecta el


programa y la detecta, y le vuelve a solicitar la contrasea al usuario.

3. Describa las ventajas y/o desventajas del programa ensamblador


turbo assembler TASM y diga cuales son los cambios que presenta el
formato para programas .EXE. Escriba un ejemplo .exe en el formato
para el programa turbo assembler TASM. Ensamble, enlace y ejecute
el programa.
Fue la oferta de Borland en el mercado de herramientas de programacin
en lenguaje ensamblador para la familia de los microprocesadores x86. Como
se pudiera esperar, trabajaban bien con los compiladores de lenguaje de alto
nivel de Borland para los PC, como Turbo C, Turbo BASIC, Turbo Prolog y Turbo
Pascal. Junto con el resto de suite de lenguajes de programacin Turbo. Turbo
20
Lab. 3 SDG115

Assembler es mantenido y empaquetado por Embarcadero Delphi y C+


+Builder.
Ventajas:
Trae un debugger llamado Turbo Debugger, es un avanzado depurador a
nivel de archivo fuente, diseado para ser usado en archivos generados
por compiladores y enlazadores de la empresa Borland.
Permite el uso de libreras, las cuales son colecciones de archivos objetos,
agrupados en una sola unidad. Los programas para manejo de libreras
permiten la creacin y mantenimiento de las mismas. Para el manejo de
estas existe Turbo libraran(TLIB), con la cual es posible aadir eliminar,
extraer y reemplazar mdulos objetos y mostrar el contenido de una
librera.
Las opciones a la hora del ensamblaje nos son de bastante utilidad, por
ejemplo:
o El archivo de referencia cruzada, que contiene informacin acerca
de cada smbolo empleado en el programa mostrando el nmero de
lnea donde fue declarado y todos donde se haga referencia el.
o El enlazador, el cual se encarga de combinar uno o ms archivos
objetos en uno ejecutable, que permiten organizar grandes
programas en pequeos mdulos fuente.

Turbo assembler proporciona facilidades extensas y poderosas para la


adicin de rutinas en lenguaje ensamblador a programas escritos en turbo
PASCAL
Con las caractersticas de alto nivel de las ayudas de TASM 3.0, permiten
la implementacin de la programacin orientada a objetos, tambin nos
permite ensamblar los archivos de cdigo fuente del MASM por medio de
su modo MASM
Diferencias de EXE con COM:
A diferencia de los archivos EXE, los COM tienen una estructura muy simple y
almacenan en forma directa y lineal la imagen de memoria que ser un
programa. Solamente pueden almacenarse en archivos COM los programas
que quepan en un solo segmento.
El archivo de formato file tena muchos problemas entre los cuales el
programa no poda ser mayor de 64KB, no posea un formato, ya que solo era
una imagen de memoria , esta especie de formato fue trado de CP/M ,
cuando se cargaba un programa COM, el cargador de programa solo traa el
archivo en la memoria sin cambiar y luego saltaba al primer byte de memoria
qu era cargado al offset 0x100 relativo al valor del segmento registrado, la

21
Lab. 3 SDG115

imagen tena que ser auto cambiante de posicin, sin chequeos solo lo lea y
trabajaba.
El archivo EXE normal contiene un encabezado o bloque de informacin de
control con un formato caracterstico. El tamao de dicho encabezado puede
variar dependiendo del nmero de instrucciones que deben ser re localizadas
al momento de la carga del programa, pero siempre ser un mltiplo de 512.
El cambio necesario para que funcione el cdigo al compilarlo y ejecutarlo es
aadir la directiva .STARTUP, que como bien dice su nombre arranca el
programa. Sin ella nos diera el siguiente mensaje al ocupar TLINK:
C:TASMBIN>Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Fatal: No program entry point
[/code]

1. .MODEL small

2. .STACK 100h

3. .DATA

4. HelloMessage DB 'Hello, world',13,10,'$'

5. .CODE

6. .startup

7. mov ax,@data

8. mov ds,ax ;set DS to point to the data segment

9. mov ah,9 ;DOS print string function

10. mov dx,OFFSET HelloMessage ;point to "Hello, world"

11. int 21h ;display "Hello, world"

12. mov ah,4ch ;DOS terminate program function

13. int 21h ;terminate the program

14. END

22
Lab. 3 SDG115

4. Estudiar cmo se han creado programas .COM en distintas


versiones de MASM. Muestre programas ejemplos y describa los
cambios.
En MS-DOS, sistemas operativos compatibles, y en CP/M de 8-bits, un fichero
COM es un tipo simple de fichero ejecutable. El nombre del formato de
fichero proviene de la extensin del nombre de fichero .com (no debe
confundirse con el nivel superior de dominio .com), que fue la extensin
original usada para estos ficheros. Sin embargo, no existe asociacin real
entre el formato de fichero y la extensin del nombre de fichero ms que en
CP/M y versiones muy antiguas de MS-DOS.
A diferencia de los archivos EXE, los COM tienen una estructura muy simple y
almacenan en forma directa y lineal la imagen de memoria que ser un
programa. Solamente pueden almacenarse en archivos COM los programas
que quepan en un solo segmento.
Los programas tipo COM slo pueden ocupar un segmento lgico y son almacenados
en disco como una imagen binaria del mismo. Esto trae como consecuencia, que la
longitud total del programa, incluyendo datos y pila no puede exceder los 64K y que
la primera instruccin ejecutable del mismo deber estar ubicada siempre en la
posicin 100h (justo despus del PSP). Adems, es obligatorio el empleo de un
nombre nico para los segmentos declarados en todos los mdulos fuente que
constituyan la aplicacin. Por su parte el sistema operativo inicializa los registros de
segmento de tal forma que apunten al inicio del PSP, el apuntador de pila (SP)
seala a la posicin de memoria ms alta disponible dentro del segmento y la pila
es inicializada con un valor cero. Las funciones y procedimientos empleados tendrn
atributo NEAR ya que todas las invocaciones son intrasegmento.
Estructura de un programa con extensin COM.
Los programas con extensin COM estn almacenados en archivos que contienen
una copia fiel del cdigo a ser ejecutado. Ya que no contienen informacin para

23
Lab. 3 SDG115

reasignacin de localidades, son ms compactos y son cargados ms rpidamente


que sus equivalentes EXE. EL MS-DOS no tiene manera de saber si un archivo con
extensin COM es un programa ejecutable vlido. Este simplemente lo carga en
memoria y le transfiere el control.
Debido al hecho de que los programa COM son siempre cargados inmediatamente
despus del PSP y no contienen encabezado que especifique el punto de entrada al
mismo, siempre debe comenzar en la direccin 0100h. Esta direccin deber
contener la primera instruccin ejecutable. La longitud mxima de un programa
COM es de 65536 bytes, menos la longitud del PSP (256 bytes) y la longitud de la
pila (mnimo 2 bytes).

Cuando el sistema operativo le transfiere el control a un programa COM, todos los


registros de segmento apuntan al PSP. El registro apuntador de pila (SP), contiene el
valor 0FFFEh si la memoria lo permite. En otro caso adopta el mximo valor posible
menos dos bytes (El MS-DOS introduce un cero en la pila ante de transferir el control
al programa). Aun cuando la longitud de un programa COM no puede exceder los
64Kb, las versiones actuales del MS-DOS reservan toda la memoria disponible.
Si un programa COM debe ejecutar otro proceso, es necesario que el mismo libere
la memoria no usada de tal manera que pueda ser empleada por la otra aplicacin.
Cuando un programa COM termina, puede retornar el control al sistema operativo
por varios medios. El mtodo preferido es el uso de la funcin 4Ch de la Int 21h, la
cual permite que el programa devuelva un cdigo de retorno al proceso que lo
invoc. Sin embargo, si el programa est ejecutndose bajo la versin 1.00 del MS-
DOS, el control debe ser retornado mediante el uso de la Int 20h o de la funcin
00h de la Int 21h.
Un programa COM puede ser ensamblado a partir de varios mdulos objeto, con la
condicin de todos ellos empleen los mismo nombres y clases de segmentos y
asegurando que el mdulo inicial, con el punto de entrada en 0100h sea enlazado
primero. Adicionalmente, todos los procedimientos y funciones deben tener el
atributo NEAR, ya que todo el cdigo ejecutable estar dentro del mismo segmento.
Al enlazar un programa COM en enlazador mostrar el siguiente mensaje:
Warning: no stack segment.

24
Lab. 3 SDG115

Este mensaje puede ser ignorado, ya que el mismo se debe a que se ha instruido al
enlazador para que genere un programa con extensin EXE donde el segmento de
pila debe ser indicado de manera explcita, y no as en los COM donde esta es
asumida por defecto.
Ejemplo de un programa con extensin COM.
El programa HOLA.COM listado en la figura 5-3 demuestra la estructura de programa
sencillo en lenguaje ensamblador, destinado a ser un archivo ejecutable con
extensin COM.

Modelos para programas COM.


Los modelos son plantillas que contienen las sentencias mnimas necesarias
(fundamentalmente directivas) para escribir un programa en lenguaje ensamblador.
Debido a las diferencias entre programas COM y EXE, es necesario escribir modelos
diferentes para cada tipo de aplicacin. Estos modelos servirn como base para la
escritura de aplicaciones en lenguaje ensamblador.
Modelo para programas COM.
El modelo que se muestra permite la escritura de programas COM usando directivas
simplificadas. Ntese la presencia de la directiva ORG que obliga a que la primera
instruccin ejecutable se ubique en la direccin 100h.

25
Lab. 3 SDG115

5. Investigar las diferentes funciones que poseen las interrupciones


10H y 21H.

Interrupcin 10:

INT 10H Funcin 00H


Establecer modo de Vdeo

LLAMADA:
AH = 00H
AL = Modo de vdeo.
DEVUELVE:
NADA.

EFECTO:
Selecciona y activa el modo de vdeo especificado. A no ser que se utilice el
truco que se indica a continuacin, al llamar a esta funcin, se borra la
pantalla. Pero se borra el contenido de pantalla. Por suerte hay una especie
de 'truco' para evitar este borrado automtico de la pantalla. Consiste en
poner con valor 1 el bit 7 del registro AL (que contiene el modo de vdeo) en
la llamada a la funcin.
As, por ejemplo, si queremos cambiar a modo 13h, y queremos que se
pierda el contenido que hubiera en la pantalla en este modo, en vez de
introducir en AL nmero 13h (00010011b), introduciramos el nmero 93h
(10010011b).
TARJETA GRAFICA: TODAS (MDA, CGA, EGA, MCGA, VGA...)
Modos de vdeo y caractersticas principales:

26
Lab. 3 SDG115

Mod Resoluci Color Soportan


o n es
00h 40 por 25 16 Texto
01h 40 por 25 16 Texto
02h 80 por 25 16 Texto
03h 80 por 25 16 Texto
04h 20 por 200 4 Grfico
05h 20 por 200 4 Grfico
06h 640 por 2 Grfico
200
07h 80 por 25 2 Texto
0Dh 20 por 200 16 Grfico
0Eh 640 por 16 Grfico
200
0Fh 640 por 2 Grfico
350
10h 640 por 4 Grfico EGA de 64 KB
350 de RAM
10h 640 por 16 Grfico EGA > 64 KB
350 y VGA
11h 640 por 2 Grfico
480
12h 640 por 16 Grfico
480
13h 20 por 200 256 Grfico

Modos superiores al 13h pertenecen a tarjetas Super-VGA superior.

INT 10H Funcin 01H


Establecer tamao del Cursor
LLAMADA:
AH = 01H
Bits 0-4 de CH = Lnea inicial del Cursor
Bits 0-4 de CL = Lnea final del Cursor.
DEVUELVE:
NADA.
EFECTO:
Se selecciona un nuevo tamao de Cursor en modo texto.

INT 10H Funcin 02H


Posicionar el Cursor

27
Lab. 3 SDG115

LLAMADA:
AH = 02H
BH = Pgina de vdeo
DH = Lnea donde situar el cursor
DL = Columna donde situar el cursor
DEVUELVE:
NADA.
EFECTO:
Posiciona el cursor en pantalla, de acuerdo a las coordenadas indicadas en
los registros DH y DL
Slo se desplazar el cursor si la pgina de vdeo indicada mediante BH es la
pgina de vdeo activa. Esto es as ya que existe un cursor independiente
para cada una de las pginas de vdeo con las que contamos en el modo
actual
Las coordenadas para la columna empiezan a partir de 0. Las coordenadas
para la fila empiezan a partir de 0. Esto quiere decir que la esquina superior
izquierda de la pantalla tendr las coordenadas (lnea=0, columna=0). La
columna mxima es la 39 (si estamos en un modo de vdeo de 40 columnas)
o la 79 (si estamos en un modo de vdeo de 80 columnas). La lnea mxima
es la 24 (si estamos en un modo de vdeo de 25 lneas) o la 49 (si estamos en
un modo de vdeo de 50 lneas).
(Un 'truco' para hacer desaparecer el cursor de la pantalla consiste en dar
valores no vlidos para la columna o la fila. Por ejemplo, si damos a la
columna el valor 100, el cursor desaparecer de la pantalla)
INT 10H Funcin 03H
Buscar posicin del Cursor y Tamao
LLAMADA:
AH = 03H
BH = Pgina de vdeo.
DEVUELVE:
CH = Lnea inicial del cursor
CL = Lnea final del cursor
DH = Fila donde se encuentra el cursor
DL = Columna donde se encuentra el cursor
EFECTO:
Obtiene las coordenadas del cursor en una pgina de vdeo dada. Tambin se
obtiene el tamao del cursor.

INT 10H Funcin 05H


Establecer nueva pgina de vdeo
LLAMADA:
AH = 05H
AL = Pgina de vdeo.
DEVUELVE:
NADA.
EFECTO:

28
Lab. 3 SDG115

Establece como activa la nueva pgina de vdeo indicada mediante el


registro AL, mostrndose por pantalla el contenido de esa pgina de vdeo, y
situando el cursor en la posicin que le corresponda para esa pgina de
vdeo. Las pginas posibles para cada modo de vdeo son:
Numeri de Modos de Tarjetas que lo
Pginas Vdeo soportan
8 (0 - 7) 00h y 01h CGA, EGA, MCGA,
VGA
4 (0 - 3) 02h y 03h CGA
8 (0 - 7) 02h y 03h ECGA, MCGA, VGA
8 (0 - 7) 07h EGA, VGA
8 (0 - 7) 0Dh EGA, VGA
4 (0 - 3) 0Eh EGA, VGA
2 (0 - 1) 0Fh EGA, VGA
2 (0 - 1) 10h EGA, VGA
Los modos de vdeo 11h en adelante cuentan slo con una pgina de vdeo.

INT 10H Funcin 06H


Desplazar lneas de texto hacia arriba
LLAMADA:
AH = 06H
AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana
seleccionada mediante los registros CX y DX
BH = Atributo a usar en las lneas borradas.
CH = Lnea donde comienza la ventana de texto.
CL = Columna donde comienza la ventana de texto.
DH = Lnea donde acaba la ventana de texto.
DL = Columna donde acaba la ventana de texto.
DEVUELVE:
NADA.
EFECTO:
Desplaza hacia arriba un nmero determinado de lneas en la ventana
especificada mediante los registros CX y DX. Las lneas desplazadas, quedan
vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se
indica mediante el registro BH.

INT 10H Funcin 07H


Desplazar lneas de texto hacia abajo
LLAMADA:
AH = 07H
AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana
seleccionada mediante los registros CX y DX
BH = Atributo a usar en las lneas borradas.

29
Lab. 3 SDG115

CH = Lnea donde comienza la ventana de texto.


CL = Columna donde comienza la ventana de texto.
DH = Lnea donde acaba la ventana de texto.
DL = Columna donde acaba la ventana de texto.
DEVUELVE:
NADA.
EFECTO:
Desplaza hacia abajo un nmero determinado de lneas en la ventana
especificada mediante los registros CX y DX. Las lneas desplazadas, quedan
vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se
indica mediante el registro BH.

INT 10H Funcin 08H


Leer carcter y atributo
LLAMADA:
AH = 08H
BH = Pgina de vdeo.
DEVUELVE:
AH = Atributo (color del carcter).
AL = Cdigo ASCII del carcter ledo.
EFECTO:
Mediante la llamada a esta funcin, se devuelve en AL cdigo del carcter
situado en la posicin del cursor. As mismo, obtenemos en AH el color de
este carcter.

INT 10H Funcin 09H


Escribir carcter y atributo
LLAMADA:
AH = 09H
AL = Cdigo del carcter a escribir.
BH = Pgina de vdeo donde escribir el carcter.
BL = Atributo o color que va a tener el carcter.
CX = Cantidad de veces que se debe escribir el carcter, uno a
continuacin de otro.
DEVUELVE:
NADA.
EFECTO:
Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo
deseada. El carcter tendr el color indicado mediante BL.

INT 10H Funcin 0AH


Escribir carcter
LLAMADA:
AH = 0AH
AL = Cdigo del carcter a escribir.
BH = Pgina de vdeo donde escribir el carcter.

30
Lab. 3 SDG115

CX = Cantidad de veces que se debe escribir el carcter, uno a


continuacin de otro.
DEVUELVE:
NADA.
EFECTO:
Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo
deseada. El carcter tendr el mismo color que tuviera el carcter antiguo en
esa posicin. Es decir, se modifica el carcter, pero no el color. En caso de
querer modificar el color del carcter, usar la funcin 09h.

INT 10H Funcin 0CH


Escribir un punto o pixel grfico
LLAMADA:
AH = 0CH
AL = Valor del color a usar.
BH = Pgina de vdeo donde escribir el carcter.
CX = Columna donde escribir el pixel (coordenada grfica x)
CX = Fila donde escribir el pixel (coordenada grfica y)
DEVUELVE:
NADA.
EFECTO:
Da un nuevo color a un pixel grfico. Funcin vlida slo para modos grficos.

INT 10H Funcin 0DH


Obtener el color de un pixel grfico
LLAMADA:
AH = 0DH
BH = Pgina de vdeo.
CX = Columna del pixel que nos interesa (coordenada grfica x).
DX = Fila del pixel que nos interesa (coordenada grfica y).
DEVUELVE:
AL = Valor del color del pixel.
EFECTO:
Obtiene el color de un punto grfico de la pantalla. Este punto se referenciar
mediante las coordenadas grficas (y): (CX, DX). Funcin vlida slo para
modos grficos.

INT 10H Funcin 0FH


Obtener el Modo de vdeo actual
LLAMADA:
AH = 0FH
DEVUELVE:
AL = Modo de vdeo actual.
AH = Cantidad de caracteres que caben en una lnea en el modo de
vdeo actual.
BH = Nmero de la pgina activa.

31
Lab. 3 SDG115

EFECTO:
Mediante esta funcin podemos saber en todo momento, en qu modo de
vdeo estamos trabajando. La utilidad de esta funcin reside sobre todo en la
construccin de programas residentes.

Interrupcin 21H:

La mayora de servicios o funciones del sistema operativo MS-DOS se


obtienen a travs de la interrupcin software 21H. Es por esto que se le
denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H est
compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay
que indicar el nmero de funcin que queremos ejecutar. La llamada a la INT
21H se realizar como sigue:
- Introducimos en (AH) el nmero de funcin a la que deseamos acceder.
- En caso de que deseemos acceder a una sub-funcin dentro de una funcin,
debemos indicarlo introduciendo en (AL) el nmero de esa sub-funcin.
- Llamar a la INT 21H.

INT 21H Funcin 01H


Entrada de Carcter con Eco (o salida)
LLAMADA:
AH = 01H
DEVUELVE:
AL = Cdigo ASCII del Carcter ledo y Echo a pantalla
(si AH =08H) es servicio sin Echo)
EFECTO: Se lee un carcter del dispositivo de entrada estndar, y se enva al
dispositivo estndar de salida. Si al llamar a la funcin no haba ningn
carcter disponible, se esperar a que lo haya. Normalmente el dispositivo
estndar de entrada es el teclado, y el dispositivo estndar de salida es la
pantalla.

INT 21H Funcin 02H


Salida de Carcter
LLAMADA:
AH = 02H
DL = Cdigo ASCII a enviar al dispositivo de salida.
DEVUELVE:
NADA.
. EFECTO: Se enva el carcter depositado en el registro DL al dispositivo
estndar de salida. La salida puede ser redireccionada hacia un fichero,
impresora, etc.

32
Lab. 3 SDG115

INT 21H Funcin 05H


Envo de Carcter a la Impresora
LLAMADA:
AH = 05H
DL = Cdigo ASCII a enviar al dispositivo de salida.
DEVUELVE: NADA
EFECTO: Se enva el carcter depositado en DL al puerto paralelo. Si no se ha
redireccionado la salida, el dispositivo por defecto en el puerto paralelo de
salida (LPT1 o PRN) es la impresora.

INT 21H Funcin 06H


Envo de Carcter a la pantalla como smbolo
LLAMADA:
AH = 06H
DL = smbolo entre "cuota ion marks" 'A' "#".
DEVUELVE: NADA

INT 21H Funcin 09H


Visualizacin de una cadena de caracteres
LLAMADA:
AH = 09H
DS:DX = Segmento: Desplazamiento de la cadena a visualizar (in DX -
offset address of string in data segment)
DS debe apuntar al segmento donde se encuentra la cadena.
DX debe contener el desplazamiento de la cadena dentro de ese
segmento.

DEVUELVE: NADA.
EFECTO: Se enva una cadena de caracteres al dispositivo estndar de salida.
Si no se ha redireccionado la salida, la cadena se enviar a la pantalla.

INT 21H Funcin 0AH


Leer cadena de smbolos desde teclado y su cdigo se almacena al
buffer
LLAMADA:
AH = 0AH
DX =direccin de buffer en segmento de datos
DEVUELVE:
En direccin DS:DX la cadena de ASCII cdigos de smbolos entrantes

INT 21H Funcin 0BH


Comprobacin del estado de la entrada

33
Lab. 3 SDG115

LLAMADA:
AH = 0BH
DEVUELVE:
AL = 00H si no hay carcter disponible.
AL = FFH si hay algn carcter disponible.
EFECTO: Se comprueba si hay algn carcter procedente del dispositivo
estndar de entrada. La entrada puede ser redireccionada. Si no hay tal
redireccin, se comprueba el buffer de teclado
INT 21H Funcin 0EH
Seleccin de disco
LLAMADA:
AH = 0EH
DL = Cdigo de la unidad (0=A , 1=B , etc...)
DEVUELVE: AL = Nmero de unidades lgicas del sistema
EFECTO: Selecciona una unidad de disco para que se convierta en la unidad
por defecto o actual. Ofrece adems informacin acerca del nmero total de
unidades lgicas del sistema. Una unidad fsica como un disco duro puede
estar particionada en varias unidades lgicas designadas por C , D, E ,etc

INT 21H Funcin 19H


Obtener disco actual
LLAMADA:
AH = 19H
DEVUELVE:
AL = Cdigo de la unidad actual (0=A , 1=B , etc...)
EFECTO: Devuelve el cdigo de la unidad de disco activa o por defecto.

INT 21H Funcin 39H


Crear directorio
LLAMADA:
AH = 39H
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el
nombre del directorio.
DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Se crea un nuevo directorio usando la unidad de disco y la va de
acceso especificada en la cadena ASCIIZ.

INT 21H Funcin 3AH


Borrar directorio
LLAMADA:
AH = 3AH

34
Lab. 3 SDG115

DS:DX = Segmento: Desplazamiento de una cadena ASCII con el


nombre del directorio a borrar.
DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Se elimina el directorio indicado de la unidad de disco y la va de
acceso especificada en la cadena ASCII.

INT 21H Funcin 3BH


Establecer directorio actual
LLAMADA:
AH = 3BH
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el
nombre del directorio.
DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Establece como directorio actual el indicado mediante la cadena
ASCII.

INT 21H Funcin 47H


Obtener directorio actual
LLAMADA:
AH = 47H
DL = Cdigo de la unidad (0 = unidad por defecto, actual;1 = A ; 2 =
B ; etc...)
DS:SI = Segmento: Desplazamiento de un buffer de 64 bytes. Este
buffer contendr el nombre del directorio, con toda la va de acceso al
mismo, en forma de cadena ASCII.

DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Establece como directorio actual el indicado mediante la cadena
ASCII. Esta funcin se abortar (indicndolo mediante Cf y AX) si el cdigo de
unidad no es vlido.

Funciones de manejo de Ficheros

INT 21H Funcin 3CH

35
Lab. 3 SDG115

Crear Fichero
LLAMADA:
AH = 3CH
CX = Atributos del fichero: 00H Fichero Normal. 01H Fichero de Slo
Lectura. 02H Fichero Oculto. 03H Fichero de Sistema.
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el
nombre de fichero.

DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
AX = Handle o manejador de fichero.
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Si el fichero indicado mediante la cadena ASCII ya exista, entonces
se vaca su contenido, quedando con longitud 0. Si el fichero no exista,
entonces se crea. En ambos casos, el fichero se abre, y se devuelve un
Handle manejador de fichero para los restantes accesos a dicho fichero.
Esta funcin se abortar (indicndolo mediante Cf y AX) si:
- La va de acceso indicada en la cadena ASCII es errnea.
- Se va a crear el fichero en el directorio raz y ste ya est lleno
El Handle es un nmero mediante el cual se referencia a un fichero dado. De
esta forma es ms cmodo trabajar con ficheros. Para cada uno de los
ficheros con que trabajemos, tendremos un nmero (Handle) que lo
representar.

INT 21H Funcin 3DH


Abrir Fichero
LLAMADA:
AH = 3DH
AL = Modo de acceso. Bits 0-2: Permiso de lectura/escritura.
000b Acceso de slo lectura.
001b Acceso de slo escritura.
010b Acceso de lectura/escritura.
Bit 3: 0b (Reservado).
Bits 4-6: Modo de comparticin de Fichero
000b Slo el programa actual puede acceder al archivo
001b Slo el programa actual puede acceder al archivo.
010b Otro programa puede leer el archivo, pero no escribir en l.
011b Otro programa puede escribir en el archivo, pero no leerlo.
100b Otro programa puede leer y escribir en el archivo.
Bit 7: Bit de 'herencia' Handle-flag.
0b Si el handle se hereda por un programa hijo.
1b Si el handle no se hereda.
DS:DX = Segmento: Desplazamiento de una cadena ASCII con el
nombre de fichero.

36
Lab. 3 SDG115

DEVUELVE:
Si se ejecut correctamente Flag de acarreo (Cf) = 0
AX = Handle o manejador de fichero
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Mediante esta funcin se abre un fichero ya existente, y se devuelve
un Handle para acceder al fichero en lo sucesivo.

INT 21H Funcin 3EH


Cerrar Fichero
LLAMADA:
AH = 3EH
BX = Handle.

DEVUELVE:
Si se ejecut correctamente:
Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Mediante esta funcin se cierra un fichero que estuviera abierto. Se
utiliza el Handle para indicar el fichero a cerrar. Tras cerrar el fichero, dicho
Handle se libera para nuevos ficheros. Se vuelvan al disco todos los buffers
internos asociados al fichero.

INT 21H Funcin 3FH


Lectura de Fichero o dispositivo
LLAMADA:
AH = 3FH
BX = Handle.
CX = Nmero de bytes a leer.
DS:DX = Segmento: Desplazamiento del buffer donde se depositarn
los caracteres ledos

DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
AX = Bytes transferidos
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Dado un handle vlido, se realiza una transferencia desde el fichero
referenciado por ese handle hacia el buffer de memoria especificado
mediante DS:DX. Se transferirn tantos caracteres como se especifique en
CX. Acto seguido, se actualiza el puntero de fichero hasta el carcter que
sigue al bloque ledo. Mediante esta funcin es posible leer caracteres del
teclado, usando el handle 0.

37
Lab. 3 SDG115

INT 21H Funcin 40H


Escritura en Fichero o dispositivo.
LLAMADA:
AH = 40H
BX = Handle.
CX = Nmero de bytes a escribir.
DS:DX = Segmento: Desplazamiento del buffer desde donde se van a
tomar los caracteres a escribir.

DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
AX = Bytes transferidos.
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error
EFECTO Dado un handle vlido, se realiza una transferencia desde el buffer
de memoria indicado mediante DS:DX hacia el fichero o dispositivo
referenciado por el Handle. Se transferirn tantos caracteres como se
especifique en CX. Acto seguido, se actualiza el puntero de fichero una
posicin por delante del bloque escrito, para que futuras escrituras no
'machaquen' los datos que ya hubiera. Mediante esta funcin es posible
escribir caracteres en la pantalla, usando el handle 1.

INT 21H Funcin 41H


Borrar Fichero.
LLAMADA:
AH = 41H
DS:DX = Segmento: Desplazamiento de la cadena ASCII con el nombre
del fichero a borrar.

DEVUELVE:
Si se ejecut correctamente: Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Se borra el fichero indicado mediante la cadena ASCII

INT 21H Funcin 42H


Establecer puntero de fichero.
LLAMADA:
AH = 42H
AL = Cdigo de desplazamiento:
00h Desplazamiento desde el inicio del fichero.
01h Desplazamiento desde la posicin actual del puntero.
02h Desplazamiento desde el final del fichero.

38
Lab. 3 SDG115

BX = Handle del fichero.


CX = Mitad ms significativa del desplazamiento.
DX = Mitad menos significativa del desplazamiento.

DEVUELVE:
Si se ejecut correctamente
Flag de acarreo (Cf) = 0
DX = Mitad ms significativa del puntero actualizado.
AX = Mitad menos significativa del puntero actualizado.
Si NO se ejecut correctamente
Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO:
Cambia el valor del puntero de fichero, permitiendo as un acceso aleatorio al
fichero. Podremos, mediante esta funcin, escribir y leer caracteres en
cualquier posicin del fichero, sin pasar por las anteriores.

INT 21H Funcin 43H Subfuncin 00h


Obtener atributos de fichero
LLAMADA:
AH = 43H
AL = 00h
DS:DX = Segmento: Desplazamiento de la cadena ASCIIZ con el
nombre del fichero.

DEVUELVE
Si se ejecut correctamente:
Flag de acarreo (Cf) = 0
CX = Atributos del fichero
Si Bit 0 = 1, Fichero de slo lectura.
Si Bit 1 = 1, Fichero oculto.
Si Bit 2 = 1, Fichero de sistema.
Si Bit 5 = 1, El archivo ha sido modificado desde el ltimo backup.
Si NO se ejecut correctamente:
Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO: Mediante esta funcin se obtiene informacin acerca de los
atributos de un determinado fichero, indicado mediante la cadena ASCII.

INT 21H Funcin 43H Subfuncin 01h


Establecer atributos de fichero
LLAMADA:
AH = 43H
AL = 01h

39
Lab. 3 SDG115

CX = Nuevos atributos para fichero.


Si ponemos Bit 0 = 1, atributo de slo lectura.
Si ponemos Bit 1 = 1, atributo de oculto.
Si ponemos Bit 2 = 1, atributo de sistema.
Debemos establecer Bit 3 = 0
Debemos establecer Bit 4 = 0.
Si ponemos Bit 5 = 1, indicar que el fichero ha sido modificado desde
el ltimo backup.
DS:DX = Segmento: Desplazamiento de la cadena ASCIIZ con el
nombre del fichero.

DEVUELVE:
Si se ejecut correctamente
Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente:
Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO:
Mediante esta funcin se establecen nuevos atributos a un fichero dado. Este
fichero se indica mediante la cadena ASCII.

INT 21H Funcin 56H


Renombrar Fichero Mover Fichero
LLAMADA:
AH = 56H
DS:DX = Segmento: Desplazamiento de la cadena ASCII con el nombre
actual del fichero. ES:DI = Segmento:Desplazamiento de la cadena
ASCII con el nuevo nombre para el fichero.

DEVUELVE: Si se ejecut correctamente:


Flag de acarreo (Cf) = 0
Si NO se ejecut correctamente:
Flag de acarreo (Cf) = 1
AX = Cdigo de error.
EFECTO:
Esta funcin permite cambiar el nombre a un fichero dado. Tambin permite
mover el fichero a otro directorio dentro del mismo dispositivo. En el segundo
caso, lo que debemos hacer es cambiar el camino que nos lleva al fichero, en
vez del nombre de fichero en s.
VERSION DE MS-DOS: 2.0 superior.
NOTAS: Se producir un error si:
- la cadena ASCII indicada es errnea.
- ya existe un fichero con el mismo nombre que el indicado.
- Se intenta mover el fichero a otro dispositivo o unidad.
- El fichero se mueve al directorio raz, y ste est lleno.

40
Lab. 3 SDG115

Funciones de terminacin de procesos

INT 21H Funcin 00H


Terminar ejecucin del Programa
LLAMADA:
AH = 00H
CS = Direccin del segmento del PSP.

DEVUELVE:
NADA
EFECTO: Se finaliza la ejecucin del programa en curso. Esto conlleva:
- Liberacin de toda la memoria asignada al programa.
- Todos los buffers de fichero son vaciados.
- Se cierra cualquier fichero abierto por el programa.
- Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H)
cuyo contenido original fue almacenado en la pila. Esta funcin est pensada
para programas COM, en los cuales, el PSP est en el mismo segmento que el
cdigo del programa. En los programas EXE esto no sucede as, estando el
PSP en diferente segmento al cdigo del programa, por tanto, no se debe
llamar a esta funcin desde un programa .EXE. En ambos casos (COM y EXE),
es preferible utilizar la funcin 4CH, ya que devuelve un cdigo de retorno la
programa padre.

INT 21H Funcin 4CH


Terminacin de Programa con Cdigo de Retorno
LLAMADA:
AH = 4CH
AL = Cdigo de retorno para el programa padre

DEVUELVE:
NADA.
EFECTO: Se finaliza la ejecucin del programa en curso, y se devuelve un
cdigo de retorno al programa padre. Mediante este cdigo de retorno, se
puede ofrecer informacin al programa padre acerca de la ejecucin del
programa (si se ha producido error, etc...) La terminacin del programa
conlleva:
- Liberacin de toda la memoria asignada al programa.
- Todos los buffers de fichero son vaciados.
- Se cierra cualquier fichero abierto por el programa.
- Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H)
cuyo contenido original fue almacenado en la pila.
Este es el mtodo idneo de terminacin de programas, ya que no necesita
que el registro CS tenga ningn contenido especial. Y aparte, devuelve
informacin al programa padre.

41
Lab. 3 SDG115

INT 21H Funcin 31H


Finalizar el Programa y Dejar Residente
LLAMADA:
AH = 31H
AL = Cdigo de retorno para el programa padre.
DX = Cantidad de memoria a dejar residente (en prrafos).

DEVUELVE:
NADA
EFECTO: Se finaliza la ejecucin del programa en curso, y se devuelve un
cdigo de retorno al programa padre. Mediante este cdigo de retorno, se
puede ofrecer informacin al programa padre acerca de la ejecucin del
programa (si se ha producido error, etc...) Adems de esto, y lo ms
importante: Se deja residente el programa o parte del mismo, de forma que
las siguientes ejecuciones de programas no lo 'machaquen'. La terminacin
del programa conlleva:
- Liberacin de toda la memoria asignada al programa.
- Todos los buffers de fichero son vaciados.
- Se cierra cualquier fichero abierto por el programa.
- Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H)
cuyo contenido original fue almacenado en la pila.
Un prrafo equivale a 16 bytes. Por tanto, en DX habr que indicar el nmero
total de bytes a dejar residentes dividido por 16. Esta funcin se utiliza en
programacin de utilidades residentes (como SideKick o SanBit). Una vez que
el programa queda residente en memoria, la activacin del mismo se
realiza de acuerdo a algn criterio del propio programa (como la pulsacin de
una combinacin de teclas). En este caso, el programa residente toma el
control y al acabar su tarea le devuelve el control al programa que se
estuviera ejecutando antes de la activacin del residente.

42
Lab. 3 SDG115

Conclusiones:

Como hemos notado el disear el programa como archivo .COM tiene


ciertas ventajas sobre disearlos como archivo .EXE y viceversa. Las
ventajas delos archivos .com son:
o Son inherentemente ms cortos que los archivo .EXE.
o Ellos se cargan ms rpido que los archivos .EXE.
o Son ms fciles de escribir, debido a que no se inicializa el stack,
el registro DS o ES.

Mientras que algunas desventajas son:

o No pueden ser ms grandes que 64kbytes.


o Pueden tener solo un segmento, y as no proporcionan una
separacin limpia entre datos e instrucciones.
o No pueden acceder procedimientos o datos que estn en otros
segmentos. Esto lo hace particularmente difcil al intentar usar
mdulos que fueron construidos por otros programadores

Las interrupciones se usan para suspender la ejecucin normal de un


programa, generalmente como respuesta a una seal externa,
mientras que las directivas son rdenes para el programa ensamblador
y no, como muchos pensaran, instrucciones para el microprocesador.

Al ensamblar un cdigo se generan una serie de archivos entre ellos


uno con extensin .lst, .exe, .obj y .map. Los primeros son archivos
listado que contiene el cdigo mquina y el puntero de programa
asociado a cada sentencia. Adems, contiene los posibles errores que
se pudieran generar durante la compilacin, los .exe los ejecutables por
defecto, pero si se desea .com se utilizan los comandos correctos y los
ltimos dos son el archivo objeto y el archivo map.

Las directivas del ensamblador tienen dos propsitos: uno de ellos es el


de brindar informacin para controlar el proceso de ensamble. Adems,
proporcionan una forma de definir palabras de datos en un programa.

43
Lab. 3 SDG115

Las directivas tambin se conocen como pseudo-operaciones debido a


que comnmente se designan mediante cdigos especiales en el
campo de operacin.

44

Das könnte Ihnen auch gefallen