3. Linguagens de Montagem
● Como desenvolviam sistemas os pioneiros da
computação?
● Não existiam ainda linguagens de alto nível como C,
C++ e Java.
● O desenvolvimento era feito em Assembly, ou seja, a
linguagem de máquina de um determinado processador.
5. Linguagens Não Estruturadas
● Não possuem estrutura usuais de controle.
● Conjunto de instruções de um processador
específico.
● Baixíssima Produtividade.
6. Grandes Projetos
Projeto Apollo 11 – Que levou o homem
pela primeira vez a lua em 1969.
Margaret Hamilton diretora da Divisão de
Software com todo o código Assembly do
Projeto Apollo 11
Github: https://github.com/chrislgarry/Apollo-11
7. Processador Intel 8086
● Iniciou linha de sucesso
entre processadores e foi
o precursor dos chips
atuais.
13. Primeiro programa em Assembly
Somar dois números, sendo o valor
do primeiro 2 e do segundo 3
14. Primeiro programa em Assembly
Somar dois números, sendo o valor
do primeiro 2 e do segundo 3
MOV AX, 3 // Insere o valor 3 em AX
MOV BX, 2 // Insere o valor 2 em BX
ADD AX,BX // Soma BX a AX
HLT // Finaliza o programa
16. Segundo programa em Assembly
Somar três números, sendo o valor
do primeiro 2 e do segundo 3 e do
terceiro 10.
17. Exercício
Somar três números, sendo o valor
do primeiro 2 e do segundo 3 e do
terceiro 10.
MOV A, 3 // Insere o valor 3 em AX
MOV B, 2 // Insere o valor 2 em BX
MOV C, 10 // Insere o valor 10 em CX
ADD A,B // Soma BX a AX
ADD C,A // Soma AX a CX
HLT // Encerra o programa
20. Exercício: Entrada e Saída
Leias as idades de dois usuarios no
teclado e some-as
IN 10h // Ler o valor do teclado
MOV B,A // Copia o valor de AX para BX
IN 10h // Ler o valor do teclado
MOV C,A // Copia o valor de AX para CX
ADD B,C // Soma o valor de CX a BX
MOV A,B // Copia o valor de BX para AX
OUT 20h // Imprime o valor de AX
HLT // Finaliza o programa
26. Exercício
A = 10
B = 20
C = 30
D = 2
MOV A, 10
MOV B, 20
MOV C, 30
MOV D, 2
MUL B
MOV B,A
ADD C,B
DIV D
HLT
B = A*B
C = B + C
A = B / D
27. Pilhas
A pilha é uma estrutura de
dados do tipo
LIFO - Last In, First Out
Comandos:
PUSH – Envia o dado para a
pilha
POP – Recupera o dado da
pilha
29. Exercício
A = 2
B = 3
Coloque os dois na pilha
E recupere o valor da pilha
C = A e D = B
30. Exercício
A = 2
B = 3
Coloque os dois na pilha
E recupere o valor da pilha
C = A e D = B
MOV A, 3
MOV B, 2
PUSH A
PUSH B
POP B
MOV C,B
POP A
MOV D,A
HLT
31. Labels
●Um label (etiqueta) é um nome ou rótulo dado à
uma posição de memória.
●Dessa forma, ao invés de nos referirmos ao
endereço da memória podemos nos referir ao
label
32. Sub-rotinas
●Um bloco de código que faz determinada tarefa,
exatamente como um procedimento ou uma
função.
●Cada chamada de dentro do Programa Principal
causa um desvio automático para o endereço da
sub-rotina chamada.
33. Sub-rotinas
●O endereço de retorno da Sub-rotina é
armazenado na Pilha no endereço apontado pelo
Stack Pointer (SP).
● Comando:
CALL NOME-SUB-ROTINA
36. Exercício
Faça um contador de 0 a 10
start:
MOV C, 0
MOV D, 10
CALL multiplica
HLT
multiplica:
INC C
.loop:
INC C
CMP c, d ; Check if end
JNZ .loop ; jump if not
RET
37. Exercícios
1. Faça um programa em Assembly onde:
A = 10
B = 15
C = 5
A = A + B + C
B = B – A – C
2. Faça um programa em Assembly que defina um semáforo onde:
1 = Semáforo ligado
0 = Semáforo desligado
Ligue o semáforo A
Desligue o semáforo B
Conte até 10
Desligue o semáforo A
Ligue o semáforo B