Programação em Assebler 8086
365 palavras
2 páginas
Procedimentos em AssemblyLuciano Jos´ Senger e 1
Procedimentos section .data
Na linguagem Assembly, procedimentos s˜o invocados atrav´s a e da instru¸˜o CALL, seguida de um r´tulo. Por exemplo, CALL ca o
R1 desvia a execu¸˜o para o r´tulo R1. O endere¸o de retorno ca o c no t´rmino do procedimento ´ armazenado na pilha, e atrav´s e e e da instru¸˜o RET, o retorno ´ executado. A seguir, tem-se um ca e exemplo de c´digo sendo executado no DEBUG, de forma a o observar a utiliza¸˜o da instru¸˜o CALL e da instru¸˜o RET: ca ca ca mensagem
mensagemerro nomearquivo db "Programa de teste de abertura de arquivo",
0dh, 0ah, "$" db "Arquivo nao pode ser criado", 0dh, 0ah, "$" db "C:\teste.txt",0
section .text
-u 100
0795:0100
0795:0103
0795:0104
0795:0107
0795:0108
0795:0109
0795:010A
0795:010B
0795:010C
0795:010D
0795:010E
0795:0111
-d fff0
0795:FFF0
B86600
50
E80700
90
90
90
90
90
90
90
B80000
C3
MOV
PUSH
CALL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV
RET
_start:
AX,0066
AX
010E
org 100h mov ah, 09 mov dx, mensagem int 21h call criaArquivo jmp fim criaArquivo: AX,0000
00 00 00 00 0E 01 95 0702 03 07 01 66 00 00 00 errocriacao: ... retorno: -t
AX=0000 BX=0000 CX=0000 DX=0000
SP=FFFA BP=0000 SI=0000 DI=0000
DS=0795 ES=0795 SS=0795 CS=0795
IP=0111
NV UP DI PL NZ NA PO NC
0795:0111 C3
RET
-t
AX=0000 BX=0000 CX=0000 DX=0000
SP=FFFC BP=0000 SI=0000 DI=0000
DS=0795 ES=0795 SS=0795 CS=0795
IP=0107
NV UP DI PL NZ NA PO NC
0795:0107 90
NOP
-d fff0
0795:FFF0 00 00 00 00 11 01 07 0195 07 02 03 66 00 00 00
fim:
2
mov ah, 3ch mov cx, 0 mov dx, nomearquivo int 21h jc errocriacao jmp retorno mov ah, 09 mov dx, mensagemerro int 21h ret mov ah, 4ch int 21h
Exerc´ ıcio • Construa um conjunto de procedimentos em Assembly para opera¸˜es com arquivos (cria¸˜o, abertura, escrita, co ca fechamento). • Construa um programa em assembly