Você está na página 1de 18

FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG.

O SISTEMA OPERACIONAL DOS :

SISTEMA MONOUSUÁRIO / MONOTAREFA, DISTRIBUÍDO EM 1981


PARA COMPUTADORES PESSOAIS COMO PC-DOS, SURGIU COMO
SUPERSET DO SISTEMA 86-DOS.

ESTRUTURA DO DOS:

A ESTRUTURA BÁSICA É FORMADA POR TRÊS MÓDULOS :

MÓDULOS DE I/O
NÚCLEO (KERNEL)
PROCESSADOR DE COMANDOS (SHELL)

MÓDULOS DE I/O:

ESPECÍFICO A DETERMINADO TIPO DE COMPUTADOR É


FORNECIDO PELO FABRICANTE DO EQUIPAMENTO ATRAVÉS DO
ARQUIVO IO.SYS, QUE CONTÉM OS DRIVERS (ROTINAS RESIDENTES)
DOS SEGUINTES DISPOSITIVOS:
CONSOLE (CON)
IMPRESSORA (PRN)
PORTA SERIAL (AUX)
DISK BOOT (RECARGA DO DOS)

MÓDULO NÚCLEO:

ESCRITO PELO DESENVOLVEDOR DO SISTEMA OPERACIONAL É


FORNECIDO ATRAVÉS DO ARQUIVO MSDOS.SYS.
O NÚCLEO COMUNICA-SE COM OS CONTROLADORES DE
DISPOSITIVOS (DRIVERS) A PARTIR DAS SOLICITAÇÕES DE I/O DOS
APLICATIVOS, QUE SÃO TRANSFORMADAS EM INSTRUÇÕES
APROPRIADAS ÀS DIVERSAS CONTROLADORAS DE HARDWARE.
FUNÇÕES :
GERENCIAMENTO DE ARQUIVOS
GERENCIAMENTO DA MEMÓRIA
ATENDIMENTO A PROGRAMAS (INT 20H A 3FH)
ACESSO AO RELÓGIO DO SISTEMA.

PROCESSADOR DE COMANDOS (SHELL):


SERVE DE INTERFACE AO USUÁRIO COM O SISTEMA OPERACIONAL, É
FORNECIDO NO ARQUIVO COMMAND.COM.

CATEGORIAS DOS COMANDOS :


INTERNOS (EM MEMÓRIA: dir, del, copy, ren, type, cd, md, ...)
EXTERNOS (EM DISCO(.exe): attrib, doskey, fdisk, scandisk, undelete,..)
ARQUIVOS DE LOTE (.bat): executar comandos do sistema em batch.

PREFERÊNCIA PARA EXECUÇÃO :


INTERNOS; .COM ; .EXE E .BAT
________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 2

A BUSCA POR COMANDOS NO DOS/WINDOWS É FEITA NA SEGUINTE


ORDEM:

1º. NA MEMÓRIA.
2º. NO DIRETÓRIO CORRENTE
3º. NOS DIRETÓRIOS RELACIONADOS NA VARIÁVEL path.

ALOCAÇÃO DA MEMÓRIA PELO DOS EM PROCESSAORES I8086

8086 MEMORY MAP



64 K ROM BIOS F0000H - FFFFFH

ROM + VÍDEO RAM 384 KiB ROM BASIC Present in older computers

Reserved ROM

Video BIOS ROM C0000H - C7FFFH


Vídeo RAM
- - - - - - - - - - - A0000H (adap. de vídeo: CGA,VGA,...) A0000H - BFFFFH (128k)
Command.com transiente

User RAM
RAM 640 KiB (Transiente Program Area)

Command.com residente Varies between 12K to


Disk buffers, FCB, drivers 40K
MSDOS.SYS
IO.SYS
BIOS and DOS data area 00400H - 005FFH
1K Interrupt Vector Table 00000H - 003FFH

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 3

PROGRAMA DEBUG - Principais comandos:

D = Dump : lista posições de memória

Ex.: 1) D 100:0 lista 128 bytes de memória, iniciando em 100:0


2) D CS:0 L B lista “b” bytes de memória, iniciando em CS:0

E = Enter : insere valores Hexa, nas posições de memória especificadas.

Ex.: E 40:A EB 90 Insere EB90 na memória, iniciando em 40:A

G= = Go : Executa a partir do endereço especificado.

Ex.: G=FFFF:0 Executa o conteúdo da posição FFFF:0

N = Name : Nomeia arquivo (posterior carga)

Ex.: N arquivo.txt Aponta para arquivo.txt

L = Load : carrega arquivos ou setores físicos do disco para a memória.

Ex.: 1) L 100 Carrega arquivo especificado pelo comando N


no deslocamento 100.
2) L 0 1 5 7 Carrega, no deslocamento 0 do segmento apontado por DS, da
unidade b: (1), iniciando no setor 5, 7 setores.

