Baixe o app para aproveitar ainda mais
Prévia do material em texto
FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 1 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 Disk buffers, FCB, drivers MSDOS.SYS Varies between 12K to 40K IO.SYS BIOS and DOS data area 00400H - 005FFH 1 K 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. OperacionalPÁ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 SEGMENTOSNÃ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 00A80 + SP Futuras entradas na pilha 00A8A 00A8C Topo da pilha Entradas anteriores na pilha B) CONFIGURAÇÃO APÓS COLOCAR O VALOR A01F NA PILHA (PUSH) SS 00A80 Futuras + SP entradas na pilha 00A8A 1F Topo da A0 pilha 00A8C Entradas anteriores na pilha ________________________________________________________________prof. Arnaldo/Tiago_________ 000C 00A8 000A 00A8 FATEC-SP – DTI - Laboratório de AOC / Amb. Operacional PÁG. 12 C) CONFIGURAÇÃO APÓS “RETIRADA” DE A01F DA PILHA (POP) SS 00A80 + SP Futuras entradas 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: ________________________________________________________________prof. Arnaldo/Tiago_________ SUB_ROT PROC PUSH AX PUSH SI PUSH DS ... POP DS POP SI POP AX RET SUB_ROT ENDP 00A8 000C 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 PUSH BX CALL PROG2 MOV AH,4CH INT 21H PROG1 ENDP PROG2 PROC POP BX RET PROG2 END Ṕ PROG1 PROC CALL PROG2 MOV AH,4CH INT 21H PROG1 ENDP PROG2 PROC PUSH BX RET 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 2O. > 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 MANIPULADORESDE 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_________ DE SEGMENTO
Compartilhar