Está en la página 1de 21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

Referenciarpida:
INT10h/00h
INT10h/01h
INT10h/02h
INT10h/03h
INT10h/05h
INT10h/06h
INT10h/07h
INT10h/08h
INT10h/09h
INT10h/0Ah
INT10h/0Ch
INT10h/0Dh
INT10h/0Eh
INT10h/13h

INT10h/1003h
INT11h
INT12h
INT13h/00h
INT13h/02h
INT13h/03h
INT15h/86h
INT16h/00h
INT16h/01h
INT19h
INT1Ah/00h
20hINT

INT21h
INT21h/01h
INT21h/02h
INT21h/05h
INT21h/06h
INT21h/07h
INT21h/09h
INT21h/0Ah
INT21h/0Bh
INT21h/0Ch
INT21h/0Eh
INT21h/19h
INT21h/25h
INT21h/2Ah
INT21h/2Cr

INT21h/35h
INT21h/39h
INT21h/3Ah
INT21h/3Bh
INT21h/3Ch
INT21h/3Dh
INT21h/3Eh
INT21h/3Fh
INT21h/40h
INT21h/41h
INT21h/42h
INT21h/47h
INT21h/4canales
INT21h/56h

INT33h/0000h
INT33h/0001h
INT33h/0002h
INT33h/0003h

lalistacortadesoportadointerrumpeconlasdescripciones:

INT10h/AH=0estableceelmododevdeo.
Entrada:
AL.mododevdeodeseada=estosmodosdevdeosoncompatibles:00h
elmododetexto.40x25.16colores.8pginas.03henmodotexto.
80x25.16colores..8pginas13hModogrfico.40x25.256colores.
320x200pxeles.1pgina.

ejemplo:

moval,13h
movah,0
int10h

INT10h/AH=01hPuestaenmodotextocursordeforma.
Entrada:
CH.=cursordelalneadesalida(bits04)yopciones(bits57)CL.=
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

1/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

lneadelcursorinferior(bits04)cuandoelbit5deCHseestableceen0,
elcursoresvisible.cuandoelbit5es1,elcursornoesvisible.

ocultarelparpadeodelcursordetexto:
movch,32
movah,1
int10h
marcarelcursorparpadeantedetextoestndar:
movch,6
movcl,7
movah,1
int10h
enformadecuadrodetextomuestrancursorparpadeante:
movch,0
movcl,7
movah,1
int10h
Nota:algunasBIOSrequierenCLser>=7,
delocontrariosemuestranformasdecursorequivocadas.

INT10h/AH=2Definelaposicindelcursor.
Entrada:
DH.=filaDL=columna.BH=nmerodepgina(0..7).

ejemplo:

movdh,10
movdl,20
movbh,0
movah,2
int10h

INT10h/AH=03hobtenerlaposicinyeltamaodelcursor.
Entrada:
BH.=nmerodelapginavolver:DH.=filaDL=columna.CH=lnea
desalidadelcursor.CL=cursordelalneadefondo.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

2/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT10h/AH=05hseleccionePginadevdeoactiva.
Entrada:
AL.=nuevonmerodepgina(0..7)
semuestralapginaactiva.

INT10h/AH=06h.DesplazarsehaciaarribaventanaINT10h/AH=07h
desplazarsehaciaabajodelaventana.
Entrada:
AL=nmerodelneasqueserealizadesplazamiento(00h=clarala
ventanacompleta).BH=atributoseutilizaparaescribirlneasenblancoen
laparteinferiordelaventana.CH,CL=fila,columnadelaesquinasuperior
izquierdadelaventana.DH,DL=fila,columnadelaesquinainferior
derechadelaventana.

INT10h/AH=08hleerelcarcteryatributoenlaposicindelcursor.
Entrada:
BH.=nmerodelapginaderetorno:AH=atributo.AL=carcter.

INT10h/AH=09hescribirelcarcteryatributoenlaposicindelcursor.
Entrada:
AL.=caracteresparavisualizarBH.=nmerodepginaBL=atributo.
CX=nmerodevecesparaescribircaracteres.

INT10h/AH=0Ahescribirpersonajesloenlaposicindelcursor.
Entrada:
AL=Carcterquesevea.BH=nmerodepgina.CX=nmerodeveces
paraescribircaracteres.
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