R = Register : Apresenta o conteúdo dos registradores.

Ex.: 1) R Mostra o conteúdo dos registradores.


2) R CS Mostra conteúdo de CS e aguarda modificação.

U = Unassemble : Desmonta programa executável

Ex.: 1) U 100 Lista as instruções (32 bytes), partindo de CS:100


2) U 100 110 Idem de CS:100 a CS:110
3) U 100 L9 Idem 9 bytes a partir de CS:100

A = Assembly : Monta código assembly no endereço especificado.

Ex.: A 100 Traduz instruções digitadas no endereço 100

W = Write : grava arquivo ou setores físicos no disco.

Ex.: 1) W Grava arq. nomeado, coloca tamanho em BX:CX


2) W 80 1 5 7 Grava 7 setores (inicia no 5) para o drive b:, do endereço
CS:80
________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 4

O processo de BOOT super simplificado:

Quando ligamos o PC ou pressionamos a tecla reset, o BIOS inicia o boot, executando


o endereço de reset FFFF0h (CS=FFFFh e IP=0000h), que executa um jump para o programa
POST que executa e chama o programa ROM BOOTSTRAP. A seguir é executado o
programa DISK BOOTSTRAP que se encontra no setor de boot ou o programa MBP (Master
Boot Program) que se encontra no MBR (Master Boot Record), carregado para a RAM pelo
ROM BOOTSTRAP.

Podemos verificar isso carregando o setor de boot do pendrive (imagem de disquete –


não existe o MBR) para a RAM e executando o programa DISK BOOTSTRAP.

Debug
-L 0 0 0 1 ; carrega setor 0 (setor de boot) do dispositivo em A: para a RAM (desloc. 0)
-U 0 ; Unassemble instrução de máquina no deslocamento 0 do segmento (jump)
-G=0 ; executa deslocto. 0 do setor de boot em RAM (jump para DISK BOOTSTRAP)

O código abaixo, se inserido no DISK BOOTSTRAP, mostra a letra Z na tela e interrompe a


continuidade do boot (A base do endereço – 0AF6 – pode ser diferente no DUMP):

debug
-L 0 0 0 1 ; carrega o setor de boot do pendrive para a RAM.
-A 3E ; inserir no deslocamento 03Eh (inicio do programa disk-bootstrap), o código
assembly abaixo (sem os comentários).

0AF6:003E mov ah, 0e ; serviço 0eh do BIOS em ah: mostrar caractere


0AF6:0040 mov al, 5A ; caractere a mostrar (letra Z)
0AF6:0042 mov bl, 07 ; cor: branco sobre preto
0AF6:0044 int 10 ; executa interrupção 10h (BIOS - serviços de vídeo) para mostrar o Z
0AF6:0046 jmp 46 ; desvia para o deslocamento 0046h (laço infinito)
0AF6:0048 ; pressione enter para encerrar o assembly

-G=0 ; executa o jump para DISK BOOTSTRAP do setor de boot, que está na
RAM (deslocamento 3Eh), modificado pelo código acima.

Se gravarmos no pendrive o setor de boot modificado, não será possível iniciar o sistema a
partir desse pendrive.

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 5

ARQUITETURA DA CPU 8086 DA INTEL

ESTE MICROPROCESSADOR POSSUI DOIS PROCESSADORES NO MESMO


CHIP, QUE TRABALHAM ASSINCRONAMENTE:

ESQUEMA DO PROCESSADOR i8086 (MÁQUINA VON NEUMANN):

BIU - UNID. DE INTERFACE DE BARRAMENTO ( BUS INTERFACE UNIT).


EU - UNIDADE DE EXECUÇÃO (EXECUTION UNIT).

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 6

BIU:

PROPORCIONA A COMUNICAÇÃO COM O AMBIENTE EXTERIOR À CPU,


ATRAVÉS DE 16 LINHAS DE DADOS BIDIRECIONAIS E DE 20 LINHAS DE
ENDEREÇAMENTO.

FUNÇÕES :
- BUSCA DA INSTRUÇÃO
- ARRANJO SEQUENCIAL DAS INSTRUÇÕES NO REGISTRO DE FILA.
- BUSCA E ARMAZENAMENTO DOS OPERANDOS.
- REALOCAÇÃO DE ENDEREÇOS
- CONTROLE DO BARRAMENTO

PARA ISSO POSSUI UM CONJUNTO DE REGISTRADORES DE SEGMENTOS, DE


COMUNICAÇÃO INTERNA, PONTEIRO DE INSTRUÇÕES (IP), REGISTRO DE FILA,
SOMADOR DE ENDEREÇOS E LÓGICA DE CONTROLE DE BARRAMENTO.
QUANDO OCIOSA A BIU REALIZA PRÉ-BUSCA DE INSTRUÇÕES NA MEMÓRIA,
ARMAZENANDO-AS NO REGISTRO DE FILA.

