Skip to content

Curso Linguagem Assembly

Curso gratual de programação Assembly X86 para PC

Menu
  • Downloads
  • Suporte
  • O que vamos aprender hoje ?
Menu

Diretivas INVOKE e PROC

As diretivas na Linguagem Assembly nos remete a um universo mais humano, as diretivas deixam o códígo mais legível, e mais distante de como a CPU entende, porém no momento do compilador transformar nosso código em binário (codigo que a CPU entenda), o passo é extremamente menor que uma linguagem de alto nível.

Pseudo código

Uma das diretivas mais interesantes é a PROC, ela define inicio e fim de uma rotina como.

rotina1 PROC
     ……
     ……    
     ……
     RET
rotina1 ENDP

O PROC é uma diretiva que define inicio e fim de uma rotina, você jamais a vera em um código assembly rodando na CPU

Perceba que o PROC tem o RET que é RETORNO de rotina,  depois de compilado, tudo isto será convertido em endereços, , a linha “rotina1 PROC” será convertida em um número.

INVOKE (o CALL)

Aprendemos como fazer CALL para um endereço, pode até ser um CALL paraum “label” do tipo “rotina1: ” que será substituido na compilação por um número , que é um endereço; agora veremos o INVOKE , ele é uma especie de CALL em forma de diretiva, sim ! o Invoke é um CALL mais fácil de usar, que será substituido por CALL na compilação, porque o INVOKE é uma diretiva, e não entendida pelo processador, vamos a um exemplo de como usar INVOKE e PROC.

.386
.model flat, stdcall
option casemap :none ; case sensitive

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

rotina1 PROTO: DWORD, :DWORD

.code
titulo db “Titulo janela”, 0
mensagem db “Ola mundo das Diretivas PROC INVOKE”, 0

inicio:
invoke rotina1,   offset mensagem,   offset titulo

push 0
call ExitProcess

rotina1 proc _mensagem:DWORD, _titulo:DWORD
  push MB_OK
  push _titulo
  push _mensagem
  push 0
  call MessageBox
  RET
rotina1 endp

end inicio

Perceba 2 diretivas fundamentais: O INVOKE que chama o PROC lá abaixo, ele chama a rotina1 que é um PROC, veja que o invoke tem 3 nomes a sua frente:

NOME DA ROTINA,    ENDEREÇO DO TITULO,   ENDEREÇO DA MENSAGEM

O invoke vai achamar a rotina, levando a ela 2 endereços, do título e da mensagem , então a rotina1 obtendo esta informação, exibe uma janela.

proc-invoke

Compile este programa com o MASM32, usando o bat compile.bat e faça modificações para praticar:

compile  invoke-proc
invoke-proc.exe

 

downloadDownload rotina compile.bat e codigo invoke-proc.asm
(requer instalação de MASM32 em c:\masm32 )

Curso

  • Sistema Linux
  • Diretivas INVOKE e PROC
©2025 Curso Linguagem Assembly | Design: Newspaperly WordPress Theme