05 - Pratica de Programacao Assembly 8086
9 pág.

05 - Pratica de Programacao Assembly 8086


DisciplinaProgramação Assembly24 materiais242 seguidores
Pré-visualização1 página
Arquitetura e Organização de Computadores
Prática de Programação
em Assembly
Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br
\uf07d	EAX \u2013 Acumulador em operações aritméticas, lógicas, E/S etc.
\uf07d	EBX \u2013 Base para instruções com vetores de dados.
\uf07d	ECX \u2013 Contador em operações iterativas e repetitivas.
\uf07d	EDX \u2013 Dados utilizados nas operações de multiplicação e divisão.
\uf07d	ESI \u2013 Endereço fonte em instruções de manipulação de vetores.
\uf07d	EDI \u2013 Endereço destino em instruções de manipulação de vetores.
\uf07d	Registros de Segmentos
CS \u2013 Indica o segmento de código;
DS \u2013 Indica o segmento de dados;
ES \u2013 Indica o segmento extra de dados;
SS \u2013 Indica o segmento para a pilha;
\uf07d	IP \u2013 ponteiro de instruções;
\uf07d	SP \u2013 ponteiro da pilha;
\uf07d	BP \u2013 ponteiro para posições de memória;
\uf07d	FLAGS \u2013 bits de status e controle;
\uf07d	Registro \u2013 MOV AL, BL
\uf07d	Imediato \u2013 MOV AL, 28H
\uf07d	Direto \u2013 MOV [1234], AL
\uf07d	Indireto \u2013 MOV [BX],CL
\uf07d	Base+Index \u2013 MV [BX+SI],BP
\uf07d	Relativo \u2013 MOV CL,[BX+4]
\uf07d	Relativo Base + Index \u2013 MOV ARRAY[BX+SI], DX
\uf07d	MOV dest, src \u2013 MOV AL, BL
\uf07d	INT num \u2013 INT 21H
\uf07d	ADD dest, valor \u2013 ADD AL, 10h
\uf07d	SUB dest, valor \u2013 SUB AL, 2h
\uf07d	DEC reg \u2013 DEC BX
\uf07d	INC reg \u2013 INC BX
\uf07d	JMP POS \u2013 JMP FIM_PROC
\uf07d	CALL POS	- CALL LER_INT
\uf07d	LOOP LABEL \u2013 MOV CX, 03H; LOOP M_LABEL;
\uf07d	LODSB \u2013 carrega um byte da memória
\uf07d	LODSW \u2013 carrega um word da memória
\uf07d	STOSB \u2013 salva um byte na memória
\uf07d	STOSW \u2013 salva um word na memória
\uf07d	CMP AX, BX
\uf07d	Comparação sem Sinal
JA \u2013 Jump AX > BX
JAE \u2013 Jump AX >= BX
JB \u2013 Jump AX < BX
JBE \u2013 Jump AX <= BX
JNA \u2013 Jump !(AX > BX)
JNAE \u2013 Jump !(AX >= BX)
JNB \u2013 Jump !(AX < BX)
JNBE \u2013 Jump !(AX <= BX)
JZ \u2013 Mesmo que JE
JE \u2013 Jump AX == BX
.MODEL SMALL
.STACK 100H
.DATA
Str1 db \u201cHELLO WORLD\u201d,13,10,\u2019$\u2019
.CODE
;atualiza o DS com o segmento que guarda STR1
MOV AX,SEG Str1 MOV DS, AX
;chama a INT 21 para imprimir a string na tela
MOV DX, OFFSET Str1
MOV AH, 09 INT 21H
;encerra o programa
MOV AX, 4c00H
INT 21 H END
\uf07d	>> masm.exe /c /l arquivo.asm arquivo.obj arquivo.lst arquivo.crf
\uf07d	>> link.exe arquivo.obj
Run File [arquivo.exe]: arquivo.exe
List File [null.map]: arquivo.map
Libraries [.LIB]:
O Visual Studio também pode ser utilizado.
Atividade
Ver os códigos de exemplo do livro \u201cAssembly Language for x86 Processors (6th edition)\u201d de Kip Irvine.
Tentar montar seus próprios códigos.