Microprocessor and Assembly Language

Microprocessor and Assembly Language

MICROPROCESSOR AND ASSEMBLY LANGUAGE LECTURE-5-PROGRAM STRUCTURE OF ASSEMBLY LANGUAGE MUHAMMAD HAFEEZ DEPARTMENT OF COMPUTER SCIENCE GC UNIVERSITY LAHORE TODAYS AGENDA Program Structure Assembler Directives MEMORY MODELS Memory Models defines how much memory we need for a program

TINY SMALL MEDIUM COMPACT LARGE HUGE MEMORY MODELS TINY

SMALL data segment can exceed 64K Code segment 64K LARGE

64K data segment Code can exceed 64K COMPACT 64K for code segment 64K for data segment MEDIUM 64K for both code and data segment Code can exceed 64K

Data can exceed 64K but Array declared in one data segment can not exceed 64K HUGE Code can exceed 64K Data can exceed 64K, Array declared in one data segment can exceed 64K MEMORY MODELS ASSEMBLY LANGUAGE STATEMENTS Assembly Language Statements are either,

Instructions Directive (also called Pseudo-Ops) Both Instruction and Directive can have up to 4 Fields [Label] mnemonic [operand] [;comment] Brackets indicate the fields are optional ASSEMBLY LANGUAGE STATEMENTS

Label: Label composed of A-Z, a-z, 0-9 and special character ?, ., @,$ Must begin with an alphabetic and special character Cannot exceed 31 characters . Can only be used as first character No Case Sensitivity Label for directive do not need to end with Colon (:) Label for Instruction needs to end with (:) colon

As it tells the assembler to refer the code ASSEMBLY LANGUAGE STATEMENTS ASSEMBLY LANGUAGE STATEMENTS Mnemonic:

Instructions and Operands for Processor Real work of program MOV AX,5 ADD AX,BX Pseudo-Ops/ Directive for Assembler MAIN ENDP DB Comment: At end of each line Optional BUT Highly important for readable/ understandable Assembly Language Programs ASSEMBLY LANGUAGE

PROGRAM DATA MOVEMENT INSTRUCTIONS simplified Assigns a Title to your Source File Label Stack of program Data of program Assembler Directive

Comment DATA DEFINING DIRECTIVES Storage is defined using data definition directives Storage is created at assembly time. Variables can be initialized to character string Syntax Name

Data Directive Initial value, [values] DATA DEFINING DIRECTIVES DECLARATION OF DATA DATA1 DATA2 DATA3 DATA4 DB DB

DB DB 15H 15H, 1FH, 4AH ? ;SET ASIDE ONE BYTE STRING OF CHARACTERS,$ DB could be replaced with DW, DD, DQ or DT depending upon requirement NAMED CONSTANTS WITH DIRECTIVE EQU To assign a name to constant, use EQU pseudo-op

EQU Syntax EQU Constant Example: LF EQU 0AH CR EQU 0DH PROMPT EQU Enter Number

Name No Memory is allocated for EQU pseudo-op MORE DATA DEFINITION DIRECTIVES To assign a name to constant, use EQU pseudo-op EQU Syntax

EQU Constant Example: LF EQU 0AH CR EQU 0DH PROMPT EQU Enter Number Name No Memory is allocated for EQU pseudo-op

ASSEMBLE, LINK AND RUN A PROGRAM Software you need can be downloaded from blog, along with instructions to set up your assembly language programming environment. Three Steps are required to create, assemble and link an assembly language program

Step 1: A simple Text Editor to create assembly language program file and save it with Extension (.ASM) An Assembler MASM (Microsoft Macro Assembler) that takes (.ASM) file and create an Object File with Extension (.OBJ) A Linker Program (LINK) that takes an (.OBJ) file and create Executable file with Extension (.EXE) Run Executable File Execute under Debug, DEBUG PRG1.EXE (Enter) .. U CS:0 1 to find data segment address, D Datasegment: 0 F , G, Then again D DataSegment: 0 F Note: Other assembler and linker program also exist, like Borlands TASM and TLINK etc. ASSEMBLE, LINK AND RUN A PROGRAM FILES CREATED BY ASSEMBLER

The Source Listing File (.LST) The Cross Reference File (.CRF) Display line number and corresponding machine code side-byside, helpful in debugging List of variables and labels in the programs The Cross Reference File (.CRF) List of variables and labels in the programs

MORE DIRECTIVE OF MASM FOR HANDLING DATA ORG [Number] Is used to mark the beginning of offset address ORG 10H OFFSET

Returns the offset of a variable from the start of its segment address The destination must be 16-bit MOV BX, OFFSET DATA2 [More on Data Definitions, PTR, SEG later] FLAG REGISTER Flag Register defines processor status and help it to make decisions Decision making is done by looking at current state of processor

Nine individual bits called FLAGS in flag register represents a particular state of processor Flags are classified as control flags and status flags Status flags are affected by result of computations, also called conditional flags FLAG REGISTER CONDITIONAL FLAGS The processor uses conditional flags to make decision

CARRY FLAG (CF): SUB AX, AX set Zero Flag = 1 CF=1, If carry out from MSB (D7) for Byte, (D15) for Word in case of addition, or Borrow in MSB in case of subtraction, also affected by rotate instructions Parity Flag (PF): PF=1, If low byte of a result has even number of 1 bits

(even parity). PF=0, if low byte of a result has odd number of 1 bits (odd parity) CONDITIONAL FLAGS Auxiliary Carry (AF): Zero Flag (ZF): ZF=1, If result is zero. ZF=0, for non-zero results