EU:

RESPONSÁVEL PELA EXECUÇÃO DAS INSTRUÇÕES.

FUNÇÕES :

- BUSCA DAS INSTRUÇÕES NO REG. DE FILA DA BIU


- DECODIFICAÇÃO DA INSTRUÇÃO
- GERA ENDEREÇOS DE OPERANDOS À BIU
- REQUISITA LEITURA OU GRAVAÇÃO NA MEMÓRIA/PERIF.
- PROCESSA A OPERAÇÃO ESPECIFICADA PELA INSTRUÇÃO
- ALTERA OS SINALIZADORES DE ESTADO, CONFORME O RESULTADO DA
INSTRUÇÃO.

PARA REALIZAR ESSAS FUNÇÕES, É COMPOSTA POR: ULA, REGISTRADOR DE


FLAGS DE ESTADO E CONTROLE (SINALIZADORES), OITO REGISTRADORES
GERAIS, REGISTRADORES TEMPORÁRIOS E LÓGICA DE CONTROLE DE FILA.

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 7

OS REGISTRADORES DO 8086

POSSUI 14 REGISTRADORES, COM 16 BITS CADA, DIVIDIDOS EM 4 GRUPOS :

1 - REGISTRADORES GERAIS
2 - REGISTRADORES DE SEGMENTO
3 - REGISTRADORES PONTEIROS E ÍNDICES
4 - REGISTRADORES PONTEIROS DE INSTRUÇÕES E DE ESTADO

1) REGISTRADORES GERAIS :

SÃO OS REGISTRADORES AX, BX, CX e DX QUE PODEM SER USADOS COMO


2 REGISTRADORES DE 8 BITS CADA.

AX = AH AL
Numer. dos bits: 15 8 7 0

BX = BH BL

CX = CH CL

DX = DH DL

EXEMPLO DE UTILIZAÇÃO :

AX : ACUMULADOR (OPERAÇÕES ARITMÉTICAS),


CONTER CÓDIGO DE SERVIÇOS (AH).
BX : BASE DO ENDEREÇO DE MATRIZ
CX : CONTADOR (LOOPING)
DX : DADOS, RESTO DE DIVISÃO, DESLOCAMENTOS NO SEGTO.
DE DADOS, ENDER. PORTA DE SAIDA.

Escreva um programa (prog2.asm) para mostrar na tela o alfabeto em maiúsculas e


minúsculas, um em cada linha, utilizando laço (loop).

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 8

2) REGISTRADORES DE SEGMENTO :

UM PROGRAMA EM SISTEMAS QUE UTILIZAM O PROCESSADOR 8086 PODE


ALOCAR ATÉ 4 BLOCOS DE MEMÓRIA, CHAMADOS SEGMENTOS, CUJOS
ENDEREÇOS INICIAIS SÃO ARMAZENADOS NOS REGISTRADORES DE
SEGMENTO CORRESPONDENTES :

CS, DS, ES, e SS.

2.1) SEGMENTO DE CÓDIGO

UTILIZADO PARA ARMAZENAR AS INSTRUÇÕES DO PROGRAMA. ESTE


SEGMENTO TEM SEU ENDEREÇO INICIAL NO REGISTRADOR CS.
DESLOCAMENTOS DENTRO DO SEGMENTO DE CÓDIGO SÃO
ARMAZENADOS NO REGISTRADOR IP (INSTRUCTION POINTER), CUJO
VALOR É AUTOMATICAMENTE MODIFICADO PELO SISTEMA.

2.2) SEGMENTO DE DADOS

UTILIZADO PARA ARMAZENAR OS DADOS UTILIZADOS PELO PROGRAMA.


SEU ENDEREÇO INICIAL É ARMAZENADO NO REGISTRADOR DS.
DESLOCAMENTOS NO SEGMENTO DE DADOS SÃO ARMAZENADOS NOS
REGISTRADORES SI (SOURCE INDEX) E DI (DESTINATION INDEX), OU
OUTROS.

2.3) SEGMENTO EXTRA

É UTILIZADO COMO SEGMENTO EXTRA DE DADOS. SEU ENDEREÇO


INICIAL É ARMAZENADO NO REGISTRADOR ES. DESLOCAMENTOS
ARMAZENADOS EM DI.

2.4) SEGMENTO DE PILHA

UTILIZADO PARA PERMITIR QUE UM PROGRAMA EM EXECUÇÃO CHAME


OUTRO PROGRAMA E RETOME A EXECUÇÃO NO PONTO EM QUE PAROU,
QUANDO RECEBER NOVAMENTE O CONTROLE. OS DADOS NO SEGMENTO
DE PILHA SÃO ACESSADOS PELA TÉCNICA L.I.F.O.
O ENDEREÇO INICIAL DO SEGMENTO DE PILHA É ARMAZENADO NO
REGISTRADOR SS.
DESLOCAMENTOS NO SEGMENTO DE PILHA SÃO ARMAZENADOS EM SP
(STACK POINTER) E BP (BASE POINTER). O VALOR DE SP É
AUTOMATICAMENTE MODIFICADO PELO SISTEMA QUANDO SE INSERE OU
RETIRA DADOS DA PILHA, SEMPRE APONTANDO PARA O TOPO DA PILHA.

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 9

