Conjunto de Instruções Flashcards

1
Q

Quais são os tipos de flags mais comuns? Especifique cada uma.

A

FZ –> Flag zero, acontece quando uma operação tem resultado zero
FO –> Flag de overflox, é destinada e usada em números de sinais, acontece quando há alguma interferência que possa interferir no sinal
FS–> Flag de sinal, indica o sinal do resultado (1, -) (0, +)
AF –> Flag auxiliar, indica se houve um vai um nos 4 bits menos significativos
FC –> Flag de carry, acontece quando ocorre um vai 1, ultrapassa da sua capacidade máxima
FP–> Flag de Paridade, é análise de paridade dos 8 bits menos significativos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quantos bytes é alocado em DB, DW, DD..

A

db -> 1 byte (4 bits)
dw -> 2 bytes
dd -> duplo word, 4 bytes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como pode ser dado o tipo de operação lógico de movimentação (MOV)?

A

Pode ser dado entre registradores, entre reg e imediato, entre memória / registrador, registrador/memória, imediato/memória.
* O imediato é configurado dado o tamanho do registrador
* mov [mem], [mem] não é aceito
* Em operações envolvendo memória o endereço especificado é o menos significativo
* Em casos em que o operando é imediato, deve especificar a quantidade em memória que se deseja alocar

Ex mov [ dst ], org => endereço carregado na memória DS«4 + dst é org
** Quando estamos tratando de meíria. O endereço apontado é o litle end

Ex: mov byte[si], 0x11 ** Será só alocado 11 no primeiro segmento já que é de 1 byte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Como é determinado o endereço de memória no modo real ?

A

O endereço físico tem 20 bits com o shift de 4. Para acessar dados, o endereço é dado por DS com shift de 4 «4, somado ao offset indicador

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que é PUSHF e PUSHFD?

A

Ambos são usados para fazer o push do registrador de flags na memória, o segundo faz push das EFLAGS, que são os regs de 32 bits. Para PUSHF , sp é decrementado em 2, caso contrário em 4

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

PUSHA E PUSHAD. O que são?

A

PUSHA e PUSHAD é utilizado para fazer push de registradores de propósito geral de 16 bits e 32 bits respectivamente. A ordem é AX, CX, DX, BX, SP, BP, SI, DI.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Em quantos bytes a instrução POP, POPA, POPAD incrementa o registrador SP?

A

POP usa o SS:(E)SP a depender do operador. Para POP, será 2 ou 4 bytes. No que se trata de POPA ou POPAD seá 8 * qtd_bytes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Que registrador ou registradores são usados como endereço de offset para instruções de String?

A

DI (Dest index) e SI(Source Index). São comumente usados com MOVS, LODS, STOS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como se dá a manipulação aritmética de multiplicação de sinal?

A

Sem sinal: mul org

Há a multiplicação de origem com AX, AL, EAX, a depender de origem, a operação só acontece com registrador ou operando em memória, não se usa imediato.

Os valores multiplicados dobram de tamanho.

Se org tiver 8 bits, AH fica com 8 bits + e AL fica com 8 bits -. Se org 16 bits, DX 16 bits +, AX 16 bits -. Se 32 bits, EDX 32 bits +, EAX 16 bits -.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Como se dá a manipulação aritmética de multiplicação de sinal?

A

1 : imul org (Tem as mesmas funcionalidades do mul normal, usando os regs de AX, AL, EAX, e com armazenamentos padrões (AH, AL)/ (DX/AX) / (EDX/EAX))

Este consideramos os sinais. Há 3 formas:

obs: Para operandos múltiplos o resultado é do tamanho deles.

#2: imul dest, org
Onde dest tem 16/32 bits, nesse daqui, temos dest = dest * mul

org não pode ser imediato, dest tem que ter 16/32 bits. dest = org * imediato

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Como se dá a divisão sem sinal. Onde é armazenado resto e quociente?

A

A divisão é dado entre o divisor que é indicado na operação e um registrador (a depender do tamanho do divisor/ O dividendo tem o dobro do dividendo).
Dividendo : AX (16 BITS)
DX:AX (32 BITS)
EDX: EAX (64 BITS)
DIVISOR: Quando o divisor é de 8 bits
AH: RESTO, AL : QUOCIENTE
Quando divisor é de 16 bits
DX: RESTO, AX: QUOCIENTE
Quando divisor é de 32 bits
EDX: RESTO, EAX: QUOCIENTE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Como se dá a divisão sem sinal. Onde é armazenado resto e quociente?

A

IDIV, funciona da mesma forma que DIV, porém, caso registrador muito grande, deve haver extensão de sinal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quantos bytes têm cada entrada da Tabela de vetor de interrupções do Modo
Real? Quais informações são armazenadas? E no caso do modo protegido?

