Conjunto de Instruções Flashcards
Quais são os tipos de flags mais comuns? Especifique cada uma.
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
Quantos bytes é alocado em DB, DW, DD..
db -> 1 byte (4 bits)
dw -> 2 bytes
dd -> duplo word, 4 bytes
Como pode ser dado o tipo de operação lógico de movimentação (MOV)?
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
Como é determinado o endereço de memória no modo real ?
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
O que é PUSHF e PUSHFD?
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
PUSHA E PUSHAD. O que são?
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.
Em quantos bytes a instrução POP, POPA, POPAD incrementa o registrador SP?
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
Que registrador ou registradores são usados como endereço de offset para instruções de String?
DI (Dest index) e SI(Source Index). São comumente usados com MOVS, LODS, STOS
Como se dá a manipulação aritmética de multiplicação de sinal?
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 -.
Como se dá a manipulação aritmética de multiplicação de sinal?
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
Como se dá a divisão sem sinal. Onde é armazenado resto e quociente?
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
Como se dá a divisão sem sinal. Onde é armazenado resto e quociente?
IDIV, funciona da mesma forma que DIV, porém, caso registrador muito grande, deve haver extensão de sinal.
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?
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)
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?
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
O que as interrupções tem de diferente dos procedimentos normais?
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