3/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT10h/AH=0Chcambiodecolordeunsolopxel.
Entrada:
AL=colordelpxelCX.=columnaDX=fila.

ejemplo:

moval,13h
movah,0
int10hgrficosdeajustedelmododevdeo.
moval,1100b
movcx,10
movdx,20
movah,0ch
int10hconjuntodepxeles.

INT10h/AH=0Dhconseguirelcolordeunsolopxel.
Entrada:
CX.=columnaDX.=filadesalida:AL=colordelpxel

INT10h/AH=0EhSalidadeteletipo.
Entrada:
AL=personajeparaescribir.
Estafuncinmuestrauncarcterenlapantalla,elavancedelcursoryel
desplazamientodelapantalla,segnseanecesario.Laimpresinserealizasiempreal
corrientedelapginaactiva.ejemplo:

moval,'a'
movah,0EH
int10h

NOTA:Enlossistemasespecficosdeesta
funcinnoseadmitaenmodogrfico.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

4/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT10h/AH=13hcadenadeescritura.
Entrada:
AL=escrituramodo:bit0:actualizacindecursordespusdela
escrituraelbit1:cadenacontieneatributos.BH.=nmerodepgina
BL=atributosilacadenacontieneslocaracteres(bit1deALescero).CX
=nmerodecaracteres.cadena(atributosnosecuentan)DL,DH=
columna,filaalaquecomenzaraescribir.ES:BPapuntaacadenaparaser
impresos.

ejemplo:

moval,1
movbh,0
movbl,0011_1011b
movcx,msg1enddesplazamientomsg1calculareltamaodelmensaje.
movdl,10
movdh,7
deempujecs
popes
movpb,desplazamientomsg1
movah,13h
int10h
JMPmsg1end
msg1db"Hola,mundo!"
msg1end:

INT10h/AX=1003halternarlaintensidad/parpadear.
Entrada:
BL=mododeescritura:0:habilitarloscoloresintensivos.1:activarel
parpadeo(nosoportadoporelemuladoryventanasdesmbolodel
sistema).BH=0(paraevitarproblemasenalgunosadaptadores).

ejemplo:
movax,1003h
movbx,0
int10h

bitsdecolortabla:
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

5/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

atributodecarcteresunvalorde8bits,losbajos4bitspuestoscolordeprimer
plano,dealta4bitspuestosfondodecolor.
nota:lalneadecomandosdelemuladorylasventanasnosoncompatiblesconel
fondodeparpadear,sinembargo,paraqueloscolorestienenelmismoaspectoenel
DOSyenelmododepantallacompletaqueserequiereparadesactivarelfondode
parpadear.
HEXBINCOLOR
00000negro
10001azul
20010verde
30011cian
40100roja
50101magenta
60110marrn
70111grisclaro
81000grisoscuro
91001decolorazulclaro
Un1010decolorverdeclaro
B1011cianclaro
C1100decolorrojoclaro
D1101magentaclaro
E1110amarillo
F1111blanco
Nota:
utilizarestecdigoparalacompatibilidadconDOS/cmdindicadordelmododepantallacompleta:
movax,1003h
movbx,0desactivarelparpadeo.
int10h

INT11hobtenerlalistadeequiposdelBIOS.
regreso:
AXlistadeequipos=BIOSpalabra,enrealidadestallamadadevuelveel
contenidodelapalabraen0040h:.0010hActualmenteestafuncinse
puedeutilizarparadeterminarelnmerodeserieinstaladadeunidadesde
disquete.

LoscamposdebitsparaelhardwareinstaladoBIOSdetectado:
bit(s)Descripcin
1514Nmerodedispositivosenparalelo.
13Reservado.
puerto12Juegoinstalado.
119Nmerodedispositivosenserie.
8Reservados.
76Nmerodeunidadesdediscoflexible(menos1):
00solodisquete
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

6/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

01dedosdisquetes
10tresdisquetes
11decuatrodisquetes.
54mododevdeoinicial:
00EGA,VGA,PGA,uotroconabordodelBIOSdevdeo
0140x25decolorCGA.
1080x25decolorCGA(pordefectoemulador).
1180x25textomono.
3Reservado.
2PS/2delratnestinstalado.
1delcoprocesadormatemticoinstalado.
0Establecercuandoarrancadesdedisquete.

INT12hobtenereltamaodememoria.
regresan:
AX=kilobytesdememoriacontiguaapartirdelas00000hdireccin
absoluta,estallamadadevuelveelcontenidodelapalabraen0040h:
0013h.

