INTRODUCTION ABOUT ASSEMBLY

Slides:



Advertisements
Similar presentations
Sheet 1 Introduction to Computer Organization and Assembly Language.
Advertisements

The 8051 Microcontroller and Embedded Systems
The Assembly Language Level
1 Lecture 3: Assembly Language Fundamentals Assembly Language for Intel-Based Computers, 4th edition Kip R. Irvine.
6.1) Assembly Language Program Format 6.2) Features of Assembly Language 6.3) Data Definition CHAPTER 6 ASSEMBLY LANGUAGE PROGRAM FORMAT AND DATA DEFINITION.
8051 ASSEMBLY LANGUAGE PROGRAMMING
CEN 226: Computer Organization & Assembly Language :CSC 225 (Lec#1) By Dr. Syed Noman.
Chapter 3: Introduction to C Programming Language C development environment A simple program example Characters and tokens Structure of a C program –comment.
ECE 265 – LECTURE 9 PROGRAM DESIGN 8/12/ ECE265.
Joseph L. Lindo Assembly Programming Sir Joseph Lindo University of the Cordilleras.
INTRODUCTION TO IBM PC ASSEMBLY LANGUAGE
INTRODUCTION TO IBM PC ASSEMBLY LANGUAGE
Chapter 2 Software Tools and Assembly Language Syntax.
Fundamentals of Assembly language
ICS312 Set 4 Program Structure. Outline for a SMALL Model Program Note the quiz at the next lecture will be to reproduce this slide.MODEL SMALL.586 ;
1/2002JNM1 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.
Chapter 3 Elements of Assembly Language. 3.1 Assembly Language Statements.
ASSEMBLY LANGUAGE. Assembler and Compiler Pascal A Program Compiler Version A Assembly Language Versiion A Machine Code Actual version that will be executed.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
Debug and Assembler By, B.R.Chandavarkar Lect. COMP Department NITK, Surathkal.
Introduction to 8086 Assembly Language Assembly Language Programming University of Akron Dr. Tim Margush.
Ass. Prof. Dr Masri Ayob TK 6123 Lecture 13: Assembly Language Level (Level 4)
Chapter Five–80x86 Assembly program development Principles of Microcomputers 2015年11月15日 2015年11月15日 2015年11月15日 2015年11月15日 2015年11月15日 2015年11月15日 1.
Programming Fundamentals. Overview of Previous Lecture Phases of C++ Environment Program statement Vs Preprocessor directive Whitespaces Comments.
Assembly Language programming
B ASIC INSTRUCTIONS. I NTRODUCTION There are over a hundred instructions in the instruction set for the 8086 CPU; there are also instructions designed.
Lecture 2 Chapter 4 –Requirements for coding in Assembly Language 1.
Computer Organization & Assembly Language University of Sargodha, Lahore Campus Prepared by Ali Saeed.
Assembly Language Lecture 2. Lecture Outline Program Structure Memory models Data Segment Stack Segment Code Segment Input and Output Instructions INT.
1 Chapter 3 Assembly Language Fundamentals Assembly Language for Intel-Based Computers, 4th edition Revised 3/11/05.
Assembly language programming
Computer Science 210 Computer Organization
Format of Assembly language
Chapter 5- Assembling , Linking, and Executing Programs
Assembly Lab 3.
CSC201: Computer Programming
Assembly Language programming
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
The 8051 Microcontroller and Embedded Systems
Additional Assembly Programming Concepts
Assembler Directives Code generation flow
Chapter 3 Machine Language and Assembly Language.
Chapter 3 Machine Language and Assembly Language.
Microprocessor and Assembly Language
Microprocessor and Assembly Language
INTRODUCTION ABOUT ASSEMBLY
Computer Organization & Assembly Language
Choice of Programming Language
Defining Types of data expression Dn [name] expression Dn [name]
Symbolic Instruction and Addressing
and Executing Programs
Introduction to Assembly Language
Lecture 6 Assembler Directives.
Variables In programming, we often need to have places to store data. These receptacles are called variables. They are called that because they can change.
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Symbolic Instruction and Addressing
Computer Science 210 Computer Organization
Chapter 4 –Requirements for coding in Assembly Language
Symbolic Instruction and Addressing
Chapter 4 –Requirements for coding in Assembly Language
Chapter 4 –Requirements for coding in Assembly Language
Requirements for coding in Assembly Language
8051 ASSEMBLY LANGUAGE PROGRAMMING
Assembler Directives end label end of program, label is entry point
Computer Architecture and System Programming Laboratory
Chapter 6 –Symbolic Instruction and Addressing
Chapter 6 Programming the basic computer
Computer Organization and Assembly Language
Introduction to 8086 Assembly Language
Computer Architecture and System Programming Laboratory
Presentation transcript:

INTRODUCTION ABOUT ASSEMBLY

Who am I? Name: Dina Al-Bassam Email: DSAlbassam@pnu.edu.sa Office: 2nd floor, 2.501.02 Office Hours: Sun: 10-11 , 12:30-1:30 Wed: 12:30-2:30 Thu: 11-1:30

Grade 10 Project 5 Lab work Participation Final lab

What is assembly language Each personal computer has a microprocessor that manages the computer's activities. Each processor has its own set of instructions for handling various operations such as getting input from keyboard, displaying information on screen. These set of instructions are called 'machine language instructions’ written in 0 and 1. However, machine language is too obscure and complex for using in software development. 4

What is assembly language Assembly language is a low-level programming language for a computer. Each statement is [almost] exactly equivalent to one machine instruction. 4

Advantages of Assembly Language Studying assembly language is possible to gain a feeling for the way the computer "thinks" and why certain things happen the way they do inside the computer. Writing assembly language programs is efficient because assembly language is so close to machine language so produces a faster , shorter machine language program. It is suitable for complex and time-critical jobs. 4

Difference between high level language and assembly level language Assembly language High level language Difficult to read and understand Easier to read and understand Readability No , designed for a specific family of processors Yes Portable Each statement is [almost] one machine instruction Each statement need many machine instruction Number of equivalent machine code MOV AX,6 ADD AX,Y MOV A,AX X=6+Y Example 4

Outline Creating and Running a Program Assembly Language Statements Defining Types of data Numeric Constant Named Constants Program Structure 1

Creating and Running a Program A text editor or word processor is used to create a source program file. Editor .ASM file An assembler is used to translate the source file into a machine language object file. Assembler .OBJ file A linker is used to link one or more object files to create a run file. Linker .EXE file 2

Creating and Running a Program Assembling: translate source program (written in assembly language) into machine code (object code) Linking: complete machine code for the object program, generate an executable module

Assembling & Linking the program After printing the copyright information, the assembler will check the source file for syntax errors: If one or more errors were found: The assembler will display the line number of each error and a short description. If no errors were found: The assembler will translate the assembly language code into the assembly machine language object file (.obj file). The linker will take one or more object files, fills any missing addresses, and combines the object files into a single executable file (.exe file). 6

Assembly Language Statements Programs consist of statements, one per line. Statements is either instruction or assembler directive. Instruction , which the assembler translate into machine code. Assembler directive, which instructs the assembler to perform some specific task. Both instructions and directives have up to four fields: [identifier ] operation [operand(s)] [comment] 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. 4

Assembly Language Statements An example of an instruction: START: MOV CX,5 ; initialize counter An example of an assembler directive: MAIN PROC

Identifier field The identifier is used for instruction labels, procedure names and variable name. 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 must not begin with a digit. If a dot is used, it must be the first character.

Identifiers Examples: COUNTER1 2abc Begins with a digit @CHARACTER . Not first character TWO WORDS Contains a blank STD_NUM .TEST YOU&ME Contains an illegal character 8

Operation field For an instruction, the operation field contains a symbolic operation code (opcode). The assembler translates a symbolic opcode into machine language. For example: mov, add , sub. For an assembler directive, the operation field contains a pseudo-operation code (pseudo-op). pseudo-op are not translated into machine code, they simply tell assembler to do something. For example: DB , DW , PROC.

Operand field For an instruction, the operand fields specifies the data that are to be acted on by the operation. An instruction may have zero, one, two operands.

Comment field 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. Examples: MOV CX, 0 ; CX counts terms, initially 0 13

Defining Types of data Name: defined the variable name expression Dn [name] expression Dn [name] Name: defined the variable name Dn (Directive): define the data item (type or space) Expression: is an operand may specify an uninitialized value or constant value an uninitialized value defined by item ? EXAMPLE : DATAX DB ?

Defining Types of data (Directive): Pseudo-op Stands for DB Define Byte DW Define Word DD Define Doubleword DQ Define Quadword DT Define Tenbytes Data types are not static types like in java int, they are operation, DB, go assembler and define variable as byte for me

Defining Types of data -Examples a memory byte is associated with the name ALPHA, and initialized to 4 ALPHA DB 4 A memory byte is associated with the name BYT, and uninitialized. BYT DB ? a memory word is associated with the name WRD, and initialized to -2. WRD DW -2

High and Low Bytes of a Word WORD1 DW 1234H high byte WORD1+1 low byte WORD1

Defining Types of data The decimal range (fit a byte): Unsigned representation: 0 to 255 Signed representation: -128 to 127 The decimal range (fit a word): Unsigned representation: 0 to 65535 Signed representation: -32768 to 32767

Defining Types of data – Array byte an array is a sequence of memory bytes or words. Example: B_ARRAY DB 10H,20H,30H Symbol Address Contents B_ARRAY 200H 10H B_ARRAY+1 201H 20H B_ARRAY+2 202H 30H

Defining Types of data – Array word Example: W_ARRAY DW 1000,40,29887,329 Symbol Address Contents W_ARRAY 0300H 1000D W_ARRAY+2 0302H 40D W_ARRAY+4 0304H 29887D W_ARRAY+6 0306H 329D

Defining Types of data :The DUP Operator It is possible to define arrays whose elements share a common initial value by using the DUP (duplicate) operator. Syntax: Example: Repeat-count(exp) Dn [name] creates an array of 212 uninitialized bytes. DELTA DB 212 DUP (?) set up an array of 100 words, with each entry initialized to 0. GAMMA DW 100 DUP (0)

Character String ASCII codes can be initialized with a string of characters using single quotes like ‘PC’ or double quotes like “PC”. Example: LETTERS DB 'ABC' = LETTERS DB 41H,42H,43H Inside a string, the assembler differentiates between upper and lowercase. It is possible to combine characters and numbers in one definition: Example: MSG DB 'HELLO',0AH,0DH, '$'

Numeric Constant In an assembly language program we may express data as: Binary: bit string followed by ‘B’ or ‘b’ Decimal: string of decimal digits followed by an optional ‘D’ or ‘d’ Hex: begins with a decimal digit and ends with ‘H’ or ‘h’ Octal : end with ‘O’ or ‘o’ Any number may have an optional sign.

Numeric Constant Number Type 11011 1101B 64223 decimal -21843D 1B4DH FFFFH 0FFFFH decimal binary decimal decimal hex illegal illegal hex

Named Constants - EQU (Equates) To assign a name to a constant, we can use the EQU pseudo-op. Syntax: name EQU constant Examples: LF EQU 0AH MOV DL,0AH = MOV DL,LF PROMPT EQU 'Any Thing' MSG DB 'Any Thing' = MSG DB PROMPT Note: no memory is allocated for EQU names.

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 statement 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 Description SMALL code in 1 segment data in 1 segment MEDIUM code > 1 segment data in 1 segment COMPACT code in 1 segment data > 1 segment LARGE code > 1 segment data > 1 segment no array larger than 64k bytes HUGE 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 size ; where size is an optional number that specifies ; the stack area size in bytes. Example: .STACK 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 DW 2 MSG 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. 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

A General Form of a .SMALL model program 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