Camadas do Software de E/S Camadas do Software de E/S

Propaganda
21/11/16
MaterialdidáHco
InterfacesePeriféricos
SubsistemadeE/SdoSOe
Drivers
•  Capítulodelivrotexto:AndrewS.Tanenbaum,Modern
Opera+ngSystems,2ªedição,Pren?ce-Hall.Capítulo5:Input/
Output.
–  Tambémdisponívelemportuguês:SistemasOperacionais
Modernos,2a.Edição,Pearson-Pren?ce-HalldoBrasil,2003.
Prof.JoãoPauloA.Almeida
([email protected])
IncluislidesdeRobertaLimaGomes
CamadasdoSoLwaredeE/S
CamadasdoSoLwaredeE/S
InterfacedoSistemaOperacional
(ChamadasdeSistema)
BibliotecasdeE/S
Barramento/Controladores
CamadasdosistemadesoLwaredeE/S
3
SubsistemadeE/SdoSistemaOperacional
4
CamadasdoSoLwaredeE/S
InterfacedoSistemaOperacional
(chamadasc/interrupçõesemsoLware) BibliotecasdeE/S
Barramento/Controladores
SubsistemadeE/SdoSistemaOperacional
InterrupçõesdeE/Semhardware
5
1
21/11/16
DriversdosDisposiHvos
Subsistema(SoLware)deEntradaeSaída
•  ObjeHvos
–  Fornecerumainterface“amigável”parauHlização
dosdisposiHvosdeE/S
•  UniformizarotratamentodosdisposiHvos
•  “Esconder”detalhesdemais“baixonível”
Chamadas de sistema
–  PermiHrainclusãodenovosdisposiHvos
–  Facilitaracorreçãodeerrosgeradospelo
disposiHvo
–  ExplorareficientementeosdisposiHvosdeE/S
Independente de dispositivo
Interface padrão
•  Desempenho
7
–  ComparHlhardisposiHvosdeE/S
–  AlocardisposiHvos
–  Escalonarrequisições
8
FunçõesdosoLwaredeE/Sindependentede
diposiHvo
CamadasdoSub-SistemadeE/S
Interface uniforme para os drivers dos dispositivos
Identificação de dispositivo
Proteção de dispositivo
Armazenamento em buffer
Relatório dos erros
Alocação e liberação de dispositivos dedicados
Fornecimento de tamanho de bloco independente de
dispositivo
9
CamadasdosistemadeE/Seasprincipaisfunçõesdecada
camada
10
2
21/11/16
SoLwaredeE/SIndependentedeDisposiHvo(3)
a) 
b) 
c) 
EntradasemuHlizaçãodebuffer
UHlizaçãodebuffernoespaçodousuário
UHlizaçãodebuffernonúcleoseguidodecópiaparaoespaçodo
usuário
14
SoLwaredeE/SIndependentedeDisposiHvo(4)
SoLwaredeE/SIndependentedeDisposiHvo(2)
(a)Semumainterface-padrãododriver
(b)Comumainterface-padrãododriver
Aoperaçãoemredepodeenvolvermuitascópiasde
umpacote
15
17
Subsistema(SoLware)deEntradaeSaída(4)
•  SoLwaredeE/Sdeusuário:
–  RealizachamadasdealtonívelaosoLwaredeE/S
independentededisposiHvo:
–  Wrappersparachamadasdesistema
•  Abrir/fechararquivo,ler/escreverdados,etc.
19
Profa. Roberta L.G. LPRM/
DI/UFES
Subsistema(SoLware)deEntradaeSaída(5)
•  InterfacedosubsistemadeE/S
–  disposiHvos“abstratos”deE/S
–  CadarepresentaumaclassededisposiHvosdeE/S
•  DisposiHvos“abstratos”
–  Orientadoabloco(blockdevice)
–  Orientadoacaractere(stream,characterdevice)
–  Rede
20
Profa. Roberta L.G. LPRM/
DI/UFES
3
21/11/16
Subsistema(SoLware)deEntradaeSaída(6)
Subsistema(SoLware)deEntradaeSaída(7)
•  InterfacedosubsistemadeE/S(cont.)
•  InterfacedosubsistemadeE/S(cont.)
–  DisposiHvosOrientadoabloco
–  DisposiHvosOrientadoacaractere
•  Organizadadosemblocosdetamanhofixo
•  Acessadiretamenteumblocodedados
•  BlocossãoidenHficadosporendereços(númerodobloco)
•  ControladisposiHvosqueproduzemouconsomem
conjuntodedadosdetamanhoarbitrário
•  Operaçõesipicas:
–  ex:blocosdedisco
–  put()eget()[implementadascomopen,read,write]
•  Operaçõesipicas:
•  open(),read(),write()eclose()
•  Disponibilizadasaosusuáriosviasistemadearquivos
–  ex:teclado,vídeo,mouse,impressora,etc...
•  Operaçõesespecíficas(inversãodecores,bip,inicialização,
etc)sãofornecidasporumafunçãogenérica
–  io_control()
21
Profa. Roberta L.G. LPRM/
DI/UFES
22
Profa. Roberta L.G. LPRM/
DI/UFES
Subsistema(SoLware)deEntradaeSaída(8)
Subsistema(SoLware)deEntradaeSaída(9)
•  InterfacedosubsistemadeE/S(cont.)
•  SoLwaredeE/SindependentededisposiHvo
–  DisposiHvosOrientadoarede
–  ImplementafunçõesgeraiscomunsatodososdisposiHvos
–  AtribuiçãouniformedonomeindependentedodisposiHvo
•  ControleeacessoadisposiHvosqueestãofisicamenteinstaladosem
outrosequipamentos
•  Necessárioestabelecimentodeconexões
•  Interfaceipicasãosockets
•  Operaçõesipicas:
•  OUNIXéumexemploclássico:
–  NomedodisposiHvoéumstring
–  open(),close(),create()
•  Suporteaserviços:
–  orientadoaconexão:connect(),accept(),read(),write()
–  semconexão:send()erecv()
23
Profa. Roberta L.G. LPRM/
DI/UFES
EntradaeSaídanoUnix
/dev/fd0Disquete
/dev/hda–MestredobarramentoIDE1
/dev/hdb–EscravodobarramentoIDE1
/dev/hdc–MestredobarramentoIDE2
/dev/hdd–EscravodobarramentoIDE2
•  Nocasodediscos,umnúmerointeiroconcatenadoao
disposiHvoindicaaparHção
•  /dev/hda1–PrimeiraparHçãododisposiHvomestredo
barramentoide1
25
Profa. Roberta L.G. LPRM/
DI/UFES
ChamadasdeSistema(Linux)
•  OUnixmapeiaosdisposiHvosdeentradaesaídaemarquivos
especiais
•  DisposiHvoslocalizadosnodiretório/dev
– 
– 
– 
– 
– 
24
%eax
Name
Source
%ebx
%ecx
%edx
1
sys_exit
kernel/exit.c
int
-
-
2
sys_fork
arch/i386/kernel/process.c
struct pt_regs
-
-
3
sys_read
fs/read_write.c
unsigned int
char *
size_t
4
sys_write
fs/read_write.c
unsigned int
const char *
size_t
5
sys_open
fs/open.c
const char *
int
int
6
sys_close
fs/open.c
unsigned int
-
-
7
sys_waitpid
kernel/exit.c
pid_t
unsigned int *
int
8
sys_creat
fs/open.c
const char *
int
-
9
sys_link
fs/namei.c
const char *
const char *
-
10
sys_unlink
fs/namei.c
const char *
-
-
11
sys_execve
arch/i386/kernel/process.c
struct pt_regs
-
-
Profa. Roberta L.G. LPRM/
DI/UFES
4
21/11/16
E/SProgramada(1)
EsquemasdeEntrada/Saída
•  3esquemasdiferentespararealizaçõesdeE/S:
–  1 – E/S Programada com Espera Ocupada (busy wait,
polling)
–  2–E/SDirigidaporInterrupção
–  3–E/ScomAcessoDiretoàMemória(DMA)
Passosdaimpressãodeumacadeiadecaracteres
28
E/SProgramada(2)
E/SOrientadaaInterrupção
• 
a) 
Escritadeumacadeiadecaracteresparaa
impressorausandoE/Sprogramada
29
b) 
Códigoexecutadoquandoquandoéfeitaachamadaaosistemapara
impressão
RoHnadetratamentodeinterrupção
30
E/SUsandoDMA
• 
Escritadeumacadeiadecaracteresparaa
impressorausandoE/Sorientadaàinterrupção
DiscoRígido
ImpressãodeumacadeiadecaracteresusandoDMA
a)  Códigoexecutadoquandoquandoéfeitaachamadaao
sistemaparaimpressão
b)  RoHnadetratamentodeinterrupção
31
5
21/11/16
TamanhodeSetor
Buffers…paraescritanoarquivo
Buffers
https://lwn.net/Articles/457667/
Opçõesdeopen
Flush
intopen(constchar*pathname,intflags)
•  O_NONBLOCKorO_NDELAY
•  Whenpossible,thefileisopenedinnonblockingmode.
Neithertheopen()noranysubsequentoperaHonson
thefiledescriptorwhichisreturnedwillcausethe
callingprocesstowait.
•  O_SYNC
•  ThefileisopenedforsynchronousI/O.Any
write(2)sontheresulHngfiledescriptorwillblockthe
callingprocessunHlthedatahasbeenphysically
wrizentotheunderlyinghardware.
•  #include<stdio.h>
•  intfflush(FILE*stream);
•  Foroutputstreams,fflush()forcesawriteofalluserspacebuffereddataforthegivenoutputorupdate
streamviathestream'sunderlyingwritefuncHon.
•  IfthestreamargumentisNULL,fflush()flushesallopen
outputstreams.
•  Notethatfflush()onlyflushestheuserspacebuffers
providedbytheClibrary.Toensurethatthedatais
physicallystoredondiskthekernelbuffersmustbe
flushedtoo,forexample,withsync(2)orfsync(2).
6
21/11/16
Sync
ArHgo
•  sync()causesallbufferedmodificaHonstofilemetadata
anddatatobewrizentotheunderlyingfilesystems.
•  syncfs()islikesync(),butsynchronizesjustthefile
systemcontainingfilereferredtobytheopenfile
descriptorfd.
•  Bugs
•  AccordingtothestandardspecificaHon(e.g.,POSIX.
1-2001),sync()schedulesthewrites,butmayreturn
beforetheactualwriHngisdone.However,since
version1.3.20Linuxdoesactuallywait.(ThissHlldoes
notguaranteedataintegrity:moderndiskshavelarge
caches.)
•  Relaçãodesempenhonotempoxconfiabilidade
(integridadededados)
•  Abstraçãoxrealidadedohardware
•  Impactonodesempenhopordiferentespremissas
(comoosoLwareassumequeohardwarefunciona)
Perguntas
A1amenHra
•  Porqueoautordizqueosdiscosesuascontroladores
“mentem”?QualéamenHra?
•  Qualéoproblemadeconfiabilidadequeéintroduzido
aotentarmaximizardesempenhonotempo?
•  Qualoproblemaquetagqueueingresolve?Como
funciona?
•  QualoproblemadasimplementaçõesSATAsemNCQ?
•  Discutaasconsequênciasdoaumentodotamanhodo
setor.Quaissãoasmétricasafetadas?Porque?
•  Paraevitarqueademandasejareprimida(próximas
demandasviriamsomenteapósumarequisiçãoser
completamenteatendida,ousejaatéqueosdados
sejamescritosnamídia)ascontroladoresdizemqueos
dadosjáforamescritosassimqueosdadosestãono
cache(memóriavoláHl)
•  Istofazcomquecrashslevemosistemaaumestado
inconsistente(aplicaçãoachaquejáescreveu,mas
dadosnãoforamescritos)
•  ÉistoqueelechamademenHra:asubversãoda
“semânHca”doflush
•  DopontodevistadedesempenhoéposiHvo,gerando
pipeline
Tagqueueing
NaHveCommandQueueing
•  PermitemúlHplasrequisiçõessimultaneamente
•  Cadaumaéconfirmadaindependentementequando
forescritaemdisco
•  Pipelineépossível
•  Escalonamentoeficienteépossível(acessarossetores
maispróximosantesconsiderandoarotaçãododisco)
–  Pensenoelevador
7
21/11/16
AumentodoTamanhodoSetor
Escritaleva2voltasnodisco
CamadasdoSoLwaredeE/S
CiclodevidadeE/S
•  Comoosdriverssãocarregados?
InterfacedoSistemaOperacional
(ChamadasdeSistema)
BibliotecasdeE/S
BIOS
Barramento/Controladores
SubsistemadeE/SdoSistemaOperacional
48
CamadasdoSoLwaredeE/S
InterfacedoSistemaOperacional
(ChamadasdeSistema)
BIOS=BasicInput/OutputSystem
BibliotecasdeE/S
BIOS
Barramento/Controladores
SubsistemadeE/SdoSistemaOperacional
•  DisponívelemROMouFLASH(firmware)
•  Bootstrapping
–  BIOSrecebecontrole
–  Endereçoƒsico000FFFF0h
•  Power-OnSelfTest(POST)
•  Configuraçãobásicadecontroladores
•  CargadoSistemaOperacional
–  OudeumBootLoaderdesegundonível
–  LILO,bootfromnetwork,SCSI,USB
•  Fornecidopelosprodutoresdeplacamãe
•  hzp://en.wikipedia.org/wiki/BIOS
•  hzp://www.embeddedarm.com/Manuals/EBIOS-UM.PDF
49
8
21/11/16
POST
•  PrincipaisaHvidadesdurantePOST:
–  VerificaintegridadedaBIOS(updatesflash)
–  Verificaamemória
–  Descobrir,inicializarecatalogarbarramentose
disposiHvos
–  Proverinterfacec/usuárioparaconfiguração
–  IdenHficareselecionardisposiHvosparaboot
–  Construirambienteparacargadosistema
operacional
http://en.wikipedia.org/wiki/Image:Phoenix__AwardBIOS_CMOS_Setup_Utility.jpg
BIOS=BasicInput/OutputSystem
InterrupçõesdeSoLware
•  Usadoparaentradaesaídabásicaduranteos
procedimentosdebooteconfiguraçãodehardware
•  Etambémduranteaexecuçãodesistemasoperacionais
maissimples(DOSporexemplofaziausoextensivoda
BIOSparaentradaesaída)
–  ParaissoaBIOSofereciaumainterfacesimilarà
interfacedosSistemasOperacionais
–  UsandointerrupçõesdesoLware
–  Usandoatabeladevetoresdeinterrupção
•  InterrupçõesdesoLwarepodemseraHvadasporsoLware
•  InstruçãoINT<número-interrupção>
–  ACPUentãousaestenúmeroparaindexarumatabelade
256entradas(vetordeinterrupções)paraencontraro
endereçodaro?nadetratamentodeinterrupçãoaser
executada
–  Vetordeinterrupçõesseencontranoendereço0
•  256x4bytes
•  DoisHposdeinterrupções
–  InterrupçõesdoSistemaOperacional(DOS,Linux,
etc.)
–  InterrupçõesdaBIOS
•  ParagerarinterrupçõesdoDOSuse:INT21h
•  ParagerarinterrupçõesdoLinuxuse:INT80h
Interrupções…nãoconfundir!
ChamadasdeSistema
•  INT21h–DOS/Windows(16-bits)
–  Quandousamosestainstrução,oDOSchamauma
roHnadetratamentoespecífica,dependendodoHpo
deinterrupção
–  OHpodeinterrupçãoserádefinidoemfunçãodo
valorqueesHverarmazenadonoregistradorAL
•  INT80h–Linux
–  hzp://asm.sourceforge.net/
•  INT11h-1ah–BIOS
–  ChamadopeloDOS
InterfacedoBIOS(chamadasc/
interrupçõesemsoLware)
InterfacedoSistemaOperacional
(chamadasc/interrupçõesemsoLware)
BIOS
InterrupçõesdeE/Semhardware
Natabeladeinterrupçõesestátudomisturado!
56
9
21/11/16
TabeladeInterrupção(IVT)
Interrupt
TabeladeInterrupção
Description
INT 00h
CPU: Division by Zero
INT 70h
IRQ8: Called by RTC
INT 01h
CPU: Single Step for debugging
INT 74h
IRQ12: Called by mouse
INT 02h
CPU: NMI, used e.g. by POST for memory errors (Power-On Self Test)
INT 75h
IRQ13: Called by math coprocessor
INT 03h
CPU: Breakpoint for debugging
INT 76h
IRQ14: Called by primary IDE controller
INT 04h
CPU: Numeric Overflow
INT 77h
IRQ15: Called by secondary IDE controller
INT 05h
Print Screen
INT 08h
IRQ0: Called by system timer 18.2 times per second
INT 09h
IRQ1: Called by keyboard
INT 0Bh
IRQ3: Called by 2nd serial port COM2
INT 0Ch
IRQ4: Called by 1st serial port COM1
INT 0Dh
IRQ5: Called by hard disk controller (PC/XT) or 2nd parallel port LPT2 (AT)
INT 0Eh
IRQ6: Called by floppy disk controller
INT 0Fh
IRQ7: Called by 1st parallel port LPT1 (printer)
Em vermelho as interrupções de E/S de hardware
TabeladeInterrupção
TabeladeInterrupção(facilidadesBIOS)
INT 10h
Video Services (ROM BIOS Extension on VGA controller)
AH=00h
Set Video Mode
AH=01h
Set Cursor Shape
AH=02h
Set Cursor Position
AH=03h
Get Cursor Position And Shape
AH=04h
Get Light Pen Position
AH=05h
Set Display Page
AH=06h
Clear/Scroll Screen Up
AH=07h
Clear/Scroll Screen Down
AH=08h
Read Character and Attribute at Cursor
AH=09h
Write Character and Attribute at Cursor
AH=0Ah
Write Character at Cursor
AH=0Bh
Set Border Color
AH=0Eh
Write Character in TTY Mode
AH=0Fh
Get Video Mode
AH=13h
Write String
INT 13h
–  Onreturnfromint11h,theAXregistercontainsabit-encodedequipment
listwiththefollowingvalues:
–  Bit0Floppydiskdriveinstalled
–  Bit1Mathcoprocessorinstalled
–  Bits4,5IniHalvideomode00-none01-40x25color10-80x25color11-
80x25b/w
–  Bits6,7Numberofdiskdrives
–  Bit8DMApresent
–  Bits9,10,11NumberofRS-232serialcardsinstalled
–  Bit12GameI/Ocardinstalled
–  Bit13Serialprinterazached
–  Bits14,15Numberofprintersazached.
•  INT12h–Indicaamemóriadisponível
–  ValoremAX:qualoproblema?
TabeladeInterrupção(facilidadesBIOS)
Interrupt
•  INT11h–Equipamentosinstalados
Description
Low Level Disk Services
AH=00h Reset Disk Drives
AH=01h Check Drive Status
AH=02h Read Sectors From Drive
TabeladeInterrupção
INT 14h
Routines for communicating via the serial port. Used
by software programs.
AH=00h
Serial Port Initialization
AH=01h
Transmit Character
AH=02h
Receive Character
AH=03h
Status
AH=03h Write Sectors To Drive
AH=04h Verifies Sectors On Drive
INT 15h
Miscellaneous
AH=4FH
Keyboard Intercept
AH=83H
Event Wait
AH=84H
Read Joystick
AH=09h Init Fixed Drive Parameters
AH=85H
Sysreq Key Callout
AH=0Ch Seek To Specified Track
AH=86H
Wait
AH=87H
Move Block
AH=88H
Get Extended Memory Size
AH=C0H
Get System Parameters
AH=C1H
Get Extended BIOS Data Area Segment
AH=C2H
Pointing Device Functions
AH=05h Format Track On Drive
AH=08h Get Drive Parameters
AH=0Dh Reset Fixed Disk Controller
AH=15h Get Drive Type
AH=16h Get Floppy Drive Media Change Status
•  http://en.wikipedia.org/wiki/BIOS_call
10
21/11/16
TabeladeInterrupção
...emaistabeladeinterrupção
INT 19h
After POST this interrupt is used by BIOS to load the
operating system.
INT 1Ah
Real Time Clock Services - called by software
programs to communicate with the RTC
Read Input Status
AH=00h
Read RTC
Read Keyboard Shift Status
AH=01h
Set RTC
AH=10h
Read Character Extended
AH=02h
Read RTC Time
AH=11h
Read Input Status Extended
AH=03h
Set RTC Time
AH=12h
Read Keyboard Shift Status Extended
AH=04h
Read RTC Date
AH=05h
Set RTC Date
INT 17h
Print Services - used by software programs to
communicate with the printer
AH=06h
Set RTC Alarm
AH=00h
Print Character to Printer
AH=07h
Reset RTC Alarm
AH=01h
Initialize Printer
AH=02h
Check Printer Status
INT 16h
Implemented by the BIOS or operating system. Provides
routines to be called by software programs which
communicate with the keyboard.
AH=00h
Read Character
AH=01h
AH=02h
InterrupçõesdeSoLware(DOS)
• 
INT21h(Entrada:AH<-01h,Saída:caracter->AL)
– 
– 
LêumcaracterdaconsoleecolocaoseucódigoASCIInoregistradorAL
ComogeraresteHpodeInterrupção
1.  Copieovalor08hdentrodoregistradorAH
2.  Chameainstrução“INT21h”
Apósestachamada,assimquefordigitadoumcaracter,seucódigoASCII
serácolocadodentrodeAL
• 
INT21h(Entradas:AH<-02h,DL<-caracter)
– 
– 
Imprimeocaracterouoexecuta,sefordoHpobeep,linefeedou
assemelhados
ComogeraresteHpodeInterrupção
1.  Copieovalor02hdentrodoregistradorAH
2.  CopieocódigoASCIIdocaracterquedesejaimprimirdentrodoregistrador
DL
3.  Chameainstrução“INT21h”
Arquivo.com(DOS,16-bit)
;hi.asm-simple"helloworld"program
;assemblewith"nasm-fbin-ohi.comhi.asm"
org100h;informNasmthisisa.comfile
;int21hisgoingtowant...
movdx,msg;theaddressoformessageindx
movah,9;ah=9-"printstring"sub-funcHon
int21h
;calldosservices
movah,4Ch;"terminateprogram"sub-funcHon
int21h;calldosservices
msgdb'Hello,World!',0Dh,0Ah,'$';$-terminatedmessage
TabeladeChamadasdeSistema(DOS)
Exemplosdechamada(DOS)
AH
Description
AH
Description
01
Read character from STDIN
02
Write character to STDOUT
05
Write character to printer
06
Console Input/Output
07
Direct char read (STDIN), no echo
08
Char read from STDIN, no echo
09
Write string to STDOUT
0A
Buffered input
0B
Get STDIN status
0C
Flush buffer for STDIN
0D
Disk reset
0E
Select default drive
19
Get current default drive
25
Set interrupt vector
2A
Get system date
2B
Set system date
• 
• 
• 
• 
• 
2C
Get system time
2D
Set system time
2E
Set verify flag
30
Get DOS version
35
Get Interrupt vector
36
Get free disk space
39
Create subdirectory
3A
Remove subdirectory
3B
Set working directory
3C
Create file
3D
Open file
3E
Close file
3F
Read file
40
Write file
41
Delete file
42
Seek file
43
Get/Set file attributes
47
Get current directory
4C
Exit program
4D
Get return code
54
Get verify flag
56
Rename file
57
Get/Set file date
AH=05h-WRITECHARACTERTOPRINTER
Entry:DL=charactertoprint
Notes:
keyboardcheckedfor^C/^Break
STDPRNisusuallythefirstparallelport,butmaybe
redirectedunderDOS2+
•  iftheprinterisbusy,thisfuncHonwillwait
11
21/11/16
Exemplosdechamada(DOS)
Exemplosdechamada(DOS)
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
AH=06h-DIRECTCONSOLEOUTPUT
Entry:DL=character(exceptFFh)
Return:AL=characteroutput
Notes:doesnotcheck^C/^Break
SeeAlso:AH=02h,AH=09h
AH=06h-DIRECTCONSOLEINPUT
Entry:AH=06hDL=FFh
Return:
ZFsetifnocharacteravailableandAL=00h
ZFclearifcharacteravailableAL=characterread
Notes:
^C/^BreakareNOTchecked
ifthereturnedcharacteris00h,theuserpressedakey
withanextendedkeycode,whichwillbereturnedby
thenextcallofthisfuncHon
Exemplosdechamada(DOS)
Exemplosdechamada(DOS)
AH=01h-READCHARACTERFROMSTANDARDINPUT,
WITHECHO
Return:AL=characterread
Notes:
^C/^Breakarechecked
^PtogglestheDOS-internalecho-to-printerflag
^Zisnotinterpreted,thusnotcausinganEOFifinputis
redirectedcharacterisechoedtostandardoutput
• 
• 
• 
• 
• 
• 
Exemplosdechamada(DOS)
Exemplosdechamada(DOS)
• 
• 
• 
• 
•  AH=2Ah-GETSYSTEMDATE
•  Return:CX=year(1980-2099)DH=monthDL=dayAL
=dayofweek(00h=Sunday)
•  AH=2Bh-SETSYSTEMDATE
•  Entry:CX=year(1980-2099)DH=monthDL=day
•  Return:
•  AL=00successful
•  FFhinvaliddate,systemdateunchanged
AH=09h-WRITESTRINGTOSTANDARDOUTPUT
Entry:DS:DX->'$'-terminatedstring
Return:AL=24h
Notes:^C/^Breakarechecked
AH=02h-WRITECHARACTERTOSTANDARDOUTPUT
Entry:DL=charactertowrite
Return:AL=lastcharacteroutput
Notes:
^C/^Breakarechecked
thelastcharacteroutputwillbethecharacterinDL
unlessDL=09honentry,inwhichcaseAL=20hastabs
areexpandedtoblanks
•  ifstandardoutputisredirectedtoafile,noerrorchecks
(write-protected,fullmedia,etc.)areperformed
12
21/11/16
Exemplosdechamada(DOS)
•  AH=39h-"MKDIR"-CREATESUBDIRECTORY
•  Entry:DS:DX->ASCIZpathname
•  Return:
•  CFclearifsuccessfulAXdestroyed
•  CFsetonerrorAX=errorcode(03h,05h)
Chequem
hzp://spike.scu.edu.au/~barry/interrupts.html#ah01
paraumalistacompleta
13
Download