LasunidadesdedisqueteseemulanmedianteFLOPPY_0(..3)archivos.

INT13h/AH=00hsistemadediscoderestablecimiento.

INT13h/AH=02hleerlossectoresdeldiscoenlamemoria.INT13h/AH=
03hescribirlossectoresdeldisco.
entrada:
AL=nmerodesectoresparalectura/escritura(debeser
distintodecero)CH=nmerodecilindro(0..79).CL=nmero
desector(1..18).DH=nmerocabeza(0..1).DL=unidad
nmero(0..3,paraelemuladorquedependedelacantidadde
archivosFLOPPY_).eS:BXpuntosdealmacenamientointermedio
dedatos.

regreso:
CFestableceencasodeerror.CFclarositienexito.AH=estado
(0sitienexito).AL=nmerodesectorestransferidos.
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

7/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

Nota:cadasectortiene512bytes.

INT15h/AH=86hfuncindeesperadelBIOS.
entrada:
CX:DX=intervaloenmicrosegundos
regreso:
CFclarositienexito(intervalodeesperatranscurrido),CF
estableceencasodeerrorocuandolafuncindeesperayaest
enprogreso.
Nota:
laresolucindelperododeesperaesde977microsegundosen
muchossistemas(1millndemicrosegundos1segundo).
WindowsXPnoescompatibleconestainterrupcin(siempre
estableceCF=1).

INT16h/AH=00hobtenerpulsacindelteclado(sineco).
regreso:
AH=BIOScdigodeexploracin.AL=carcterASCII.(Siuna
teclaestpresente,seeliminadelamemoriaintermediadel
teclado).

INT16h/AH=01hcomprobarlacombinacindeteclasenelbferdeteclado.
regreso:
ZF=1sipulsacindeteclanoestdisponible.ZF=0si
pulsacionesdeteclasdisponibles.AH=BIOScdigode
exploracin.AL=carcterASCII.(Siunateclaestpresente,no
seeliminadelamemoriaintermediadelteclado).

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

8/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT19hreiniciodelsistema.
Porlogeneral,elBIOSintentarleerelsector1,cabeza0,pista0dela
unidadA:a0000h:7C00h.Elemuladorslosedetienelaejecucin,para
arrancardesdelaunidaddedisqueteseleccionardelmen:"unidadvirtual
'>'arranquedesdedisquete'

INT1Ah/AH=00hobtienelahoradelsistema.
regreso:
CX:DX.=NmerodeciclosderelojdesdelamedianocheAL=
Contadordelamedianoche,avanzcadavezquepasala
medianoche.
Notas:
hayaproximadamente18.20648relojporsegundo,
y1800B0hpor24horas.ALnoestestablecidoporelemulador.

INT20hsalidaalsistemaoperativo.

LalistacortadeemuladoMSDOSinterrumpeINT21h
SistemadearchivosDOSseemulaenC:\Emu8086\vdrive\x(xes
unaletradeunidad)
Sinoseespecificaunaletradeunidadyeldirectorioactualnosehaestablecido,C:\
Emu8086\MyBuild\rutadeaccesoseutilizapordefecto.FLOPPY_0,1,2,3
archivosseemulanindependientementedelsistemadearchivosDOS.parael
emuladorfsicaunidada:eselarchivoc:\Emu8086\FLOPPY_0(porBIOS
interrumpe:13hINTyarranque).paraDOSinterrumpe(INT21h)unidada:se
emulaenestesubdirectorio:C:\Emu8086\vdrive\a\Nota:sistemadearchivosDOSlimita
losnombresdearchivosydirectoriosa8caracteres,extensinestlimitadaa3caracteresejemplodeunnombredearchivovlido:
miarchivo.txt(archivoname=6caracteres,extensin3caracteres).extensinseescribedespusdelpunto,nosepermitenotros
puntos.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

9/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT21h/AH=1leerelcarcterdelaentradaestndar,coneco,resultadose
almacenaenAL.
Sinohayningncarcterenelbufferdelteclado,lafuncindeesperahastaquese
pulsacualquiertecla.Ejemplo:

movah,1
int21h

INT21h/AH=2escribircaracteresenlasalidaestndar.
Entrada:DL=caracteresparaescribir,despusdelaejecucinAL=DL.Ejemplo:

