domingo, 13 de janeiro de 2013

Flag de Controle


  • TF → Flag de trap (armadilha).
    • TF=1  → Apos a execução do próxima instrução ocorra  uma interrupção; a própria interrupção faz TF=0.
    • TF=0  → Caso contrario.

  • IF → Flag de interrupção.
    • IF=1 → Habilita a ocorrência de interrupções.
    • IF=0  → Inibe interrupções


  • DF Flag de direção: Usado para indicar a direção em que as operacaoes com strings são realizadas.
    • DF=1 → Decremento do endereço de memoria (Down).
    • DF=0 → Incremento do endereço de memoria(Up).

Flags de estado:


 Flags de estado:

  • CF - Flag de Carry 
  • CF = 1 → após instruções de soma que geram “vai um” ou após instruções de subtração que não geram “empréstimo” (“empresta um”). 
  • CF = 0 → caso contrário. 
  • PF - Flag de Paridade 
  • PF = 1 → caso o byte inferior do resultado de alguma operação aritmética ou lógica apresentar um número par de “1’s”; 
  • PF = 0 → caso contrário (número ímpar). 
  • AF - Flag de Carry Auxiliar: utilizado em instruções com números BCD 
  • AF = 1 → caso exista o “vai um” do bit 3 para o bit 4 de uma adição ou caso não não exista “empréstimo” do bit 4 para o bit 3 numa subtração. 
  • AF = 0 → caso contrário. 
  • ZF - Flag de Zero 
  • ZF = 1 → caso o resultado da última operação aritmética ou lógica seja igual a zero; 
  • ZF = 0 → caso contrário. 
  • SF - Flag de sinal: utilizado para indicar se o número resultado é positivo ou negativo em termos aritméticos (se não ocorrer erro de transbordo - overflow) 
  • SF = 1 → número negativo. 
  • SF = 0 → número positivo. 
  • OF - Flag de Overflow (erro de transbordo). 
  • OF = 1 → qualquer operação que produza overflow. 
  • OF = 1 → caso contrário. 
  • IF - Flag de Interrupção 
  • IF = 1 → habilita a ocorrência de interrupções. 
  • IF = 0 → inibe interrupções. 
  • DF - Flag de Direção: usado para indicar a direção em que as operações com strings são realizadas. 
  • DF = 1 → decremento do endereço de memória (DOWN) 
  • DF = 0 incremento do endereço de memória (UP).


Registos de sinalizadores (Flags):

Registos de sinalizadores (Flags):
  • Indica o estado do microprocessador durante a execução de cada instrução; 
  • Conjunto de bits individuais, cada qual indicando alguma propriedade; 
  • Subdividem-se em Flags de estado (status) e Flags de controle- 
  • Organização 



1 registo de 16 bits. 
6 flags de estado. 
3 flags de controle. 
7 bits não utilizados (sem função)





Linguagem Assembly


  • A linguagem Assembly tem um conjunto de instruções muito primitivo; 
  • Torna-se impossível entender os algoritmos, a menos que se façam comentários; 

Vantagens da Linguagem Assembly: 
  • Alta eficiência: produz programas em linguagem de máquina que podem ser mais rápidos e menores que os obtidos por outras linguagens. 
  • Algumas operações são facilitadas, como escrever em posições de memória específicas e portas de E/S, sendo praticamente impossível em linguagens de alto nível. 




Vantagens das linguagens de alto nível: 

  • Próximos às linguagens naturais (facilidade de conversão de algorítmos); 
  • Menor tempo de codificação e menor quantidade de linhas de programa; 
  • Um programa em linguagem de alto nível roda em qualquer computador, desde que haja um compilador ou interpretador adequado (portabilidade). 




As Linguagens de Alto Nível nasceram para expandir as possibilidades de programação, numa forma textual mais próxima da humana.
Necessitam de tradução para linguagem de máquina, por meio de compiladores (mais comum) ou interpretadores.






Memória





Memória: Local do computador (hardware) onde se armazenam temporária ou definitivamente dados.
Posição de memória ou endereço: Local físico da memória onde se localiza o dado.

Organização da memoria:








Organização de um computador digital:
Um computador digital pode ser descrito de uma forma simplificada segundo o seguinte diagrama:
  • Unidade central de Processamento (UCP/CPU)
  • Unidade de controle
  • Unidade Lógica e Aritmética (UAL/ULA)
  • Registos de uso geral
  • Registos específicos:
    • Registos de dados de memória (RDM)
    • Registos de endereços de memória (REM)
    • Contador de programa (Program Counter/PC)
    • Registo de instruções (RI)
    • Apontador de pilha (stack pointer (SP)














quinta-feira, 10 de janeiro de 2013

Posição de Bits:




Obs

Words são armazenados em  bytes consecutivos em memoria de 8 bits.

Byte  Baixo= byte inferior ou byte de menor ordem - endereço N

Byte alto= byte superior ou byte de maior ordem - endereço N+1

Trabalho de pesquisa nº1 Assembly

A estrutura de um programa em Assemblay.

  •  Linguagem de baixo-nível;
  • Os programas em asemblay não são executáveis; 
  • Permite escrever programas que são mais rapidamente executados que programas escritos em linguagem e alto-nível;
  • Os programas escritos em  assembly são mais pequenos e logo mais rápidos;
  • Utiliza linguagem de maquina com palavras abreviadas indicando a operação  a ser realizada pelo processador. 




modelos de memoria:
  •  Permite ao CPU determinar como esta estruturado o programa.
    • SMALL- o código e os dados estão em segmentos diferentes.
    • MEDIUM - o código pode ser maior que 64K, mas os seus dados têm que ter menos que 64K.
    • COMPACT - o código é menos de 64K, mas os dados podem ter mais que 64K.
    • LARGE - o código e os dados podem ter mais que 64K, embora os arrays não possam ser maiores que 64K.
    •  HUGE - o código os dados e os arrays podem ter mais de 64K.


Segmento de Dados DS - é utilizado para apontar para um segmento de memória que estiver sendo utilizada no armazenamento de dados do programa em execução. 

Segmento de Pilha ou SS - O registador Segmento de Pilha é utilizado para identificar o segmento que será utilizado como pilha (stack), com o objetivo de armazenar os dados temporários do programa em execução.~

Segmento de Código ou CS -  O registador Segmento de Código é utilizado para apontar para uma área de memória que contém o código de programa que está em execução.