DB define byte (8 bits)
DW define word (16 bits, 2 bytes consecutivos)
DD define doubleword (2 palavras, 4 bytes consecutivos)
DQ define quadword (4 palavras, 8 bytes consecutivos)
DT define ten bytes (10 bytes consecutivos)
Exemplos:
Alfa DB 0 ;equivale a 00h
A DB 10h
B DB 0150h ;ilegal, por que?
BIT DB ? ;não inicializada
Array: sequência de bytes ou words consecutivos na memória
• armazenar dados relacionados
• armazenar caracteres ASCII organizados (ex: texto)
Exemplos:
BYTE_ARRAY DB 10h,20h,30h
WORD_ARRAYDW 1000h,123h,0h,0FFFFh
Um array pode conter um string de caracteres, sendo definido como:
LETRAS DB ‘abC’ ;e´ equivalente aos caracteres ASCII
LETRAS DB 61h,62h,43h ;depende se maiúscula ou minúscula
Combinação de caracteres e números numa mesma definição:
MENSAGEM DB ‘Alo!’, 0Ah,0Dh,’$’
O caracter '$' marca o fim de um string de caracteres e não é exibido.
Constante é um nome simbólico para um dado de valor constante, que seja muito utilizado num programa. Para atribuir um nome a uma constante, utiliza-se a pseudo-instrução EQU (equates -> igual a) e a sintaxe:
Exemplos:
LF EQU 0Ah ;caracter Line Feed como LF
CR EQU 0Dh ;caracter Carriage return como CR
LINHA1 EQU ‘Digite seu nome completo’
MENSAGEM DB LINHA1,LF,CR
Atenção:
MOV WORD1,WORD2 ;instrução inválida
;esta restrição é contornada como segue
MOV AX,WORD2 ;primeiro o conteúdo de WORD2 p/ AX
MOV WORD1,AX ;depois, o conteúdo de AX é movido p/
;posição de memória WORD1
LEA destino,fonte
Significa Load Effective Address -> coloca uma cópia do offset do endereço
da posição de memória fonte no registrador destino.
Exemplo:
.DATA
MENSAGEM DB ‘Adoro Fusca!$’
.CODE
LEA DX,MENSAGEM ;DX carregado com o offset de MENSAGEM
Obs: após esta operação, DX conterá o offset da posição de memória onde
inicia o string MENSAGEM
Vamos a um código completinho...
.MODEL SMALL
.STACK 100H
.DATA
MENSAGEM DB 'ALO! Como voces estao indo?!$'
.CODE
MAIN PROC
;inicializando o registrador DS
MOV AX,@DATA
MOV DS,AX ;segmento de dados inicializado
;obtendo o offset da posição de memória de MENSAGEM
LEA DX,MENSAGEM ;offset do endereço vai para DX
;
;exibindo a MENSAGEM
;
MOV AH,9 ;funcao DOS para exibir 'string'
INT 21H ;exibindo
;
;retorno ao DOS
;
MOV AH,4CH ;funcao DOS para saida
INT 21H ;saindo
MAIN ENDP
END MAIN
Nenhum comentário:
Postar um comentário