ESQUEMA DE UM PROGRAMA NA MEMÓRIA:


ENDEREÇAMENTO PADRÃO USADO PELO S. O. PARA PROGRAMAS .EXE,
QUANDO SÃO CARREGADOS NA MEMÓRIA PARA EXECUÇÃO:

REGISTRADORES PROGR. NA MEMÓRIA


DE SEGMENTO
SEG. DE PILHA
SS eeeeh eeee0 h
SEG. EXTRA (DADOS)
dddd0 h

SEG. DE DADOS
cccc0 h

SEG. DE CÓDIGO
CS bbbbh bbbb0 h
P.S.P.* (100 h Bytes)
DS=ES aaaah aaaa0 h

Sistema Operacional
CPU 00000 h
* Program Segment Prefix

SE NÃO HOUVER O SEGMENTO DE PILHA, O VALOR DE SS É IGUAL AO DE CS


E SP É ZERO.

O POSICIONAMENTO (ENDEREÇOS) DOS REGISTRADORES DS E ES ABAIXO


DECORREM DE INSTRUÇÕES NO PRÓPRIO PROGRAMA, QUE INDICAM O
PONTO DO PROGRAMA QUE DEVEM ENDEREÇAR NA RAM.

REGISTRADORES PROGR. NA MEMÓRIA


DE SEGMENTO
SEG. DE PILHA
ss (SP E BP)

SEG. EXTRA (DADOS)


es (DI)

SEG. DE DADOS
ds (SI / DI)

SEG. DE CÓDIGO
cs (IP)
PSP
CPU

COMO O TAMANHO DOS REGISTRADORES É 16 BITS E O TAMANHO DO


ENDEREÇO FÍSICO (BARRAMENTO DE ENDEREÇOS) É DE 20 BITS, CADA
SEGMENTO DE UM PROGRAMA SEMPRE É CARREGADO EM ENDEREÇO DE
PARÁGRAFO (ENDEREÇOS FÍSICOS TERMINADOS POR ZERO).
________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 10

ISSO POSSIBILITA TRUNCAR O DÍGITO (4 bits) MAIS À DIREITA (zero),


INSERINDO APENAS OS QUATRO DÍGITOS MAIS SIGNIFICATIVOS DO
ENDEREÇO FÍSICO NOS REGISTRADORES DE SEGMENTO (BASE DO
ENDEREÇO LÓGICO) E A CPU RECUPERÁ-LO NO MOMENTO DA FORMAÇÃO
DO ENDEREÇO FÍSICO.

OS SEGMENTOS NÃO SÃO NECESSARIAMENTE SEPARADOS, PODENDO


OCORRER SOBREPOSIÇÃO.

ENDEREÇO FÍSICO COM 20 BITS, ENDEREÇAM NO MÁXIMO 1 MiB DE


MEMÓRIA RAM.

REGISTRADORES COM 16 BITS PERMITEM DESLOCAMENTOS MÁXIMOS


DE 64 KiB DE RAM.

ENDEREÇO FÍSICO = BASE * 10H + DESLOCAMENTO.


base desloc
ENDEREÇO LÓGICO(16 BITS) = 7000 : 0123
ENDEREÇO FÍSICO = 70123

• O PROGRAMA P-REGSEG.ASM MOSTRA OS VALORES DOS


REGISTRADORES DE SEGMENTOS, COM OS VALORES ATRIBUÍDOS PARA
A EXECUÇÃO PELO SISTEMA OPERACIONAL.

3) REGISTRADORES PONTEIROS E ÍNDICES

REGISTRADORES PONTEIROS:

SP e BP SÃO UTILIZADOS PARA ARMAZENAR DESLOCAMENTOS NO


SEGMENTO DE PILHA.

SP - (STACK POINTER) PONTEIRO DE PILHA, APONTA PARA A POSIÇÃO DO


TOPO DA PILHA (último dado inserido), SENDO SEU VALOR AUTOMATICAMENTE
MODIFICADO QUANDO INSERIMOS (PUSH : SP=SP - 2) OU RETIRAMOS (POP :
SP = SP + 2), DADOS DA PILHA.

O VALOR DE SP É AUTOMATICAMENTE DIMINUÍDO QUANDO INSERIMOS


DADOS NA PILHA(PUSH) E AUMENTADO QUANDO RETIRAMOS DADOS DA
PILHA (POP), PORTANTO A PILHA CRESCE “PARA BAIXO”.

