abc Asembler - elektronski priručnik
VIII dio Varijable

Alociranje spremišnog prostora za inicijalizovane podatke

Sintaksa za naredbu alokacije spremišta za inicijalizovane podatke je:

[variable-name]                   define-directive       initial-value       [,initial-value]...

Gdje je, variable-name identifikator za svaki spremišni prostor. Asembler asocira offset vrijednost za svako ime varijable definisano u data segmentu. Postoji 5 osnovnih formi define direktive:

Direktiva

Svrha

Spremišni prostor

DB

Definiše Byte

alocira 1 bajt

DW

Definiše Word

alocira 2 bajta

DD

Definiše Doubleword

alocira 4 bajta

DQ

Definiše Quadword

alocira 8 bajtova

DT

Definiše Ten Bytes

alocira 10 bajtova

Slijedi nekoliko primjera upotrebe define direktiva:

choice 			DB 	'y'
number 		DW 	12345
neg_number 		DW 	-12345
big_number 		DQ 	123456789
real_number1 		DD 	1.234
real_number2 		DQ 	123.456

Primijetimo da:

  • Svaki bajt karaktera je spremljen kao njegova ASCII vrijednost u heksadecimalu.
  • Svaka decimalna vrijednost je automatski konvertovana u svoj 16-bitni binarni ekvivalent i spremljena kao heksadecimalni broj.
  • Procesor koristi tzv. little-endian bajt redoslijed.
  • Negativni brojevi su konvertovani u svoju reprezentaciju komplementa dvojke.
  • Kratki i dugi brojevi u pokretnom zarezu su predstavljeni pomoću 32 ili 64 bita, respektivno.

Sljedeći program pokazuje upotrebu define direktive:

section .text
      global _start 	;must be declared for linker (gcc)
_start: 			;tell linker entry point

        mov    edx,1 	;message length
        mov    ecx,choice 	;message to write
        mov    ebx,1 	;file descriptor (stdout)
        mov    eax,4 	;system call number (sys_write)
        int       0x80 	;call kernel
        mov    eax,1 	;system call number (sys_exit)
        int       0x80 	;call kernel

section  .data
choice   DB  'y'

y

Varijable    <    Index    >    Alociranje spremišnog prostora za neinicijalizovane podatke