Prova 1

Fazer download em txt, pdf ou txt
Fazer download em txt, pdf ou txt
Você está na página 1de 8

CISC = Complex Instruction Set Computer - Compatibilidade agrega Complexidade * FORMATO DE INSTRUO (16/32 bits) - Instruction Prefixes | Opcode

| ModR/M | SIB | Displacement | Immediate 1 byte 1,2,3 1 1 1,2,4,1,2,4,|----------------------|--------|-----------------------------|---------| | | | Info Adicional OP Codifica Endereo Dado Imediato * REGISTRADORES EAX >> | | EBX >> | | ECX >> | | EDX >> | | EBP >> | ESI >> | EDI >> | CS >> DS >> SS >> ES >> FS >> GS >> EIP >> | ESP >> | | 31-16 15-8 7-0 | AH | AL | -> Acumulador |-------AX-------| | BH | BL | -> Base |-------BX-------| | CH | CL | -> Contador |-------CX-------| | DH | DL | -> Dados |-------DX-------| | BP | -> Ponteiro Base | SI | -> ndice Fonte | DI | -> ndice Destino | CODE |\ | STACK | | | DATA | | | DATA | |-> Registradores de Segmento | DATA | | | DATA |/ | IP | -> Instruction Pointer | SP | -> Stack Pointer | FLAGS | << EFLAGS

-- MODO REAL -- Byte Addressing - Espao de Endereamento * * SEGMENTOS Regies independentes 1 Segmento = 64KB (End. Mlt. 16 bytes) Endereamento de 1MB c/ Memria Segmentada Registrador de Segmento = Seletor de Segmento ESPAO DE ENDEREAMENTO Segmento = 64KB Pulos de 16 bytes Registrador de 16 bits 1MB de Endereamento (16 + 4 bits)

* NOMENCLATURA - DADOS Byte = 8 bits Word = 16 bits Double-Word = 32 bits Quad-Word = 64 bits * MODOS DE ENDEREAMENTO - Imediato mov cx, 1024H - Reg mov al, ah - Direto

mov al, [0300h] - Reg Indireto mov ch,[bx] - Base mov ch, [bx+02] - Indexado mov ch, [si+02] - Base Indexado mov ch, [bx+si] - Base Indexado c/ Deslocamento mov ch,[bx+si+03] - Porta in al, 80h in al, dx out 90h, al out dx, al * INTERRUPO - Evento que faz o processador parar o programa em execuo p/ tratar a interrupo * TABELA DE VETOR DE INTERRUPO - Cada interrupo aponta p/ uma entrada da tabela - 4 bytes = 2 bytes (IP) + 2 bytes (CS) * EXEMPLO - Interrupo 40 = Cdigo na posio 28000H? - Resposta: PUSH DS MOV AX, 0 MOV DS, AX MOV DI, 00A0H MOV WORD PTR [DI], 0 MOV WORD PTR [DI + 2], 2800H POP DS * INTERRUPES - TIPOS - DE HARDWARE: - Gerada por dispositivos prximos ao processador - Ex.: NMI- NONMASKABLE INTERRUPT(no ignorvel) INTR- INTERRUPT REQUEST(ignorvel)-> CLI(Mascara) , STI (Desmascara) DE SOFTWARE: Gerada por instrues Ex.: INT , INTO Gerada pelo processador EX.: Dividir por zero

* (E)FLAGS CF - Vai-um PF - Paridade AF - Vai-um auxiliar ZF - Zero SF - Sinal OF - Estouro Interrupo IF DF - Direo TF - Passo Simples IOPL - Nvel de Prioridade da Tarefa

NT RF VM AC VIF VIP ID -

Tarefa Aninhada Resumo Modo 8086 Virtual Checagem de Alinhamento Interrupo Virtual Pendente Interrupo Virtual ID

EX.: (Tratamento ISR) ISR20H: CMP AH, 4 ;AH entre 0-3 JGE EXIT CMP AH, 0 JZ ADDAB CMP AH, 1 JZ SUBAB CMP AH, 2 JZ MULAB DIV BL EXIT: RET ADDAB: ADD AL, BL IRET SUBAB: SUB AL, BL IRET MULAB: MUL BL IRET * INSTRUES PENTIUM - TRANSFERNCIA DE DADOS - MOV dest, orig MOV reg, reg MOV reg, imedit MOV mem, imedit MOV reg, mem MOV mem reg - MOVSX dest, orig MOVSX reg16, src8 MOVSX reg32, src8 MOVSX reg32, src16 src = reg. ou mem. - MOVZX dest, orig MOVZX reg16, src8 MOVZX reg32, src8 MOVZX reg32, src16 - PUSH orig orig = reg, mem, reg segm, imedit PUSH BX - PUSHW/PUSHD orig (imedit/32bits) PUSH 34ADh - PUSHA/PUSHAD orig (todos regs/32bits) PUSHA - PUSHF/PUSHFD (flags 16bits/32bits) PUSHF - POP dest (reg, reg seg, mem) POP BX - POPA/POPAD (todos regs/32bits) POPA - POPF/POPFD (flags 16bits/32bits) POPF - IN acumulador/DX, imedit (input) acumul = AL , AX , EAX