O TAMANHO MÁXIMO DA PILHA, COM 16 BITS, É FFFEh BYTES.

BP - (BASE POINTER) PONTEIRO BASE, UTILIZADO PARA ACESSO DIRETO A


ALGUMA POSIÇÃO DA PILHA (PASSAGEM DE PARÂMETROS ENTRE
PROGRAMAS).

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 11

EXEMPLO DO FUNCIONAMENTO DA PILHA

A) CONFIGURAÇÃO INICIAL DA PILHA:

OBSERVE QUE AS FIGURAS ABAIXO ESTÃO INVERTIDAS, POIS TEM OS


ENDEREÇOS CRESCENDO DE CIMA PARA BAIXO.

SS 00A8 00A80
+
Futuras
entradas
SP 000C na
pilha

00A8A

00A8C Topo da
pilha

Entradas
anteriores
na pilha

B) CONFIGURAÇÃO APÓS COLOCAR O VALOR A01F NA PILHA (PUSH)

SS 00A8 00A80 Futuras


+ entradas
na
SP 000A pilha

00A8A 1F Topo da
A0 pilha
00A8C
Entradas
anteriores
na
pilha

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 12

C) CONFIGURAÇÃO APÓS “RETIRADA” DE A01F DA PILHA (POP)

SS 00A8 00A80
+
Futuras
entradas
SP 000C na
pilha

00A8A 1F
A0
00A8C Topo da
pilha
Entradas
anteriores
na pilha

CRESCIMENTO DA PILHA.
SE A PILHA OCUPAR UM SEGMENTO DE MEMÓRIA (64KiB), QUAIS
VALORES DE SP INDICAM PILHA CHEIA E PILHA VAZIA? LEMBRANDO QUE SP
APONTA PARA O BYTE DE MENOR ENDEREÇO DA PALAVRA NO TOPO DA PILHA.

OBSERVE QUE OS VALORES NUMÉRICOS SÃO ARMAZENADOS COM AS


POSIÇÕES MAIS SIGNIFICATIVAS DO NÚMERO NOS ENDEREÇOS MAIORES E AS
MENOS SIGNIFICATIVAS NOS ENDEREÇOS MENORES (little-endian).

QUANDO O PROGRAMA CHAMA UMA SUB-ROTINA OU PROCEDURE


(CALL SUB_ROT), ANTES DO DESVIO A CPU INSERE NA PILHA O ENDEREÇO DE
RETORNO - IP (SE A PROC CHAMADA ESTÁ DENTRO DO SEGMENTO) OU CS:IP
(SE A PROC ESTÁ FORA DO SEGMENTO) - QUE É DA INSTRUÇÃO SEGUINTE AO
CALL DO CHAMADOR. NA SUB-ROTINA CHAMADA, A INSTRUÇÃO RET
RESTAURA O ENDEREÇO DE RETORNO DA PILHA PARA IP OU CS:IP (pop).

• O PROGRAMA P-PUSH.ASM MOSTRA O USO DA PILHA (PUSH E POP)

A INSTRUÇÃO CALL CAUSA A ALTERAÇÃO DE SP AO DESVIAR PARA A SUB-


ROTINA CHAMADA.
POR EXEMPLO, EXECUTANDO UM CALL PARA SUB_ROT ABAIXO:
SUB_ROT PROC
PUSH AX
PUSH SI
PUSH DS
...
POP DS
POP SI
POP AX
RET
SUB_ROT ENDP

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 13

comportamento de registrador SP
SP->
SP-> Ender. Ret. Ender. Ret. SP-> Ender. Ret.
AX AX
SI SI
SP-> DS DS

SP antes do call SP após o call PUSH AX,SI,DS POP DS,SI,AX

OBSERVE ABAIXO QUE OCORRERÁ TRAVAMENTO SE A PROCEDURE


CHAMADORA COLOCAR DADOS NA PILHA E A PROC CHAMADA RETIRÁ-LOS
(A); E TAMBÉM SE A PROC CHAMADA COLOCAR E NÃO RETIRAR DADOS DA
PILHA (B), POIS RET NÃO RECUPERARÁ O ENDEREÇO DE RETORNO:
A B
PROG1 PROC PROG1 PROC
PUSH BX CALL PROG2
CALL PROG2 MOV AH,4CH
MOV AH,4CH INT 21H
INT 21H PROG1 ENDP
PROG1 ENDP PROG2 PROC
PROG2 PROC PUSH BX
POP BX RET
RET PROG2 ENDṔ
PROG2 ENDṔ

PORTANTO A PASSAGEM DE DADOS PARA A PROC CHAMADA, ATRAVÉS


DA PILHA, DEVE SER FEITA COM CUIDADOS ESPECIAIS

Represente os valores na ordem de saída da pilha, para a seguinte sequência de comandos:


push 5, push 3, pop, push 2, push 8, pop, pop, push 9, push 1, pop, push 6, pop, pop,
push 4, pop, pop.

