Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Lecture 1 Chapter 4 –Requirements for coding in Assembly Language Chapter Outline Assembly Language Features Simplified segment Directive Defining Types of data Equate Directive 1 Assembly Language Features • Program comments •Reserved words •Identifiers •Statements •Directives 4 Program Comment • The comment field of a statement is used by the programmer to say something about what the statement does. • A semicolon marks the beginning of this field, and the assembler ignores anything typed after the semicolon. • It is almost impossible to understand an assembly language program without comments. • Good programming practice dictates a comment on almost every line. 13 Program Comment • Examples: •MOV CX, 0 ; CX counts terms, initially 0 • Thus, comments is used to put the instruction into the context of the program. • It is permissible to make an entire line a comment, and to use them to create space in a program. 14 Reserved words Instructions, such as MOV and ADD Directives, such as END that used to provide information to the assembler Operators Predefined symbols, such as @Data, which return information to your program during the assembly Identifiers Two types of Identifiers : name and label 1. Name refers to the address of a data items ex: COUNTER ,SUM,ID 2. Label refers to the address of an instruction,procedure,or segment ex: MAIN Identifiers •Can be from 1 to 31 characters long (not case sensitive). • May consist of letters, digits, and the special characters ? . @ _ $ % (Thus, embedded blanks are not allowed). •Names may not begin with a digit. •If a dot is used, it must be the first character. Identifiers • Examples: • COUNTER1 • 2abc • @CHARACTER • A45. 28 • TWO WORDS • STD_NUM • .TEST • YOU&ME Begins with a digit . Not first character Contains a blank Contains an illegal character 8 Statements • Both instructions and directives have up to four fields: [identifier ] operation [operand(s)] [comment] • [Name Fields are optional] • At least one blank or tab character must separate the fields. • The fields do not have to be aligned in a particular column, but they must appear in the above order. • An example of an instruction: START: MOV CX,5 ; initialize counter • An example of an assembler directive: MAIN PROC 6 Directives •SEGMENT Directive Data Segment Stack segment Code Segment •END Directive ex: ENDP directive ends a procedure ex: END directive ends the entire program and appears as the last statment 9 SIMPLIFIED SEGMENT Directives •SEGMENT Directive Data Segment Stack segment Code Segment •END Directive ex: ENDP directive ends a procedure ex: END directive ends the entire program and appears as the last statment 9 Program Structure - Memory Models • The size of code and data a program can have is determined by specifying a memory model using the .MODEL directive. • Syntax: .MODEL memory_model Model SMALL MEDIUM COMPACT LARGE HUGE Description code in 1 segment data in 1 segment code > 1 segment data in 1 segment code in 1 segment data > 1 segment code > 1 segment data > 1 segment no array larger than 64k bytes code > 1 segment data > 1 segment arrays may be larger than 64k bytes Program Structure - Memory Models • The appropriate model is SMALL, unless there is a lot of code or data. • .MODEL directive should come before segment definitions. •A segment is 216 (64 k) Program Structure - Stack Segment • The purpose of the stack segment declaration is to set aside a block of memory (the stack area) to store the stack. • The stack area should be big enough to contain the stack at its maximum size. • Syntax: .STACK • Example: .STACK size ; where size is an optional number that specifies ; the stack area size in bytes. 100H ; sets aside 100H bytes for the stack area. ; (reasonable size for most applications). • If size is omitted, 1KB is set aside for the stack area. Program Structure - Data Segment • A program’s data segment contains all the variable definitions. • Constant definitions are often made here as well. (they may be placed elsewhere in the program since no memory allocation is involved). • To declare a data segment, we use the directive .DATA, followed by variable and constant declarations. • Example: .DATA WORD1 MSG DW 2 DB ‘this is a message’ Program Structure - Code Segment •The code segment contains a program’s instructions. • Syntax: .CODE name ; where name is an optional name of segment. • There is no need for a name in a SMALL program, However, the assembler will generate an error. • Inside a code segment, instructions are organized as procedures. Program Structure - Code Segment • The simplest procedure definition is: name PROC ; name: is the name of the procedure. ; body of the procedure ; PROC & ENDP: are pseudo-ops that name ENDP ; delineate the procedure • Example of a code segment definition: .CODE MAIN PROC ; main procedure instructions MAIN ENDP ; other procedures go here Program Structure A General Form of a .SMALL model program .MODEL SMALL .STACK 100H .DATA ; data definitions go here .CODE MAIN PROC ; instructions go here MAIN ENDP ; other procedures go here END MAIN