* -

END = imedit (8bits) DX = reg dados (16bits) IN AL, 60H OUT imedit/DX, acumulador (output) acumul = Al , AX , EAX OUT 60H, AL XCHG dest, orig (permutador(reg/end. mem)) XCHG AL, AH XLAT (translate table) BX = end. inicial AL = ndice MOV AL, 3 MOV BX, 0400H XLAT LEA (load effective address) LEA dest, label LEA BX, LISTA LDS(load ptr)/LES/LFS/LGS/LSS LDS dest, orig dest = reg orig = mem LDS BX,[SI] BSWAP dest (troca - swapping) dest = 32bits MOV EAX, 12345678H BSWAP EAX LAHF (load AH c/ flags) POPF LAHF LAHF (store AH nos flags) MOV AH, 0FFH SAHF OBS - INSTRUES PENTIUM MOV [SI], 5 (byte/word?) MOV BYTE PTR [SI], 5 MOV WORD PTR [SI], 5 ...

* ARITMTICA (Menos vistas) - CMPXCHG dest, orig (compara e permuta) CMPXCHG BL, CL Se dest = AL -> dest:=fonte Se dest =! AL -> AL:=dest - CBW (converte byte AL em word)/CWD/CWED/CDQ * ASCII x BCD - AAA (ajuste ASCII p/ add)/AAS/AAM/AAD MOV AX,0033H ; 33h '3' em ASCII MOV BL,39H ; 39h '9' em ASCII ADD AL,BL ;AL=6CH AAA ;AX=0102H ; AL = 2 e AH = 1, representando BCD 12 - DAA (ajuste decimal para adio)/DAS/DAM/DAD MOV AL,15H MOV BL,25H ADD AL,BL ;AL=3AH DAA ;AL=40H * LGICA, MANIPULAO DE BITS - SET** dest (01 se V , 00 se F) SETZ AL SETLE AX

SETNC DX - BSF/BSR dest, fonte (retorna em dest posio do 1 = 1) BSF EAX, EBX - BT(testa)/BTC(t, complm)/BTS(t, seta)/BTR(t, reseta) (guarda bit de carry flag) BT AX, BX BTC AX, 15 - SHL,SAL/SHR,SAR/ROL/ROR/RCL/RCR * LAOS, DESVIOS, SUBROT, INTERRUP - JMP alvo (FAR ou no) JMP FAR PTR FIM - LOOP/LOOPE/LOOPNE/LOOPNZ dest Decrementa CX/ECX a cada interao - SUBROTINAS CLC - Limpa CF STC - Faz CF=1 CMC - Complementa CF CLD - Limpa DF STD - Faz DF=1 CLI - Limpa IF STI - Faz IF=1 - INTERRUPES - INT tipo (interrup de software) (Empilha reg flags, CS, IP) INT 21H (Ao final ISR executa IRET) - INTO (chama 'int 4' se flag overflow = 1(setada)) - HLT (para processador) - LOCK (para barramento) LOCK XCHG - DS:SI -> 1 elemento da string source(fonte) - ES:DI -> 1 elemento da string destino * STRINGS - REP (repete while CX/ECX =! 0) REP MOVSB (antes de MOVS,STOS,INS,OUTS) - REPE/REPZ (repete while CX/ECX =! 0 e ZF=1) REPE CMPSB (antes de CMPS,SCAS) - REPNE/REPNZ (repete while CX/ECX =! 0 e ZF=0) REPNZ SCASW (antes de CMPS,SCAS) - MOVS/MOVSB/MOVSW/MOVSD (move contedo de SI para o apontado por DI) (SI,DI inc/decrementado em 1,2,4 dependendo da flag DF e tipo - CMPS/CMPSB/CMPSW/CMPSD (compara SI c/ DI) (SI,DI inc/decrementado em 1,2,4 dependendo da flag DF e tipo - SCAS/SCASB/SCASW/SCASD (compara DI c/ AL/AX/EAX) (DI inc/decrementado em 1,2,4 dependendo da flag DF e tipo do - LODS/LODSB/LODSW/LODSD (compara SI c/ AL/AX/EAX) (SI inc/decrementado em 1,2,4 dependendo da flag DF e tipo do - STOS/STOSB/STOSW/STOSD (armazena DI c/ AL/AX/EAX) (DI inc/decrementado em 1,2,4 dependendo da flag DF e tipo do - INS memomia, DX (input) (memoria = ES:DI (destino)) INS DWORD PTR ES:[DI],DX (INSD) - OUTS DX, memoria (ouput) (memoria = DS:SI (origem)) OUTS DX, BYTE PTR DS:[SI] (OUTSB) -- MODO PROTEGIDO -- De 16 -> 32 bits + insero de proteo

do dado) do dado) dado) dado) dado)

Proteo visa identificar/detectar erros ASPECTOS - PROTEO Tipo, limite de segmentos N. Privilgio: Ender.,entradas, procedimentos, instrues permitidas