• Analise o programa P-CALL.ASM, executando DEBUG P-CALL.EXE, e observe


o valor de SP durante um CALL. Acione o progr. digitando P no prompt do debug.

REGISTRADORES ÍNDICES:

SI - UTILIZADO COMO “ÍNDICE FONTE” QUE CONTÉM O DESLOCAMENTO DO


OPERANDO FONTE NO SEGMENTO DE DADOS.
DI - UTILIZADO COMO “ÍNDICE DE DESTINO”, QUE CONTÉM O
DESLOCAMENTO DO OPERANDO DESTINO NO SEGMENTO DE DADOS.

DS B000 B0000

SI 001C B001C Oper. origem

SI 001F B001F Oper. destino

• O PROGRAMA P-SOMA.ASM MOSTRA O USO DE SI.


________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 14

4) REGISTRADORES PONTEIRO DE INSTRUÇÃO (IP) E DE ESTADO (FLAGS)

IP - INSTRUCTION POINTER, UTILIZADO PARA CONTER O


DESLOCAMENTO, NO SEGMENTO DE CÓDIGO, DA PRÓXIMA
INSTRUÇÃO A SER EXECUTADA (IP + TAMANHO DA INSTRUÇÃO).

CS 7000 70000

IP 0123 70123 próx. instrução

Os deslocamentos usados no IP podem ser observados na listagem de compilação (prog.lst),


ou executando um programa passo a passo (debug prog.exe).

REGISTRADOR DE FLAGS :

REGISTRADOR DE 16 BITS, NOVE DOS QUAIS SÃO USADOS PARA INDICAR


VÁRIAS CONDIÇÕES DURANTE A EXECUÇÃO DE UM PROGRAMA.
OS BITS 0, 2, 4, 6, 7 e 11 SÃO USADOS COMO FLAGS DE ESTADO QUE
DENOTAM RESULTADOS DE OPERAÇÕES NO PROGRAMA.
OS BITS 8 A 10 CONTÉM FLAGS DE CONTROLE E OS BITS 1, 3, 5 e 12 A 15
NÃO SÃO USADOS.

11 10 9 8 7 6 5 4 3 2 1 0
O D I T S Z A P C

T = TRAP: MODO PASSO A PASSO


I = INTERRUPT-ENABLE : ATIVA/DESATIVA INT MASCARÁVEIS (CLI/STI).
D = DIREÇÃO: 0: INCREMENTA SI/DI; 1: DECREMENTA SI/DI
Z = ZERO: 1 SE OS OPERANDOS FOREM IGUAIS, 0 SE FOREM DIFERENTES
C = CARRY: 1 SE RESULT. > 16 BITS OU NÚMERO NEGATIVO NA SUBTRAÇÃO
NA COMPAR: 1 SE 2 O. > 1O. ; ZERO SE 2O. <= 1O. (ex.: cmp AX,BX)
A = AUXILIAR: IGUAL CARRY, PARA 8 BITS.
P = PARIDADE: 1 SE O RESULTADO DA OPERAÇÃO GERAR QTDE PAR DE BITS.
S = SINAL: 1 SE O RESULTADO FOR NEGATIVO, 0 SE POSITIVO.
O = OVERFLOW: ESTOURO.

No debug: (-r ) o bit T não é mostrado


OV DN EI NG ZR AC PE CY → Quando bit = 1
NV UP DI PL NZ NA PO NC → Quando bit = 0

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 15

POSIÇÕES DE MEMÓRIA RESERVADAS AO PROCESSADOR.


PARA O FUNCIONAMENTO DOS PROCESSADORES x86, ALGUMAS
POSIÇÕES DE MEMÓRIA SÃO RESERVADAS PARA USO ESPECÍFICO DA CPU:

 ENDEREÇO DE RESET
O ENDEREÇO FFFF0h DA MEMÓRIA ROM É EXECUTADO QUANDO
LIGAMOS O COMPUTADOR OU PRESSIONAMOS A TECLA RESET (CS=FFFFh E
IP=0000h).
FFFF0h CONTÉM UM JUMP PARA O ENDEREÇO ONDE ENCONTRA-SE O
PROGRAMA POST (POWER ON SELF TEST), QUE É EXECUTADO E PASSA O
CONTROLE AO PROGRAMA ROM BOOTSTRAP QUE INICIARÁ O PROCESSO DE
BOOT A PARTIR DO DISPOSITIVO INDICADO NA MEMÓRIA CMOS.
BASICAMENTE COPIA PARA A RAM OU O SETOR DE BOOT (dispositivos não
particionáveis) OU O SETOR MBR (dispositivos particionados) DO DISPOSITIVO DE
PARTIDA, CUJO CONTEÚDO INCLUI CÓDIGO PARA INICIAR A CARGA DO
SISTEMA OPERACIONAL (I/O.SYS).

 TVI – TABELA DE VETORES DE INTERRUPÇÕES.