Sign Flag (SF): AF=1, If carry out from D3 bit to D4 bit, otherwise AF=0 SF=1, If after computations MSB=1, if you are giving a signed interpretation to result SF=0, if MSB = 0 Overflow Flag (OF): OF=1, If Singed overflow occurs OF=0, otherwise

CONTROL FLAGS Trap Flag (TF): Interrupt Flag (IF): TF=1, Allow to program to execute in single step, helpful in debugging TF=0, otherwise IF=1, Allow external maskable interrupts to the

processor IF=0, otherwise Direction Flag (DF): Used to control the direction of string operations FLAG REGISTER IN DEBUG UTILITY Command is --- R F INSTRUCTIONS AFFECT FLAGS MOV/ XCHG

ADD/ SUB All INC/ DEC None All except CF NEG

All, (By default set CF=1, only exception result is zero) OF=1, if Word operand is 8000H and byte operand is 80H EXAMPLES: AX=FFFFH, BX=FFFFH, ADD AX,BX MOV AL,80H, MOV BL,80H, ADD AL,BL

SF=1, CF=1, AF=1 PF=1, ZF=1, CF=1, OF=1, SF=0 MOV CX, 5 DEC CX, DEC CX, DEC CX, DEC CX, DEC CX After execution of these instructions result will be zero hence, ZF=1 EXAMPLES: Addition 0Fh + 08h?

Addition 0Fh + F8h? Addition 4Fh + 40h? Addition F8h + 81h? Represent in signed and unsigned numbers SOME BASIC I/O OPERATIONS INT 21H , an interrupt also called DOS function call 87 different interrupts are supported by this DOS function call Each interrupt is identified by a function number placed in AH register SOME BASIC I/O

OPERATIONS INT 21H , an interrupt also called DOS function call 87 different interrupts are supported by this DOS function call Each interrupt is identified by a function number placed in AH register SOME BASIC I/O OPERATIONS Read a Character Display a Character

Display a String SOME BASIC I/O OPERATIONS Read a Character INT 21h / AH=1 - read character from standard input, with echo, result is stored in AL. If there is no character in the keyboard buffer, the function waits until any key is pressed. Example: mov ah, 1 int 21h SOME BASIC I/O OPERATIONS Display a Character INT 21h / AH=2 - write character to

standard output. DL = character to write, after execution AL = DL. Example: mov ah, 2 mov dl, a int 21h SOME BASIC I/O OPERATIONS Display a String INT 21h / AH=9 - display a string character string on the console. The offset of string must be in DX string must be end with $ (24h) mov ah,9 ;string output function mov dx,offset msg ;offset address of the string int 21 ;call DOS

obvious disadvantage, a dollar sign can not be displayed as part of a string QUESTIONS ??????????????????????????

Recently Viewed Presentations

  • Alfresco

    Alfresco

    Cilj ECM sistemi Osnova sistema Funkcionalnosti Alfresco ECM sistema Upravljanje dokumentima, web sadržajem, video zapisima, slikama Definisanje metapodataka za sadržaj Kolaboracija učesnika Napredni sistem pretrage Kontrola bezbednosti Kolaboracija sa drugim aplikacijama Alfresco arhitektura Baziran na standardima Realizovan u JEE ...
  • Parental Engagement - hamilton-p.schools.nsw.gov.au

    Parental Engagement - hamilton-p.schools.nsw.gov.au

    Plowden report (1967) asserted that schools make little difference to student outcomes. Why is it important? Higher grades. Enrolment in higher level programs/advanced classes. Higher graduatation rates. Higher tertiary education enrolments. Better social skills.
  • UEMS Section of Surgery Business Meeting

    UEMS Section of Surgery Business Meeting

    UEMS Section of SurgeryBusiness Meeting . 1. 4. th & 1. 5. th of. September, Malta. Christos Markopoulos, MD, MPhil(UK), PhD, FEBS. Professor of Surgery. Medical ...
  • Timeline - Quia

    Timeline - Quia

    Also, Explorica is a really . easy. company to work with, so if at any point problems arise regarding the financial side of the trip, they will work with you. And don't forget about those fundraiser pages! And, we still...
  • Chapter 1- Instructor PowerPoint Slides. Summer, 2008. Edited ...

    Chapter 1- Instructor PowerPoint Slides. Summer, 2008. Edited ...

    The before tax annual cash flow due to this investment is $10,000, and the income tax rate is 40% paid in the same year as incurred. The desired rate of return is 15%. All cash flows occur at the end...
  • The 2016  17 NEW NPQH DEVELOPMENT PROGRAMME For

    The 2016 17 NEW NPQH DEVELOPMENT PROGRAMME For

    The New NPQH Development Programme will also provide the opportunity to develop a peer support circle in the GwE region following the programme. Day One: A . series of practical projects . develop . the . understanding and . setting...
  • Advanced Threat Protection Presentation to MTAG January 19,

    Advanced Threat Protection Presentation to MTAG January 19,

    By placing end point software sensors, we can bring the protections to the host components and prevent lateral movement of threats internal to our network. One potential solution is the use of ATP capabilities like those found in Palo Alto's...
  • Chapter One - mohamadtermos

    Chapter One - mohamadtermos

    * X linked genes Eye color in flies - red (R) or white (r) Males can be: XRY or XrY trait determined by x chromosome (1 allele) Females can be XRXR or XRXr or XrXr trait determined by 2 alleles...