ALT by Bilal Ahmed Shaik - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

img54.png

 

  Assembly Variables

 

  NASM provides various define directives for reserving storage space for variables. The define assembler directive is used for allocation of storage space. It can be used to reserve as well as initialize one or more bytes.

 

  Allocating Storage Space for Initialized Data

 

  The syntax for storage allocation statement for initialized data is:

 

img55.png 

  Where, variab le-name is the identifier for each storage space. The assembler associates an offset value for each variable name defined in the data segment.

 

  There are five basic forms of the define directive:

 

img56.png 

  Following are some examples of using define directives:

 

img57.png 

  Please note that:

 

   Each byte of character is stored as its ASCII value in hexadecimal

 

 Each decimal value is automatically converted to its 16-bit binary equivalent and stored as a hexadecimal number

 

   Processor uses the little-endian byte ordering

 

   Negative numbers are converted to its 2's complement representation

 

   Short and long floating-point numbers are represented using 32 or 64 bits, respectively

 

  The following program shows use of the define directive:

 

 img58.png 

  When the above code is compiled and executed, it produces fol owing result:

 

img59.png 

  Allocating Storage Space for Uninitialized Data

 

  The reserve directives are used for reserving space for uninitialized data. The reserve directives take a single operand that specifies the number of units of space to be reserved. Each define directive has a related reserve directive.

 

  There are five basic forms of the reserve directive:

 

img60.png Multiple Definitions

 

  You can have multiple data definition statements in a program. For example:

 

img61.png 

  The assembler allocates contiguous memory for multiple variable definitions.

 

  Multiple Initializations

 

  The TIMES directive allows multiple initializations to the same value. For example, an array named marks of size 9 can be defined and initialized to zero using the following statement:

 

img62.png 

  The TIMES directive is useful in defining arrays and tables. The following program displays 9 asterisks on the screen:

 

img63.png 

  When the above code is compiled and executed, it produces fol owing result:

 

 

img64.png