A

Tem 4 bytes, o vetor de tratamento vai de 0 à 1024 bytes de armazenamento. O modo protegido tem um IDT que é uma tabela de descritores de interrupções, é usado 8 bytes para descrever cada interrupção.

Existe 256 vetores cada um contendo o endereço para a IST : CS + IP (2 BYTES)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quando acontece uma interrupção, o controle deve ser enviado para um controle de tratamento. O que é e qual o nome do processo que controla tal questão?

A

ISR -> Serviço de interrupção de Instrução
O ISR está em memória e trata das instruções, que podem ser de hardware e software

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que as interrupções tem de diferente dos procedimentos normais?

A

As interrupções podem ser de HW e SW, podem ocorrer de forma imprevisível, não necessariamente precisam ser tratadas no mesmo momento, o ISR, é responsável por tal tratamento de rotina das interrupções. Quando há interrupção, as pilhas de flags são empilhadas na memória. As interrupções são identificas por números e não nomes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

O que pode causar interrupções?

A

Divisão por zero, acesso indevido a memória. Comunicações de entradas e saídas.

17
Q

Quais são os tipos de interrupções existentes?

A

Falts: Sinaliza a interrupção antes ou durante o processamento dela. Retorna para contexto antes da interrupção. Assim a instrução pode ser reiniciadas.

Falts, aborts, traps.

18
Q

Como as interrupções de Hardware acontecem?

A

São ativadas por duas entradas do processador: NMI (Non- Markable interruption) e INTR (Interruption request)

19
Q

Como são ativados e desativados o INTR (Interruption Request) por algumas instruções?

A

Por STI e CTI , que são respectivamente set interruption flag e clean interruption flag

20
Q

Como funciona o NMI (Non markable interruption)?

A

O NMI não pode ser marcada, apenas tratadas, geralmente associada a problemas de paridades do hardware

21
Q

Quais são os tipos de interrupções de software que o X86 oferece tratamento?

A

INT/INTO/BOUND/IRET/IRETD

22
Q

Quais as ações executadas quando uma instrução de INT é usada para gerar uma
interrupção no Modo Real?

A

Registrador (E)FLAGS é empilhado (manuteção do estado do processador)
 Zera as flags IF (interrupt-enable flag) e TF (trap flag) – prevenir que interrupções via INTR e single-step sejam reconhecidas durante o processamento da interrupção
 Registradores CS e (E)IP são empilhados
 Carrega CS com o seletor de segmento (16-bits) vindo do vetor de interrupção/IDT  Carrega (E)IP com o valor de offset vindo do vetor de interrupção/IDT

23
Q

Descreva os tipos de interrupção INT existente.

A

INT 16 – Interrupção de leitura.
AH é usado para setar o tipo de funcionalidade.AH ==00H (Le o teclado); AH == 01H (Obtém o estado do buffer); AH == 02H (Obtém o estado do teclado)

** Ao usar o int 16 AH==00H, AL tem registrado nela o tipo de caracter clicado

INT 10
Fornece serviços de vídeo, com EOH em AH, digita um caracter na tela e avança para próximo

. Em al tem o caracter a ser printado na tela

24
Q

O que se trata o IRET e IRETD

A

São utilizados para retornar à instrução que causou a interrupção. É importante destacar que nessa parte temos o desempilhamento de CS e IP da pilha, além das (E)FLAGS. IRET é utilizado com endereços de 32 bits

25
Q

Que tipo de interrupção é chamada para tratamento de overflow?

A

O tipo de interrupção chamada é o INTO, que ativa a interrupção tipo 4, isso ocorre quando OF (Overflow flag)==1

26
Q

Há prioridades em tratamento de interrupções, ilustre as prioridades:

A

Divisão por Zero, INT/INTO, NMI, INRT, SINGLE-STEP

27
Q

Como encontrar índice de entrada no vetor de interrupções no modo real?

A

Pega tipo da instrução, multiplica por 4 e passa para hexadecimal.

28
Q

O que é uma CALL?

A

Call é usado para chamada de rotina/procedimento. O seu endereço de retorno é salvo na pilha. Pode haver uma chamada intra-segmento e uma inter-segmento(FAR)

29
Q

Como fica a pilha para as chamadas de CALL

A

NEAR (intra-segmento) apenas o endereço de retorno (IP). FAR (intra-segmento) primeiro o CS e depois o endereço de retorno IP

30
Q

Quantos bytes têm cada entrada da Tabela de vetor de interrupções do
Modo Real? Quais informações são armazenadas e qual a ordem de
armazenamento?

A

4 bytes. 2 para IP, 2 para CS. Empilhados nessa ordem.