Notas de Aula - MAC 211 - Laborat�rio de Programa��o I
Aula anterior (aula 2)
Aula 3 - 2/3/2010
-
Arquitetura do Computador
-
Entrada, sa�da, UCP, barramento (8, 16, 32 ou 64 bits), mem�ria
-
Barramento do sistema � dividido em: dados, endere�os e controle
-
Arquitetura da UCP: ULA, registradores
-
Lista de processadores da fam�lia x86 - possuem "backward compatibility",
mas n�o "forward compatibility"
-
Linguagem de montagem
-
instru��es do 80x86: aritm�ticas, l�gicas, transfer�ncia de dados, pilha,
transfer�ncia de controle, entrada e sa�da: MOV, ADD, SUB, MUL, DIV, etc.
-
registradores do 8086
-
AX - acumulador
-
BX - base
-
CX - contador
-
DX - dados
-
vers�es de 8 bits: AH, AL, BH, etc.
-
vers�es de 32 bits (a partir do 80386)
-
IP - apontador de instru��o
-
indicadores (Flags) - guardam informa��es sobre resultados de opera��es
-
MOV
- copia um valor para um local
- possui v�rias formas diferentes:
-
mov reg, reg/memory/constant(ou dado imediato)
-
mov memory, reg (usa-se colchetes para indicar uma posi��o de mem�ria)
-
mov memory, constant (dado imediato)
-
com registradores de 32 bits so' mov entre registradores e' permitido
(ser� que isso ainda � v�lido nos processadores mais recentes?)
- n�o � permitido mover algo da mem�ria principal para a mem�ria principal sem passar por um registrador
- para
evitar ambiguidade de registradores do tipo AH com o valor hexa AH,
muitas ferramentas, como o NASM obrigam o uso do n�mero 0 antes de
valores hexa, por exemplo: 0AH para representar o n�mero de dedos que
temos na m�o.
-
XCHG
-
xchg reg, reg
-
xchg reg, mem
-
xchg mem, reg
-
opera��es aritm�ticas
-
add reg, reg/memory/constant
sub reg, reg/memory/constant
and reg, reg/memory/constant
or reg, reg/memory/constant
not reg/memory
-
exemplo: add AX, 34 -> AX := AX
+ 34
R�tulos e desvio incondicional
- nome_rotulo: (indentado � esquerda)
- JMP destino
- exemplo: JMP nome_rotulo
- exemplo: JMP 21A7:000211F3H
- Um programa em linguagem de montagem �:
- um conjunto de linhas
- cada linha consiste de 4 campos:
- r�tulo
- operador mneum�nico
- operando 1
- operando 2
- os itens 1 e 2 s�o opcionais; em alguns casos, o item 3 tamb�m.
Compara��o
- cmp reg, reg/memory/constant
- exemplo: cmp AX, BX
- o resultado define ("seta") o valor dos flags correspondentes que influenciam os comandos de desvio condicional
Desvio condicional
- JE, JNE, JZ, JNZ, JPE (jump if parity is even), JPO, JG, JGE, JL, JLE
Soma de n�meros em bin�rio
- exerc�cio: 11011011 + 10001111 = 101101010 <=> 219 + 143 = 362
N�meros negativos
- usando s� bit de sinal e mantendo n�meros do mesmo jeito
- usando complemento de 2: mais facil de fazer operacoes aritmeticas
- dois passos: 1) inverte todos os bits (NOT) 2) soma 1
- no 80x86 isso pode ser feito direto com NEG
- exercicio: calcular -5 em binario e depois somar a 5
- exercicio: calcular 133 + (-33) em binario
- 7FFFh: +32767, o maior positivo em 16 bits.
- 8000h: -32768, o menor negativo em 16 bits.
Na pr�xima aula: nosso primeiro programa completo em linguagem de montagem.
Pr�xima aula (aula 4)
P�gina de MAC211
P�gina do Fabio
P�gina do DCC