movah,2
movdl,'a'
int21h

INT21h/AH=5caracteresdesalidaalaimpresora.
Deentrada:DL=carcteraimprimir,despusdelaejecucinAL=DL.Ejemplo:

movah,5
movdl,'a'
int21h

21hINT/AH=6entradadelaconsoladirectaosalida.Parmetrosdesalida:DL
=0..254(cdigoASCII)parmetrosdeentrada:DL=255paralasdevolucionesde
salida:AL=DLparalaentradadevuelve:ZFestablecesiningnpersonajedisponible
yAL=00h,ZFclarosicarcterdisponible.AL=lecturadecaracteresbferse
borra.ejemplo:

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

10/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

movah,6
movdl,'a'
int21hcarcterdesalida.

movah,6
movdl,255
int21hobtenerelcaracterdelbufferdelteclado(silohay)ounconjuntodeZF=1.

INT21h/AH=7.IntroduccindecaracteressinecoenAL
sinohayuncarcterenelbufferdelteclado,lafuncindeesperahastaquesepulsa
cualquiertecla.Ejemplo:

movah,7
int21h

INT21h/AH=9salidadeunacadenaenDS:DX.Cadenadebeserterminado
por'$'.Ejemplo:

org100h
movdx,desplazamientomsg
movah,9
int21h
ret
msgdb"holamundo$"

INT21h/AH=0AhentradadeunacadenaaDS:DX,byteeselpuotamaodel
bfer,segundobyteeselnmerodecaracteresrealmenteleer.estafuncinnono
poner"$"enelfinaldelacadena.imprimirutilizandoINT21h/AH=9debe
establecerelcarcterdlaralcierredelamismaycomenzaraimprimirdesdela
direccinDS:DX+2.ejemplo:

org100h
movdx,compensadobfer
movah,0AH
int21h
jmpdeimpresin

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

11/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

tampndb10,?,10dup('')
impresin:
xorbx,bx
movbl,tampn[1]
movtampn[BX+2],'$'
movdx,desplazamientoamortiguar+2
movah,9
int21h
ret

lafuncinnopermiteintroducirmscaracteresqueeltamaodebferespecificado.
vasetambinint21.asmenc:\Emu8086\ejemplos

INT21h/AH=0Bhobtenerelestadodeentrada
rendimientos:AL=00hsinohaycaracteresdisponibles,AL=0FFhsielpersonaje
estdisponible.

INT21h/AH=0Chbufferdeltecladorasyleerentradaestndar.
Entrada:AL=nmerodefuncindeentradaparaejecutardespusdetampnde
lavado(puedeser01h,06h,07h,08h,o0Ahparaotrosvaloressevacaelbuffer,
peronoseintentalaentrada)otrosregistroscomoapropiadoparalafuncinde
entradaseleccionada.

INT21h/AH=0Ehseleccionelaunidadpordefecto.Entrada:DL=nuevaunidad
predeterminada(0=A:,1=B:,etc.)Retorno:AL=nmerodeletrasdeunidad
potencialmentevlidasNotas:elvalorderetornoeslaunidadmsaltopresente.

INT21h/AH=19hconseguirunidadpredeterminadaactual.Vuelta:AL=unidad
(0=A:,1=B:,etc.)

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

12/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT21h/AH=25hconjuntodevectoresdeinterrupcin
deentrada:AL.=NmerodeinterrupcinDS:DX>nuevomanejadorde
interrupciones.

INT21h/AH=2Ahobtenerlafechadelsistema
regreso:CX.=Ao(19802099)DH.=MesDL.=DaAL=dadelasemana(00h
=domingo)

INT21h/AH=2Crobtienelahoradelsistema,
rendimiento:CH.=HoraCL.=MinutoDH=segundo.DL=1/100segundos.

INT21h/AH=35hobtenervectordeinterrupcin
entrada:AL=nmerodeinterrupcin
regreso:ES:BX>controladordeinterrupcindecorriente.

INT21h/AH=39hhacerdirectorio.
Deentrada:DS:DX>rutaASCIZcerocadenaterminada,porejemplo:
org100h
movdx,compensadovadearchivo
movah,39h
int21h
retirado
rutaarchivosDB"C:\mydir",0 caminoasercreado.
final
elcdigoanteriorcreac:\Emu8086\vdrive\C\mydirdirectoriosiseejecutaporelemulador.

