Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language.

Slides:



Advertisements
Similar presentations
Registers of the 8086/ /2002 JNM.
Advertisements

Assembly Programming Notes for Practical2 Munaf Sheikh
Introduction to 8086 Microprocessor
Princess Sumaya Univ. Computer Engineering Dept. د. بســام كحـالــه Dr. Bassam Kahhaleh.
ICS312 Set 6 Operands. Basic Operand Types (1) Register Operands. An operand that refers to a register. MOV AX, BX ; moves contents of register BX to.
Department of Computer Science and Software Engineering
More about procedures and Video Processing. Lesson plan Review existing concepts More about procedures and boolean expression Video processing.
Video systems (continue). Practice Modify the program to get a string from a keyboard to display the input string on the middle of the screen with reverse.
Lect 3: Instruction Set and Addressing Modes. 386 Instruction Set (3.4) –Basic Instruction Set : 8086/8088 instruction set –Extended Instruction Set :
Gursharan Singh Tatla 21-Nov-20101www.eazynotes.com.
8086 : INSTRUCTION SET By, Pramod Sunagar Assistant Professor
Direct video practice and Keyboard Operations
Princess Sumaya University
8-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL x86 Instructions Part.
9-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL x86 Instructions Part.
ICS312 Set 3 Pentium Registers. Intel 8086 Family of Microprocessors All of the Intel chips from the 8086 to the latest pentium, have similar architectures.
Lect 4: Instruction Set and Addressing Modes. 386 Instruction Set (3.4)  Basic Instruction Set : 8086/8088 instruction set  Extended Instruction Set.
Fundamentals of Assembly language
CEG 320/520: Computer Organization and Assembly Language ProgrammingIntel Assembly 1 Intel IA-32 vs Motorola
1/2002JNM1 Positional Notation (Hex Digits). 1/2002JNM2 Problem The 8086 has a 20-bit address bus. Therefore, it can access 1,048,576 bytes of memory.
MOHD. YAMANI IDRIS/ NOORZAILY MOHAMED NOOR1 Addressing Mode.
Faculty of Engineering, Electrical Department,
Strings, Procedures and Macros
Executing and Linking an assembly program. Lesson plan Review Program logic and control Practice exercise Assembling, Linking and Executing Programs Practice.
Processing String Data and Binary Data (continue)
Assembly Language. Symbol Table Variables.DATA var DW 0 sum DD 0 array TIMES 10 DW 0 message DB ’ Welcome ’,0 char1 DB ? Symbol Table Name Offset var.
LEA instruction The LEA instruction can be used to get the offset address of a variable Example ORG 100h MOV AL, VAR1 ; check value of VAR1 by moving it.
Review of Assembly language. Recalling main concepts.
3.4 Addressing modes Specify the operand to be used. To generate an address, a segment register is used also. Immediate addressing: the operand is a number.
Data Structures Covers Chapter 5, pages 144 – 160 and Chapter 6, pages 198 – 203.
Data Transfer Instructions Introduction The data transfer instructions are used to move data between internal register or between internal.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
Khaled A. Al-Utaibi  Introduction  The MOV Instruction  The LEA Instruction  The Stack Instructions  The String Data Transfer.
Internal Programming Architecture or Model
Intel MP Organization. Registers - storage locations found inside the processor for temporary storage of data 1- Data Registers (16-bit) AX, BX, CX, DX.
Microprocessors CSE- 341 Dr. Jia Uddin Assistant Professor, CSE, BRAC University Dr. Jia Uddin, CSE, BRAC University.
Assembly language programming
Instruction set Architecture
Format of Assembly language
Chapter Nov-2010
Data Transfers, Addressing, and Arithmetic
Introduction to 8086 Microprocessor
COURSE OUTCOMES OF MICROPROCESSOR AND PROGRAMMING
ADDRESSING MODES.
Microprocessor Systems Design I
Microprocessor and Assembly Language
Chapter 4 Data Movement Instructions
EE3541 Introduction to Microprocessors
Assembly IA-32.
INSTRUCTION SET.
Assembly Language Programming Part 2
ADDRESSING MODES.
Defining Types of data expression Dn [name] expression Dn [name]
Symbolic Instruction and Addressing
Introduction to Assembly Language
Data Addressing Modes • MOV AX,BX; This instruction transfers the word contents of the source-register(BX) into the destination register(AX). • The source.
Chapter 4 Data Movement Instructions
8086 Registers Module M14.2 Sections 9.2, 10.1.
اصول اساسی برنامه نویسی به زبان اسمبلی
Morgan Kaufmann Publishers Computer Organization and Assembly Language
Symbolic Instruction and Addressing
Symbolic Instruction and Addressing
University of Gujrat Department of Computer Science
Computer Architecture CST 250
UNIT-II Assembly Language Programs Involving Logical
Chapter 6 –Symbolic Instruction and Addressing
CNET 315 Microprocessor & Assembly Language
Intel 8086.
Chapter 8: Instruction Set 8086 CPU Architecture
UNIT-II ADDRESSING MODES & Instruction set
Presentation transcript:

Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language

Lesson plan Review of existing concepts Data transfer instructions –Practice Basic arithmetic instructions and Repetitive move operations –Practice

