13
PROGRAMAÇÃO EM LINGUAGEM MÁQUINA LCC2 - 2014

Aula 6 emu8086

Embed Size (px)

Citation preview

Page 1: Aula 6   emu8086

PROGRAMAÇÃO EM LINGUAGEM

MÁQUINA

LCC2 - 2014

Page 2: Aula 6   emu8086

SIMULADORES DO PROCESSADOR 8086:

TASM – Turbo Assembler da Borland

MASM – Marco Assembler da Microsoft

Debug – Ferramenta do MS-DOS

EMU8086 – Simulador gráfico do 8086

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 2

EM

U8086

Page 3: Aula 6   emu8086

VANTAGENS:

Visualização em modo gráfico

Memória

Stack

ALU;

FLAGS;

Variáveis;

Log Debug;

Registadores;

Janela da consola (Emulator Screen);

ASCII tabela;

Emulador

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 3

EM

U8086

Page 4: Aula 6   emu8086

VANTAGENS:

Não é necessário saber onde cada instrução está

na memória;

Utiliza-se uma label para executar as instruções de

desvios;

Quando ocorre um erro no programa não é

necessário refaze-lo a partir da instrução;

Pode-se criar variáveis mais facilmente.

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 4

EM

U8086

Page 5: Aula 6   emu8086

DESVANTAGENS:

Alguns comandos ou interrupções não funcionam

corretamente

AH = 8; int 21;

MOV DX , 0100h;

Usar o LEA para registadores de 16 bits

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 5

EM

U8086

Page 6: Aula 6   emu8086

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 6

#make_COM# ; COM file is loaded at CS:0100h ORG 100h mov AH, 09h LEA DX, mensagem int 21h int 20h mensagem DB 50h, 72h, 6Fh, 66h, 65h, 2Eh, 20h, 4Eh, 6Fh, 62h, 72h, 65h, 21h, 24h ret

Escreva um programa que retorne na consola o teu

nome. Para tal a variável mensagem deverá receber

os caracteres representado pelo sistema

hexadecimal

EM

U8086

Page 7: Aula 6   emu8086

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 7

#make_COM# ; COM file is loaded at CS:0100h ORG 100h MOV AX, 000Ah MOV BX, 000Bh PUSH AX PUSH BX CALL procedimento INC AX INC BX CALL procedimento POP BX POP AX INT 20h procedimento: MOV AX, 0001h MOV BX, 0002h INC AX INC BX ret ret

EXERCÍCIO PILHA EM

U8086

Page 8: Aula 6   emu8086

ENDEREÇAMENTO DIRECTO

O endereço é dado na instrução

Mov ax, var1

ENDEREÇAMENTO INDIRECTO SOBRE O

REGISTO

O endereço é lido de um registo base (BX ou BP)

ou index (SI ou DI)

Mov ax, [bx]

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 8

EM

U8086

Page 9: Aula 6   emu8086

ENDEREÇAMENTO BASEADO

O endereço é lido de um registo base (BX ou BP)

ao qual é adicionado o valor indicado na

instrução

Mov ax, [bx+5]

ENDEREÇAMENTO INDEXADO

Identico ao anterior mas usando um registo de index

(SI ou DI)

Mov ax, [SI+10]

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 9

EM

U8086

Page 10: Aula 6   emu8086

ENDEREÇAMENTO BASEADO INDEXADO

O endereço é dado pela soma de um registo base

(BX ou BP) com um registo de index (SI ou DI) e

ainda com um valor indicado na instrução

Mov ax, [bx] [si]

Mov ax, tabela[bx] [si]

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 10

EM

U8086

Page 11: Aula 6   emu8086

Endereçamento Imediato:

MOV CH, FFh

MOV CH 11111111b

Endereçamento por Registrador:

MOV BL, CH

Endereçamento por Deslocamento(Offset):

MOV AX, [00100h]

MOV AX, [BX]

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 11

EM

U8086

Page 12: Aula 6   emu8086

Endereçamento de Base Indexada:

MOV AX, [00100h + BX]

MOV AX, [BX + 00100h]

MOV AX, 00100h[BX]

MOV AX, [BX] + 00100h

MOV DX, OFFSET x ;Usando variáveis

29-03-2014 Prof. Nobre - Programação e Linguagem Máquina 12

EM

U8086

Page 13: Aula 6   emu8086

PROGRAMAÇÃO EM LINGUAGEM

MÁQUINA

LCC2 - 2014