Notas de Aula - MAC 211 - Laboratório de Programação
Aula 2 - 6/3/2001
-
Por que programar em linguagem de montagem?
-
Por que nao programar em linguagem de montagem?
-
Sistemas de numeracao
-
Decimal
-
123 = 1*10**2 + 2 * 10**1 + 3*10**0 = 100 + 20 + 3
-
123.456 = 1*10**2 + 2*10**1 + 3*10**0 + 4*10**-1 + 5*10**-2 + 6*10**-3
-
Binario
-
11001010 = 1*2**7 + 1*2**6 + 0*2**5 + 0*2**4 + 1*2**3 + 0*2**2 + 1*2**1
+ 0*2**0 = 128 + 64 + 8 + 2 = 202 (na base 10)
-
Exercicio: converter 3 numeros de 8 bits para decimal
-
Exercicio: converter um numero de 16 bits para decimal (calcular os 2 bytes
em separado, depois multiplicar o mais significativo por 256 e somar o
menos significativo)
-
Exercicio: converter 3 numeros decimais para binario (professor faz o primeiro)
-
converter 2725 -> 2725/2 = 1362 -> 681 -> 340 -> 170 -> 85 -> 42 -> 21
-> 10 -> 5 -> 2 -> 1
-
portanto 2725 (decimal) = 101010100101 (binario) = 1+4+32+128+512 +2048
-
outra forma de calcular para quem sabe as pontecias de 2 de cor: qual
a potencia de dois mais alta que cabe dentro do numero a transformar?
-
alunos fazem outros dois numeros usando uma tecnica diferente em cada conversao
-
bits mais significativos
-
os 8 bits de um byte sao numerados de 0 a 7 da direita para a esquerda
-
Hexadecimal
-
digitos de 0 a F
-
exemplos: 1234 FEA GAG0 DEAD BEEF 0AFB FEED DEAF
-
2B (hexa) = 2*16 + 11 (decimal) = 43 (decimal)
-
potencias: 1, 16, 256, 65536
-
137 (decimal): 137/16 = 8 sobram 9, entao 137 (decimal) = 89
-
conferir: 8*16 + 9 = 137, confere.
-
exercicios: converter dois numeros em cada direcao
-
hexadecimais sao usados pois sao bem compactos, sao faceis de converter
para binario e com dois digitos se representa exatamente um byte (nem mais
nem menos).
-
Calculadora calctool no Linux trabalha com bases 2, 8, 10 e 16.
-
Arquitetura do Computador
-
Entrada, saida, UCP, barramento (8, 16, 32 ou 64 bits), memoria
-
Barramento do sistema e' dividido em: dados, enderecos e controle
-
Arquitetura da UCP: ULA, registradores
-
Linguagem de montagem
-
instrucoes do 80x86 : aritmeticas, logicas, transferencia de dados, pilha,
transferencia de controle, entrada e saida: MOV, ADD, SUB, MUL, DIV, etc.
-
registradores do 8086
-
AX - acumulador
-
BX - base
-
CX - contador
-
DX - dados
-
versoes de 8 bits: AH, AL, BH, etc.
-
versoes de 32 bits (a partir do 80386)
-
IP - apontador de instrucao
-
indicadores (Flags) - guarda informacoes sobre resultados de operacoes
-
MOV
-
mov reg, reg/memory/constant(ou dado imediato)
-
mov memory, reg
-
mov memory, constant (dado imediato)
-
com registradores de 32 bits so' mov entre registradores e' permitido
-
operacoes aritmeticas
-
add reg, reg/memory/constant
sub reg, reg/memory/constant
cmp reg, reg/memory/constant
and reg, reg/memory/constant
or reg, reg/memory/constant
not reg/memory
-
Sintaxe da Intel versus Sintaxe da AT&T (referencia na pagina de ponteiros).
Página de MAC211
Página do Fabio
Página do DCC