Review of existing concepts Comments Directives (page, segment, title) Data type (Byte (DB), Word(DW), Doubleword(DD), String Some arithmetic operations: ADD,SUB,MUL,DIV

Data transfer instructions MOV instruction –Transfers data referenced by the address of the second operand to the address of the first operand –Destination has to have the same length as source [label:] MOV register/memory register/memory/immediate Example: MOV F, AX; // Move content of AX to the variable F MOV CX, D;// Move value of D to CX MOV ES, AX MOV AX, 215

Note MOV instruction can’t: set the value of the CS and IP registers. copy value of one segment register to another segment register (should copy to general register first). MOV ES, DS copy immediate value to segment register (should copy to general register first). MOV DS, 100 MOV instruction can’t: set the value of the CS and IP registers. copy value of one segment register to another segment register (should copy to general register first). MOV ES, DS copy immediate value to segment register (should copy to general register first). MOV DS, 100

MOVSB: Copy byte at DS:[SI] to ES:[DI]. Update SI and DI. Algorithm: ES:[DI] = DS:[SI] if DF = 0 then SI = SI + 1 DI = DI + 1 else SI = SI - 1 DI = DI - 1 DF: direction flag from the flag register MOVSB and MOVSW

MOVSW: Copy word at DS:[SI] to ES:[DI]. Update SI and DI. ES:[DI] = DS:[SI] if DF = 0 then SI = SI + 2 DI = DI + 2 else SI = SI - 2 DI = DI - 2 DF: direction flag from the flag register MOVSB and MOVSW

XCHG swap the two data items [label:] XCHG register/memory, register/memory Example: MOV AL, 5 MOV AH, 2 XCHG AL, AH ; AL = 2, AH = 5 XCHG AL, AH ; AL = 5, AH = 2 XCHG instruction

Load Effective Address. REG = address of memory (offset) [label:] LEA register/memory Example: LEA AX, m ;load offset address of m to AX LEA instruction

Arithmetic instructions INC and DEC instruction –Increasing or decreasing the contents of register or memory location by 1 [label:] INC/DEC register/memory Flag: OF, SF and ZF OF:is set when an instruction resulted in a carry into the sign bit of the result. SF: is set if the sign bit of a result is set ZF: is set if the result is equal to 0.

Arithmetic instructions ADD [label:] ADD/SUB operand1, operand 2 operand1 =operand 1 + operand 2 Operand 1: register/memory Operand 2: register/memory/immediate

Arithmetic instructions SUB [label:] SUB operand1, operand 2 operand1 =operand 1 - operand 2 operand 1: register/memory operand 2: register/memory/immediate

Arithmetic instructions MULoperand Unsigned multiply. Operand: register/memory

Arithmetic instructions IMULoperand Signed multiply. Operand: register/memory Example: MOV AX, -2 MOV CX, -3 IMUL CX; AX = +6 CF = 0

Arithmetic instructions DIVoperand Unsigned multiply. Operand: register/memory when operand is a byte: AL = AX / operand AH = remainder (modulus) when operand is a word: DX = remainder (modulus)

Arithmetic instructions IDIVoperand Signed multiply. Operand: register/memory when operand is a byte: AL = AX / operand AH = remainder (modulus) when operand is a word: DX = remainder (modulus)

Write a program to convert from Celsius to Fahrenheit and vice versa: Tc = (5/9)*(Tf-32) Tc: censius Tf: fahrenheit (The result may not be accurate due to the integer division but that is fine) Practice

Repetitive move instructions TITLEA04ASM1 (EXE) Move and add operations ; STACKSEGMENT PARA STACK 'Stack' DW 32 DUP(0) STACKENDS ; DATASEGSEGMENT PARA 'Data' STRING1 DB " ","$" STRING2 DB ? DATASEGENDS

Repetitive move instructions CODESEG SEGMENT PARA 'Code' MAINPROC FAR MOV AX, dataseg MOV DS, AX MOV ES, AX MOV CX, 09 ; Initialize to move 9 characters LEA SI, STRING1 ; Initialize source index register to offset of string 1 LEA DI, STRING2 ; Initialize destination index register to offset of string 2 BEGINLOOP: MOV AL,[SI] ; Get a current character from string 1 to AL MOV [DI], AL ; Move it to the current character in string 2 INC SI ; Move to the next character in string 1 INC DI ; Move to the next character in string 2 DEC CX ; Decrease the count for loop JNZ BEGINLOOP ; Continue to loop if count is not 0 MOV AH, 09H LEA DX, STRING2 int 21H ; Display String 2 MAINENDP;End of procedure CODESEG ENDS END MAIN;End of program

Result

Repetitive move instructions DEC CX ZF = 1 if CX = 0 JNZ LABEL if ZF = 0 then jump to the label

Practice Develop an assembly program to: –Define byte items: BYTE1 and BYTE2 (Assign any values for these two variables) –Define a word item: WORD3 and WORD3=0 –Move content of Byte1 to AL –Add content of Byte2 to AL –Set DL= 42H –Exchange the content of AL and DL –Multiply the contents of AL by DL –Transfer product from AX to WORD3

Addressing mode Register addressing: E.gADD AX, BX fastest type of operations Immediate addressing Immediate contains a constant value or an expression E.g: MOV AX, 0245H Direct memory addressing One of operand references a memory location and the other operand references a register E.G MOV FLDF, AX

Addressing mode Direct-Offset addressing use arithmetic instruction to modify an address e.gMOV CX, DATAZ+2 Indirect memory addressing UseBX and BP, DI and SI within [ ] e.g. MOV [BX], CL

Addressing mode Base Displacement Addressing Uses BX, BP and DI, SI and combine with a displacement to form an effective address E.g MOV AL,[SI+2] Base-Index Addressing Combine BX,BP with DI,SI to form effective address E.G MOV AL,[BX+SI]

Addressing mode Base-Index Displacement Addressing Combine BX, BP and DI, SI and a displacement to form an effective address E.g MOV AL,[BX+SI+2]

NEAR and FAR address NEAR address consists of 16 bit offset portion of an address used in real mode FAR address consists of both the segment and offset portions in the form of 32 bit segment:offset

SEGMENT OVERRIDE PREFIX Example: MOV ES:[SI+2], CL; move CL to ES:[SI+2]