Estrutura de um Programa

Nome.asm -> Masm.exe (Compilador) -> Nome.obj -> Link.exe -> Nome.exe



Programa Fonte



PILHA SEGMENT PARA STACK 'STACK'

      DB 256 DUP(0)

PILHA ENDS



DADOS SEGMENT PARA PUBLIC 'DATA'

      Nome1  DB 5

      Nome2  DB 10,'A',15,'Teste'

             DW 10,15

             DW 5 DUP (?)

      Nome3  DW 0

      Nome4  DW Nome2+1

      Nome5  DW Nome2-Nome1

DADOS ENDS



PROGRAMA SEGMENT PARA PUBLIC 'CODE'

      ORG 100h

      ASSUME CS:PROGRAMA

      ASSUME DS:DADOS,ES:DADOS



      INICIO PROC FAR

            PUSH DS

            MOV  AX,0

            PUSH AX

            MOV  AX,DADOS

            MOV  ES,AX

            MOV  DS,AX

            RET

      INICIO ENDP

PROGRAMA ENDS





PARA   - Paragraph

DB     - Define Byte

DUP    - Duplicate

DW     - Define Word

ENDS   - End of Segment

PUBLIC - pode ser usado por outros "programas" a ser anexado a outros segmentos

ORG    - Origem (O programa inicia no endereco do segmento 'CODE')

         - Nunca inicia em 0000h pq existe o PSP - Program Segment Prefix

PROC   - Procedure

         - FAR  - para poder haver mais de um segmento

         - NEAR - rotinas dentro de um segmento

RET    - Retorna para o endereco contido na pilha