Vuelta:CFclarositienexitoAXdestruido.CFestableceporerrordeAX=cdigode
error.
Nota:debenexistirtodoslosdirectoriosenlarutadadaaexcepcinelltimo.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

13/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT21h/AH=3Ahquitareldirectorio.Entrada:DS:DX.>ASCIZrutadel
directorioparaserretiradoyvuelta:CFestclarositienexito,AXdestruidoCFse
estableceencasodeerrorAX=cdigodeerror.Notas:directoriodebeestarvaco
(nodebehaberarchivosdentrodeella).

INT21h/AH=3Bhconfigurareldirectorioactual.Entrada:DS:DX>rutaASCIZ
paraconvertirseeneldirectorioactual(mximo64bytes).Vuelta:Llevarlabandera
estclarositienexito,AXdestruido.LlevarlabanderasefijaencasodeerrorAX
=cdigodeerror.Notas:inclusosinombredelnuevodirectorioincluyeunaletrade
unidad,launidadpredeterminadanosecambia,sloeldirectorioactualenesa
unidad.

INT21h/AH=3Chcrearotruncararchivo.Entrada:CXatributos=file:

movcx,0.normalessinatributos
movcx,1.slolectura
movcx,2.oculto
movcx,4sistemade
movcx,7oculto,sistemaydeslolectura!
movcx,16archivo
DS:DX.>NombredearchivoASCIZdevuelve:CFclarositienexito,AX.=
IdentificadordearchivoCFestableceporerrordeAX=cdigodeerror.Nota:siexisteel
archivoespecificadoseeliminasinunaadvertencia. Ejemplo:

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

14/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

org100h
movah,3canales
movcx,0
movdx,compensadonombredearchivo
movah,3canales
int21h
jcerr
movmango,hacha
JMPk
nombredearchivodb"miarchivo.txt",0
mangodw?
errar:
....
k:
retirado

INT21h/AH=3Dh.ArchivoexistenteabiertaEntrada:AL=accesoy
distribucindelosmodos:

moval,0leer
moval,1escribir
moval,2leerescribir

DS:DX.>NombredearchivoASCIZVuelta:CFclarositienexito,AX=
identificadordearchivo.CFestableceporerrordeAX=cdigodeerror.Nota1:
punterodearchivoseestablecealiniciodelarchivo.Nota2:debeexistirarchivo.
Ejemplo:

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

15/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

org100h
moval,2
movdx,compensadonombredearchivo
movah,3DH
int21h
jcerr
movmango,hacha
JMPk
nombredearchivodb"miarchivo.txt",0
mangodw?
errar:
....
k:
retirado

INT21h/AH=3Eh.Cerrarelarchivodeentrada:BX=Archivodemangode
retorno:CFclarositienexito,AXdestruida.CFestableceencasodeerror,AX=
cdigodeerror(06h).

INT21h/AH=3Fhleedelarchivo.Entrada:BX=identificadordearchivo.CX=
nmerodebytesaleer.DS:DX>memoriaintermediaparalosdatos.Vuelta:CF
estclarositienexitoAX=nmerodebytesrealmenteleer0siesEOF(finaldel
archivo)antesdelallamada.CFseestableceencasodeerrorAX=cdigodeerror.
Nota:losdatosseleencomenzandoenlaposicindelarchivoactual,ylaposicindel
ficheroseactualizadespusdeunaexitosaleerelvueltoAXpuedesermenorquela
solicituddeCXsisehaproducidounalecturaparcial.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

16/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

INT21h/AH=40h.Escribirenelarchivodeentrada:BX.=Identificadorde
archivoCX=nmerodebytesaescribir.DS:DX>Datosparaescribir.Retorno:CF
clarositienexitoAX=nmerodebytesrealmenteescrito.CFestableceencasode
errorAX=cdigodeerror.nota:siCXescero,noseescribendatos,yelarchivose
truncaoextendidaalosdatosdeposicinactualseescribecomenzandoenlaposicin
actualdelfichero,ylaposicindelficheroseactualizadespusdeunexitosoescribir
lacausahabitualdeAX<CXderetornoesundiscocompleto.