OCUPA OS ENDEREÇOS DE 00000h ATÉ 003FFh (1 KiB) DA MEMÓRIA RAM
PARA CONTER OS ENDEREÇOS LÓGICOS DOS PROGRAMAS MANIPULADORES
DE INTERRUPÇÕES (INTERRUPT HANDLER) RESIDENTES EM RAM OU ROM,
QUE ATENDEM AS 256 POSSÍVEIS INTERRUPÇÕES DIRECIONADAS AO
PROCESSADOR, NUMERADAS DE 00H a FFH.

Jump para post fffff b


ffff0h

pont.p/ manip.da int.255(ff) 3ffh


3fch

ponteiro p/ manip. da int 1 7h


4h
ponteiro p/ manip. da int 0 3h
0h

CADA ENTRADA DA TABELA É COMPOSTA POR 4 BYTES, OS DOIS BYTES


DE MAIOR ORDEM ARMAZENAM A BASE DO ENDEREÇO LÓGICO E OS DOIS
BYTES DE MENOR ORDEM O DESLOCAMENTO, NO FORMATO LITTLE ENDIAN.
OS ENDEREÇOS DOS MANIPULADORES DE INTERRUPÇÕES SÃO COLOCADOS
NA TVI PELO BIOS (POST), SISTEMA OPERACIONAL, OU PELO USUÁRIO.

EX.: ENTRADA NA TVI : 56ABF04B


BASE : 4BF0
DESLOCAMENTO : AB56
ENDEREÇO FÍSICO : 4BF00 + AB56 = 56A56
________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 16

O NÚMERO DA INTERRUPÇÃO (00H A FFH), MULTIPLICADO POR 4


APONTA O PARA O PRIMEIRO BYTE DA ENTRADA.

INTERRUPÇÕES:

INTERRUPÇÕES SÃO SINAIS ENVIADOS À CPU, QUE CAUSAM A


SUSPENSÃO DO TRABALHO EM CURSO, E TRANSFEREM O USO DO
PROCESSADOR PARA OS PROGRAMAS “MANIPULADORES DE INTERRUPÇÕES”.
OS MICROPROCESSADORES INTEL, DA FAMÍLIA x86, SUPORTAM 256
NÍVEIS DE INTERRUPÇÕES DIRECIONADAS À CPU A PARTIR DE TRÊS EVENTOS:

 INTERRUPÇÕES INTERNAS POR HARDWARE.


 INTERRUPÇÕES EXTERNAS POR HARDWARE.
 INTERRUPÇÕES POR SOFTWARE.

INTERRUPÇÕES INTERNAS POR HARDWARE:

SÃO CAUSADAS POR DETERMINADOS EVENTOS OCORRIDOS DURANTE A


EXECUÇÃO DE UM PROGRAMA (FAULT), COMO TENTAR REALIZAR UM DIVISÃO
POR ZERO. A ATRIBUIÇÃO DOS NÚMEROS DESSAS INTERRUPÇÕES É
IMPLEMENTADA DENTRO DO PROCESSADOR E NÃO PODE SER MODIFICADA.

INTERRUPÇÕES EXTERNAS POR HARDWARE:

INTERRUPÇÕES EXTERNAS SÃO CANALIZADAS À CPU POR


CONTROLADORES DE PERIFÉRICOS OU COPROCESSADORES (8087/80287) E
INGRESSAM NO PROCESSADOR ATRAVÉS DE DOIS PINOS: NMI E INTR

 NMI – NON MASKABLE INTERRUPT.

O PINO NMI É RESERVADO PARA INTERRUPÇÕES CAUSADAS POR


EVENTOS CATASTRÓFICOS, QUE NÃO PODEM SER IGNORADOS, COMO ERRO
DE PARIDADE OU FALTA DE ENERGIA. ESSAS INTERRUPÇÕES NÃO SOFREM
EFEITO DAS INSTRUÇÕES CLI (CLEAR I) E STI (SET I).

 INTR (INTERRUPT REQUEST).

RECEBE INTERRUPÇÕES CANALIZADAS À CPU PELO DISPOSITIVO PIC


(PROGRAMMABLE INTERRUPT CONTROLLER) QUE PERMITE
HABILITAR/DESABILITAR INTERRUPÇÕES PARA PERIFÉRICOS ESPECÍFICOS E
PRIORIZAR SEU ATENDIMENTO.
A CPU CONTROLA O PIC ATRAVÉS DE PORTAS DE I/O E O PIC ENVIA
SINAIS À CPU PELO PINO INTR. AS INTERRUPÇÕES RECEBIDAS PELO PINO INTR
PODEM SER GLOBALMENTE HABILITADAS E DESABILITADAS PELAS
INSTRUÇÕES STI (SET IF) E CLI (CEAR IF).
O SISTEMA DE INTERRUPÇÕES DA CPU, QUANDO DESABILITADO,
PERMITE A EXECUÇÃO DE INSTRUÇÕES ATÔMICAS.

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 17