* CARACT. GERAIS - 4 GB, Multitarefa, Mem. Virtual, Gerenc e Prot de Mem, Reg de 32 bits - Prot Acesso, Tabela descritores segm., Regs: controle e depurao * SEGMENTOS - Bloco contnuo de mem de localizao varivel - Regs Segmento: CS, DS, SS, ES, FS, GS - Novos regs: (segm de sistema - defini atributos das novas funes do modo protegido) - GDTR >> global descriptor table register - LDTR >> local - IDTR >> interrupt - TR >> Task * DESCRITORES DE SEGMENTO - Contm: End Base + Limite + Atributos Seletor de Segmento -> Tabela de Descritores -> Descritor de Segmento * TABELAS DE DESCRITORES GDT >> P/ todas as tarefas LDT >> P/ tarefas especficas TSS >> Contm estado das tarefas (EFLAGS) IDT >> P/ processamento de interrupo TDT >> 1 p/ cada programa

* SELETORES DE SEGMENTO (seletor de descritor = reg de segmento) -Indice da tabela descritores - CS, DS, ES, FS, GS, SS 15 0 | ndice(13bits) | TI | RPL | ^ ^ Indicador de tabela Requestor Privilege Level - Nveis de Privilgio 0 3 maior menor * ENDEREAMETNO DE MEM - End. Lgico >> Traduo Segm >> Traduo de Pg >> End Fsico End. Linear - End Lgico = Seletor de Segm + Offset ^ ^ Descrit Segm + || = End Linear End Linear (Virtual) -> Tradu Pg -> End. Linear (Fs ico) * DESCRITOR DE SEGMENTO (Genrico) - Segment Limit >> Tamanho do segmento (campo de 20bits) - Se G=0, tamanho = 1byte 1MByte (pulo de 1byte) - Se G=1, tamanho = 4bytes 4GBytes (pulo de 4Kbytes) - Base Adress >> Localizao do byte 0 do segm (campo de 32bits) - Alinhamento mltiplo de 16bits - Type - Flag S >> Tipo de descritor - Se S=0, descritor p/ segmento de sistema - Se S=1, descritor p/ segmento de codigo/dado - DPL >> Nvel de privilgio (0 - 3)

- Flag P >> Bit de presena do segmento - P=1, presente - P=0, no presente - Flag D/B - Segmento de Cdigo - execute-only ou execute/read - conforming >> passagem de execuo p/ nivel maior mantm nvel atual - nonconforming >> passagem de execuo p/ nivel maior geral exceo. Necessita de call-gate ou task-gate. - Segmento de dado - nonconforming >> no permite acesso por programas de menor nvel * Questo dw 0 ; limit 15:0 dw 0 ; base 15:0 db 0 ; base 23:16 db 0 ; type, S, DPL, P db 0 ; limit 19:16, other flags db 0 ; base 31:24 * DESCRITORES P/ SEGMENTO DE SISTEMA Descritores de segm de sistema LDT, TSS (task stack segm) Descritores 'gate' call gate, interrupt gate, trap gate, task gate

- SEM CALL GATE (os ops. indicam nivel de privil sendo 0-> Maior Privl) - Nonconforming >> CPL = DPL e RPL <= CPL - Conforming >> CPL >= DPL - COM CALL GATE (usa-se call ou jmp; permite acesso de diferentes niveis) - CALL >> CPL <= call gate DPL; RPL <= call gate DPL conforming -> CPL >= DPL; RPL >= DPL nonconforming -> CPL >= DPL - JMP >> CPL <= call gate DPL; RPL <= call gate DPL conforming -> CPL >= DPL; RPL >= DPL nonconforming -> CPL = DPL - Se o call gate executar um nonconforming CPL > DPL. O processador muda p/ pilha de menor privilegio. O SO cria uma TSS. - INTERRUPT GATES Resposta a: - Sinais de hard >> perfifricos - Sinais de soft >> INT, INTO TRAP GATES Erro durante execuo de instruo TIPOS DE EXCEES Fault >> Exceo corrigvel.Restaura estado anterior.Aponta p/ inst erro Ex: Page Fault - Traps >> Restaura estado anterior. Aponta p/ inst seguinte ao erro. Ex: Overflow - Abort >> No aponta p/ inst erro e no reinicia o programa. Ex: Erros de Hard - IDTR >> guarda end. base(32bits) e limite(16bits) - LIDT (load reg IDT) -> mem p/ reg (p/ CPL=0) - SIDT (store reg IDT) -> reg p/ mem (p/ qq CPL) - TROCA DE PILHA >> Esta so ocorre em um nivel mais alto (menor n) de privilegio. Ou seja, sai da pilha de menor priorid p/ a de maior(menor n) - O contrrio no ocorre.

- TASK >> pensa. -

unidade de trabalho que pode ser inicializada, executada ou susUma pilha p/ cada nivel de privil TSS >> guarda estado da tarefa (guardado em GDT apenas) Seletor de segm carregado em TR (LTR) ou lido (STR) LTR somente com CPL=0

- TASK-GATE DESCRIPTOR - Permite acesso indireto/direto a task - Colocado em GDT, LDT ou IDT

Você também pode gostar