21hINT/AH=41heliminarelarchivo(dedesenlace).Entrada:DS:DX.>
NombredearchivoASCIZ(sincomodines,perovernotas)deretorno:CFclarosi
tienexito,AX.DestruidosALeslaunidaddelarchivoeliminado(nodocumentado.)
CFestableceporerrordeAX=cdigodeerror.Nota:DOSnoborralosdatosdel
archivosimplementesevuelveinaccesibledebidoaquelacadenadeFATparael
archivoseborradeborrarunarchivoqueestactualmenteabiertopuedeconducira
lacorrupcindelsistemadeficheros.

INT21h/AH=42hBUSCARfijarposicinactualdelfichero.Entrada:AL=
origendemovimiento:0.Iniciodelarchivo1.Posicinactualdelfichero2.
FinaldelarchivoBX.=IdentificadordearchivoCX:DX=desplazamientodesdeel
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

17/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

origendelanuevaposicindelarchivo.Vuelta:CFclarositienexito,DX:AX.=
nuevaposicindelarchivoenbytesdesdeelcomienzodelarchivoCFestableceen
casodeerror,AX=cdigodeerror.Notas:delosorgenes1y2,elpunteropuede
serposicionadoantesdeliniciodelarchivoningnerrorsedevuelveenesecaso,
perolosintentosposterioresparaleeroescribirelarchivoproducirerrores.Sila
nuevaposicinestmsalldelfinalactualdelarchivo,elarchivoseextenderporel
ladodeescritura(verAH=40h).Ejemplo:

org100h
movah,3canales
movcx,0
movdx,compensadonombredearchivo
movah,3canales
int21hcrearelarchivo...
movmanejar,hacha

movbx,manejar
movdx,desplazamientodedatos
movcx,DATA_SIZE
movah,40h
int21hescribirenelarchivo...

moval,0
movbx,manejar
movcx,0
movdx,7
movah,42h
int21hbuscar...

movbx,manejar
movdx,desplazamientodebfer
movcx,4
movah,3Fh
int21hleerdesdeelarchivo...

movbx,manejar
movah,3EH
int21hcerrarelarchivo...
ret

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

18/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

nombredearchivodb"miarchivo.txt",0
mangodw?
datosdb"holaarchivos!"
DATA_SIZE=$desplazamientodedatos
tampndb4DUP('')

INT21h/AH=47hobtenereldirectorioactual.Entrada:DL=nmerodeunidad
(00h=pordefecto,01h=A:,etc.)DS:SI>bufferde64bytesparalarutaASCIZ.
Vuelta:CarryestclarositienexitoCarrysefijaencasodeerror,AX=cdigode
error(0Fh)Notas:larutadevueltanoincluyeunaunidadylabarrainvertidainicial.

INT21h/AH=4canalescontrolderetornoalsistemaoperativo(sistemade
parada).

INT21h/AH=56hcambiarelnombredearchivo/moverarchivo.Entrada:DS:
DX>ASCIZnombredearchivodelarchivoexistente.ES:DI.>ASCIZnuevo
nombredearchivoyvuelta:CF.ClarositienexitoCFestableceencasodeerror,
AX=Error.cdigoNota:permitequesemuevenentredirectoriosensolamente
mismaunidadlgicaarchivosabiertosnodebencambiarelnombre!

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

19/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

controladordelratninterrumpeINT33h

INT33h/AX=0000ininializationratn.cualquierpunterodelratnanteriorse
oculta.retornos:
sitienexito:AX=0FFFFhyBX=nmerodebotonesdelratn.
sihayunerror:AX=0
ejemplo:
movax,0
int33h
vasetambin:mouse.asmenlosejemplos.

INT33h/AX=0001.Feriapunterodelratnejemplo:

movax,1
int33h

INT33h/AX=0002.Ocultarelpunterodelratnvisibleejemplo:

movax,2
int33h

INT33h/AX=0003.Obtenerlaposicindelratnyelestadodesusbotones
file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

20/21

7/7/2016

bsicos8086yDOSinterrupcionesqueactualmentesonsoportadosporelemulador

devuelve:
sielbotnizquierdoabajo:BX=1
sielbotnderechoabajo:BX=2
siambosbotonesestnabajo:BX=3CX=xDX=y
ejemplo:
movax,3
int33h
Nota:enmodogrficode320x200seduplicaelvalordeCX.
vermouse2.asmenlosejemplos.

file:///C:/emu8086/documentation/8086_bios_and_dos_interrupts.html#int21h_01h

21/21

También podría gustarte