Vous êtes sur la page 1sur 18

Basic Elements of Assembly Language

• Integer Constants

– If no radix is given, the integer is assumed to be


decimal.
• Int 21h  Int 21
– A hexadecimal constant beginning with a letter
must have a leading 0
• Mov ax, 0A3C9h

1/2002 JNM 1
Basic Elements of Assembly Language
• Character and String Constants

– A single or a string of characters

– Enclosed in either single or double quotes

– Embedded quotes are permitted


‘An “embedded quote” within quotation marks’

1/2002 JNM 2
Basic Elements of Assembly Language
• Reserved Words

– Instruction Mnemonics
– Directives
– Attributes (BYTE or WORD)
– Operators
– Predefined Symbols

• A complete list of MASM reserved words


are in Appendix D (4th Edition)
1/2002 JNM 3
Names
(Identifiers)
• Used to identify variables, constants, procedures, or code
labels.
– Max 247 characters
– Not case-sensitive
– First character can be a letter, ‘_’, ‘$’, ‘@’
– Subsequent characters may also be digits.
– Cannot use an assembler reserved word.

• Should make identifier names descriptive and easy to


understand
• Avoid @ as first character.

1/2002 JNM 4
Examples
• Mystring db “this is a string”,0
– Mystring is the name
• Length = $ - mystring
– Length is a reserved word (can not use)
• Loop1:
– Loop1 is the label for a loop instruction

• Note difference between data names and code labels


– in the data section (no colon after the name)
– In the code section (colon after the name)

1/2002 JNM 5
Assembly Language
Statements

Generally fall into two classes:


Instructions - Executable Statements
Directives – statements that provide
information to the assembler
about how to generate
executable code
1/2002 JNM 6
General Format of a Statement
[name] [mnemonic] [operands] [;comment]

• For statements, all of the fields are optional


• Statements are free-form – they can be
written in any column with any number of
spaces between each operand
• Blank lines are permitted
• Must be written on a single line and not pass
column 128 (use / for continuation of line)
1/2002 JNM 7
Directives
• A statement that is recognized and acted upon by
the assembler as the program’s source code is
being assembled.
• Used for defining logical segments, choosing a
memory module, defining variables, creating
procedures, …
• .data (directive to identify the area of a program
that contains the data variables)
• Count db 50 (db is a directive that tells the
assembler to create storage for a byte named count
and initialize it to 50.

1/2002 JNM 8
Standard Assembler Directives
Directive Description
title Title of the listing file
.model Specify the program's memory model
.stack Set the size of the stack segment
.data Mark the beginning of the data segment
.code Mark the beginning of the code segment
proc Begin procedure
endp End of procedure
end End of program assembly

1/2002 JNM 9
Data Allocation Directives
Directive Description Bytes
DB Define byte 1
DW Define word 2
DD Define Doubleword 4
DF,DP Define far pointer 6
DQ Define quadword 8
DT Define tenbytes 10

Char1 db ‘A’ hex db 41h


Signed1 db -128 dec db 65
Signed2 db +127 bin db 01000001b
Unsigned db 255 hex2 db 0A3h
1/2002 JNM 10
More MASM Directives
• There are hundreds of directives.
• Will only use a small number of directives
• Appendix D.7 (4th Edition) is a complete
listing of directives and operators

1/2002 JNM 11
Instructions
• A statement that is executed by the
processor at runtime
• Fall into five general categories
– Data transfer (mov ax, 5)
– Arithmetic (add ax, 20)
– Transfer of control (call MySub)
– Logical (Jz next1)
– Input/output (In al, 20)

1/2002 JNM 12
General Format of an Instruction
Label: Mnemonic Operand(s) ;Comment

• Label (optional)
• Instruction mnemonic (required)
• Operand(s) (usually required)
• Comment (optional)

• A source code line may have only a label or


comment.
1/2002 JNM 13
Labels
• An identifier that acts as a place marker for
either instructions or data
Target:
Mov ax, bx

Jmp target

1/2002 JNM 14
Instruction Mnemonics
• A short word that identifies the operation
carried out by an instruction
Mov assign one value to another
Add add two values
Sub subtract one value from another
Call call a procedure

1/2002 JNM 15
Formatting of Instructions and
Number of Operands Needed
Mnemonic destination operand, source operand
HLT ; zero operands
INC AX ; one operand
MOV AX, 100 ; two operands
SHLD DX, AX, 4 ; three operands

Different instructions use different numbers of


operands as shown above.
1/2002 JNM 16
Operands
• A memory operand is specified by either the name
of a variable or a register that holds the address of
a variable.
• A variable name implies the address of the
variable;
96 constant operand
2+4 constant expression operand
Eax register operand
Count variable operand
1/2002 JNM 17
Comments
• Single line comments begin with a semicolon
; Words after the semicolon are comments.
; Comments may begin anywhere on a line
• You will need to have comments at least every two
lines of code for this class
• Block comments begin with the comment directive a
user-specified symbol
COMMENT &
This line is a comment.
So is this line. The ampersand symbol is personal choice.
&

1/2002 JNM 18

Vous aimerez peut-être aussi