INTERRUPÇÕES POR SOFTWARE:

QUALQUER PROGRAMA PODE SOLICITAR UMA INTERRUPÇÃO,


SIMPLESMENTE EXECUTANDO UMA INSTRUÇÃO INT ASSOCIADA AO NÚMERO
DA INTERRUPÇÃO.

O MS/DOS UTILIZA AS INTERRUPÇÕES NUMERADAS DE 20H A 3FH PARA


COMUNICAÇÃO COM SEUS MÓDULOS E APLICATIVOS. OS APLICATIVOS
SOLICITAM SERVIÇOS AO MS/DOS ATRAVÉS DA INTERRUPÇÃO 21H O CÓDIGO
DO SERVIÇO NO REGISTRADOR AH. O ROM BIOS E APLICATIVOS UTILIZAM
OUTRAS FAIXAS DE VALORES PARA INTERRUPÇÕES.

A ROTINA A SER ATIVADA (MANIPULADOR DE INTERRUPÇÃO –


INTERRUPT HANDLER) É IDENTIFICADA A PARTIR DO NÚMERO DA
INTERRUPÇÃO.

PROCESSO DE TRATAMENTO:

AO RECEBER UMA INTERRUPÇÃO, A CPU EXECUTA OS SEGUINTES PASSOS:

1) Conclui a execução da instrução corrente (Interrupções de Hardware) e envia um


sinal de Interrupt Aknowledge (INTA) para a interface de hardware.
2) Recebe o número da interrupção (N) pela barra de dados associada à interface.
3) Salva o registrador de Flags na pilha.
4) Desliga os bits IF e TF do registrador de flags.
5) Salva os registradores CS e IP na pilha.
6) Carrega em IP (N x 4) e em CS (N x 4 + 2) o endereço do manipulador gravado
na TVI (Primeira instrução a executar do manipulador da interrupção).
7) Ao executar a instrução IRET (Última instrução do manipulador), A cpu restaura
os valores de IP, CS e Flags salvos na pilha e retorna à execução interrompida.

________________________________________________________________prof. Arnaldo/Tiago_________
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 18

MANIPULADORES DE INTERRUPÇÕES:

PROGRAMAS ESCRITOS PARA ATENDER INTERRUPÇÕES SÃO FORMADOS


POR DUAS ROTINAS: UMA DE PREPARAÇÃO DO AMBIENTE, PARA PODER SER
ALCANÇADO PELA CPU E OUTRA QUE EXECUTARÁ O TRABALHO ASSOCIADO À
INTERRUPÇÃO (ATENDIMENTO DA INTERRUPÇÃO).

OS MANIPULADORES DE INTERRUPÇÕES SÃO ROTINAS RESIDENTES OU


NA MEMÓRIA ROM (PERTENCENTES AO BIOS), OU NA MEMÓRIA RAM
(PERTENCENTES AO SISTEMA OPERACIONAL OU A USUÁRIOS) E DEVEM
OBSERVAR OS ITENS ABAIXO:

1. DESABILITAR O SISTEMA DE INTERRUPÇÕES ENQUANTO ALTERA


A ENTRADA DA TVI DA INTERRUPÇÃO A ATENDER (CLI);
2. COLOCAR NA ENTRADA DA TVI ASSOCIADA À INTERRUPÇÃO, O
ENDEREÇO LÓGICO DE MEMÓRIA, ONDE ENCONTRA-SE O
CÓDIGO PARA O ATENDIMENTO À INTERRUPÇÃO (CS:desloc-da-
rotina);
3. RESERVAR PARA O MANIPULADOR A QTDE DE RAM QUE
NECESSITA, EM QUANTIDADE DE PARÁGRAFOS;
4. REABILITAR O SISTEMA DE INTERRUPÇÕES (STI);
5. O CÓDIGO ESCRITO PARA PREPARAÇÃO DO AMBIENTE DEVE
TERMINAR (INT 21H) COM AH=31H (TSR);
6. DEVOLVER OS REGISTRADORES COM OS MESMOS VALORES QUE
RECEBEU;
7. EM AMBIENTE MONO TAREFA NÃO DEVE CHAMAR O SISTEMA
OPERACIONAL, DEVENDO INTERAGIR DIRETAMENTE COM O BIOS
(PROGRAMA NÃO REENTRANTE);
8. O CÓDIGO PARA O ATENDIMENTO DA INTERRUPÇÃO DEVE
TERMINAR COM A INSTRUÇÃO IRET.

• O PROGRAMA P-TSR-05.ASM É ATIVADO PELA INT 05H (PrtScr).

________________________________________________________________prof. Arnaldo/Tiago_________

Você também pode gostar