0% found this document useful (0 votes)
19 views

Lab 5 - Assembly Language Fundamentals 2

The document discusses assembly language fundamentals in MASM including defining variables and constants, data types, data definition statements, initializing arrays and strings, defining words and symbolic constants using directives like DB, DW, DD, DQ, DT, EQU and $.

Uploaded by

mahmoud.badry100
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

Lab 5 - Assembly Language Fundamentals 2

The document discusses assembly language fundamentals in MASM including defining variables and constants, data types, data definition statements, initializing arrays and strings, defining words and symbolic constants using directives like DB, DW, DD, DQ, DT, EQU and $.

Uploaded by

mahmoud.badry100
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

Computer organization

& architecture
Lab 5
Assembly Language
Fundamentals
Chapter 3
About Chapter 3

• In this chapter, you will learn how to define and declare


variables and constants, using Microsoft Assembler
(MASM) syntax.
• We also can use Emu8086 but some difference occurs.

Computer organization & architecture– lab 5


Program template 4

;Program Description:
;Author:
;Creation date:
;Revisions:
;Date: ;Modified by:
.data
;Insert variables here
.code
JMP main
main PROC
;Insert your code here
JMP Exit
main ENDP
;(insert additional procedures here)
Exit: ret
END
Defining Data
Chapter 3, Section 3
Intrinsic Data Types 6

• MASM defines various intrinsic data types, each


of which describes a set of values that can be
Keyword MASM Keyword 8086 Usage assigned to variables and expressions of the
BYTE DB 8-bit given type.
WORD DW 16-bit
DWORD DD 32-bit
QWORD DQ 64-bit
TBYTE DT 80-bit

Computer organization & architecture– lab 5


Data Definition Statement 7

• A data definition statement sets aside storage in • Examples


memory for a variable and may optionally assign a valuel DB ‘A’ ; character constant
name to the variable:
value2 DB 0 ; smallest unsigned byte
value3 DB 255 ; largest unsigned byte
[name]directive initializer [,initializer]..
value4 DB ? ; Empty byte
• At least one initializer is required in a data definition,
value5 DB 255 ; unsigned byte
even if it is the ? expression, which does not assign a value6 DB -128 ; signed byte
specific value to the data.
• All initializers, regardless of their number format, are
converted to binary data by the assembler.

Computer organization & architecture– lab 5


Multiple initializers 8

• If multiple initializers are used in the same data definition, its label
refers only to the offset of the first byte.
• Example:
.data
list DB 10,20,30,40

Computer organization & architecture– lab 5


Multiple initializers 9

• Not all data definitions require labels. If we wanted to continue the


array of bytes begun with list, example:
list DB 10, 20, 30, 40
DB 50, 60, 70, 80
DB 81, 82, 83, 84
• Within a single data definition, its initializers can use different radixes.
listl DB 10, 32, 4lh, 00l000l0b
list2 DB 0Ah, 20h, 'A', 22h

Computer organization & architecture– lab 5


Defining Strings and DUP 10

• To create a string data definition, enclose a sequence of characters in quotation marks. The most
common type of string ends with a null byte, a byte containing the value 0. This type of string is
used by C/C++,by Java, and by Microsoft Windows functions:
greeting1 DB "Good afternoon",0
• String multiple lines:
greeting2 DB "Welcome to the Encryption Demo program "
DB "created by Kip Irvine.",0dh,0ah,0
• The DUP operator generates a repeated storage allocation, using a constant expression as a
counter. It is particularly useful when allocating space for a string or array, and can be used with
Both initialized and uninitialized data definitions:

DB 20 DUP(0) ; 20 bytes, all equal to zero


DB 20 DUP(?) ; 20 bytes, uninitialized
DB 4 DUP("STACK") ; 20 bytes: "STACKSTACKSTACKSTACK"

Computer organization & architecture– lab 5


Defining WORD 11

Val1 DW 65535 ; unsigned


Val2 DW -32768 ;signed
myList DW 1, 2, 3, 4, 5
Array DW 5 DUP( ? )

Computer organization & architecture– lab 5


Symbolic Constants 12

• Created by associating an identifier (a symbol) with either an integer


expression or some text.
• Unlike a variable definition, which reserves storage, a symbolic
constant does not use any storage. Symbols are used only during
the assembly of a program, so they cannot change at runtime.

Computer organization & architecture– lab 5


Equal-Sign Directive 13

• The equal-sign directive associates a symbol name • Calculating the Sizes of Arrays and Strings
with an integer expression. • Setting the size manually:
name = expression list DB 10, 20, 30, 40
ListSize = 4
• With the $ operator(current location counters)
• Example:
list DB 10, 20, 30, 40
COUNT = 500
ListSize= ($ - list)
mov aX,COUNT • To get size of string
• We can use the DUP operator with the directive: myString DB "This string, containing "
COUNT = 50 DB "any number of chars",0
array DW COUNT DUP(0) myString_len = ($ - myString)
• Arrays of Words :
list DW 1000h, 2000h, 3000h, 4000h
ListSize = ($ - list) / 2

Computer organization & architecture– lab 5


EQU Directive 14

• The EQU directive associates a symbolic name with pressKey EQU <"Press any key to
either an integer expression or some arbitrary text. continue.",0 >
There are three formats: .
name EQU expression .
.
name EQU symbol
.data
name EQU <text> prompt DB pressKey
• EQU can be useful when defining any value that does
not evaluate to an integer. A real number constant:
PI EQU <3.1416>
• Unlike the = directive, a symbol defined with EQU
cannot be redefined in the same source code file. This
maybe seen as a restriction, but it also prevents an
existing symbol from being in advertently assigned a
new value.
• Example of string usage

Computer organization & architecture– lab 5


THANKS 15

Computer organization & architecture– lab 5

You might also like