Fundamental of Assembly Language Programming (for Microprocessor)

Slides:



Advertisements
Similar presentations
Instruction Set-Intro
Advertisements

Week 3. Assembly Language Programming  Difficult when starting assembly programming  Have to work at low level  Use processor instructions >Requires.
The 8051 Microcontroller and Embedded Systems
The Assembly Language Level
Microprocessors General Features To be Examined For Each Chip Jan 24 th, 2002.
Lecture - 2 Number systems and computer data formats
Assembly Language Lecture BY SHERY KHAN
Department of Computer Science and Software Engineering
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.
MASM CODEVIEW TUTORIALS
8086 Assembly Language Programming I
Outline Learning Assembly by an Example.  Program Formats  Some Simple Instructions  Assemble and Execute Learning Another Example  Data Definition.
1 ICS 51 Introductory Computer Organization Fall 2006 updated: Oct. 2, 2006.
7-1 ECE 424 Design of Microprocessor-Based Systems Haibo Wang ECE Department Southern Illinois University Carbondale, IL Introduction to Assembly.
CSCE 121, Sec 200, 507, 508 Fall 2010 Prof. Jennifer L. Welch.
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.
1 Introduction Chapter 1 n What is Assembly Language? n Data Representation.
Joseph L. Lindo Assembly Programming Sir Joseph Lindo University of the Cordilleras.
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 ;
Computer System A computers system has many distinct parts:  Microprocessor  Memory system  I/O system  Buses The way in which these parts are interconnected.
Dr Masri Ayob TK 2633: Microprocessor & Interfacing Lecture 7: Assembly Language.
Introduction to Subroutines. All the combinations in which a subroutine can be written 1. The subroutine may be: a. Internal or b. External 2. The type.
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.
Chapter 1: Basic Concepts
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.
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.
INSTRUCTION SET AND ASSEMBLY LANGUAGE PROGRAMMING
Faculty of Engineering, Electrical Department,
The x86 PC Assembly Language, Design, and Interfacing By Muhammad Ali Mazidi, Janice Gillespie Mazidi and Danny Causey © 2010, 2003, 2000, 1998 Pearson.
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.
Chapter 4 Requirements for Coding in Assembly Language.
Computer Architecture and Operating Systems CS 3230 :Assembly Section Lecture 4 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
UHD:CS2401: A. Berrached1 The Intel x86 Hardware Organization.
Assembly Language programming
Microprocessors used in Personal Computers. The Memory Map of a Personal Computers Transient Program Area (TPA): Holds the operating system (interrupt.
Review of Assembly language. Recalling main concepts.
Introduction to Microprocessors Chapter 3. Programming Model (8086)  Shows the various internal registers that are accessible to the programmer.
8086/8088 Instruction Set, Machine Codes and Addressing Modes.
1 EKT 225 MICROCONTROLLER I CHAPTER ASSEMBLY LANGUAGE PROGRAMMING.
Computer Data Formats Microprocessor Course Electrical Engineering Department University of Indonesia.
Internal Programming Architecture or Model
CC410: System Programming Dr. Manal Helal – Fall 2014 – Lecture 10 – Loaders.
Microprocessors CSE- 341 Dr. Jia Uddin Assistant Professor, CSE, BRAC University Dr. Jia Uddin, CSE, BRAC University.
The Microprocessor & Its Architecture A Course in Microprocessor Electrical Engineering Department Universitas 17 Agustus 1945 Jakarta.
1 Chapter 1: Introduction Appendix A: Binary and Hexadecimal Tutorial Assembly Language for Intel-Based Computers, 3rd edition Kip R. Irvine.
Assembly language programming
Format of Assembly language
Assembly Language programming
The 8051 Microcontroller and Embedded Systems
Microprocessor and Assembly Language
Microprocessor and Assembly Language
INTRODUCTION ABOUT ASSEMBLY
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.
CS-401 Computer Architecture & Assembly Language Programming
INTRODUCTION ABOUT ASSEMBLY
Lecture 06 Programming language.
Introduction to Microprocessor Programming
8051 ASSEMBLY LANGUAGE PROGRAMMING
Assembler Directives end label end of program, label is entry point
By Nasser Halasa Assembly Language.
Computer Organization and Assembly Language
Computer Architecture and System Programming Laboratory
Part I Data Representation and 8086 Microprocessors
Presentation transcript:

Fundamental of Assembly Language Programming (for Microprocessor) Prima Dewi Purnamasari Microprocessor Electrical Engineering Department Universitas Indonesia

Computer Language High Level language Low Level Language Machine Codes Pascal, C, C++, Java, etc Low Level Language Assembly Machine Codes 010010001010100101010  in binary 1234 FFAB 1234 H  in hexadecimal Microprocessor (c) Prima Dewi Purnamasari 2011

Why Assembly? Assembly has several features that make it a good choice many some situations. It's fast – Assembly programs are generally faster than programs created in higher level languages. Often, programmers write speed-essential functions in assembly. It's powerful – You are given unlimited power over your assembly programs. Sometimes, higher level languages have restrictions that make implementing certain things difficult. It's small – Assembly programs are often much smaller than programs written in other languages. This can be very useful if space is an issue. Microprocessor (c) Prima Dewi Purnamasari 2011

Preparation for Assembly Programming Basically you will need: Program editor  as simple as Notepad Assembler MASM  http://www.masm32.com/. TASM  Made by Borland, a commercial product NASM  http://sourceforge.net/projects/nasm/ Be careful in writing your programs, because it runs directly on your microprocessor! Microprocessor (c) Prima Dewi Purnamasari 2011

Steps to Create a Program Microprocessor (c) Prima Dewi Purnamasari 2011

MASM32 Microprocessor (c) Prima Dewi Purnamasari 2011

TASM Microprocessor (c) Prima Dewi Purnamasari 2011

Emulator an emulator is hardware and/or software that duplicates (or emulates) the functions of a first computer system in a different second computer system, so that the behavior of the second system closely resembles the behavior of the first system. Microprocessor (c) Prima Dewi Purnamasari 2011

Emu8086 Microprocessor (c) Prima Dewi Purnamasari 2011

Individual Assignment Download and install emu8086 (trial) http://www.emu8086.com/ Find corresponding tutorial on how to use it (available on the Internet!), self study! Microprocessor (c) Prima Dewi Purnamasari 2011

Group assignment Each group is responsible to bring at minimum 1 laptop (with emu8086 installed) to class every session Microprocessor (c) Prima Dewi Purnamasari 2011

Creating an Assembly Language Program An assembly language program should be written with any text editor and have the extension filename.asm. The assembler and Linker The assembler program converts a symbolic source module (file) into a hexadecimal object file The linker program executes as the second part of ML, reads the object files, created by the assembler program, and links them into a single execution file (.EXE) Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Assembly Program Structure Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

LIST File, generated automatically after program successfully assembled MemoryAddress Machine codes Microprocessor (c) Prima Dewi Purnamasari 2011

NEXT: MOV AX, [BX] ; comment Writing Structure NEXT: MOV AX, [BX] ; comment 1= label, followed by “:” 2= opcode 3= operand 4= comment, preceded with”;” 1 2 3 4 Microprocessor (c) Prima Dewi Purnamasari 2011

Writing Structure Each statement in an assembly language program consists of four parts or fields. The leftmost field is called the label. used to store a symbolic name for the memory location it represents All labels must begin with a letter or one of the following special characters: @, $, -, or ?. a label may have any length from 1 to 35 characters The label appears in a program to identify the name of a memory location for storing data and for other purposes. Microprocessor (c) Prima Dewi Purnamasari 2011

The next field to the right is the opcode field. designed to hold the instruction, or opcode the MOV part of the move data instruction is an example of an opcode Right of the opcode field is the operand field. contains information used by the opcode the MOV AL,BL instruction has the opcode MOV and operands AL and BL The comment field, the final field, contains a comment about the instruction(s). comments always begin with a semicolon (;) Microprocessor (c) Prima Dewi Purnamasari 2011

Click “View” and look the changes in every menu list: Try it in emulator! Click “View” and look the changes in every menu list: registers Data Screen Flags etc Microprocessor (c) Prima Dewi Purnamasari 2011

Computer Data Formats Microprocessor (c) Prima Dewi Purnamasari 2011

Computer Data Formats ASCII and Unicode Data Binary Coded Decimal (BCD) Byte-Sized Data Word-Sized Data Doubleword-Sized Data Real Numbers Microprocessor (c) Prima Dewi Purnamasari 2011

ASCII Data American Standard Code for Information Interchange (ASCII) data represent alphanumeric characters in the memory of a computer system (Table 1.7) The standard ASCII code is a 7-bit code with the eighth and MSB used to hold parity in some systems ASCII are most often stored in memory using a special directive to the assembler program called define byte(s) or DB Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

BCD Data Binary-Coded Decimal (BCD) information is stored in either packed or unpacked forms Packed BCD data are stored as two digits per byte Unpacked BCD data are stored as one digit per byte The range of a BCD digit extends from 00002 to 10012 or 0-9 decimal Table 1.9 shows some decimal numbers converted to both packed ad unpacked BCD Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Byte-Sized Data Byte-size data are stored as unsigned and signed integers Negative signed numbers are stored in the 2’s complement form Whenever a number is 2’s complement, its sign changes from negative to positive or positive to negative See example 1-22, 1-23 Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Define bit (DB) directive is used to store 8-bit data in memory Microprocessor (c) Prima Dewi Purnamasari 2011

Word-sized Data A word (16-bits) is formed with two bytes of data The LSB is always stored in the lowest-numbered memory location, the MSB in the highest (i.e., little endian format)— used with Intel family of microprocessor An alternate method (i.e., big endian format) is used with the Motorola family of micro-processors Microprocessor (c) Prima Dewi Purnamasari 2011

Word-sized Data Fig 1.11(a) & (b) shows the weight of each bit position in a word of data Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Example 1.25 shows several signed and unsigned word-sized data stored in memory using the assembler program Note that define word(s) directive or DW causes the assembler to store words in the memory Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Doubleword-sized Data Doubleword-sized data requires four bytes of memory (32-bit number) Doubleword-sized data appear as a product after a multiplication and also as a dividend before a division Fig. 1-12 shows the form used to store doublewords in the memory and the binary weights of each bit position Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

To define doubleword-sized data, use assembler directive define doubleword or DD Microprocessor (c) Prima Dewi Purnamasari 2011

Real Numbers A real number (floating-point number) contains two parts: a mantissa, significant, or fraction and an exponent Fig. 1-13 and example 1-27 depicts both the 4-byte (single precision) and 8-byte (double precision) forms of real numbers Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

The exponent is stored as a biased exponent an exponent of 23 is represented as a biased exponent of 127+3 or 130 (82H) in the single- precision form or as 1026 (402H) in the double-precision form Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Assembler detail From chapter 4 42 Microprocessor (c) Prima Dewi Purnamasari 2011 Microprocessor (c) Prima Dewi Purnamasari 2011

Directives Indicate how an operand or section of program is to be processed by the assembler Storing Data in a Memory Segment: DB, DW, DD, SEGMENT, .DATA, ENDS, DUP, ALIGN e.g.: Example 4.12 THIS refers the data as byte or word Microprocessor (c) Prima Dewi Purnamasari 2011

Memory is reserved for use in the future by using a question mark ( Memory is reserved for use in the future by using a question mark (?) as an operand for a DB, DW, or DD directive. when ? is used in place of a numeric or ASCII value, the assembler sets aside a location and does not initialize it to any specific value DUP: creates array with or without initial values It is important that word-sized data are placed at word boundaries and doubleword-sized data are placed at doubleword boundaries. if not, the microprocessor spends additional time accessing these data types Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

EQU, ORG ASSUME Equate directive (EQU) equates a numeric, ASCII, or label to another label. equates make a program clearer and simplify debugging EX: TEN EQU 10 …. MOV AL,TEN The ORG (origin) statement changes the starting offset address of the data or code segments. At times, the origin of data or the code must be assigned to an absolute offset address with the ORG statement. ASSUME tells the assembler what names have been chosen for the code, data, extra, and stack segments. Used only with full-segment definition Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

PROC and ENDP Indicate start and end of a procedure (subroutine). they force structure because the procedure is clearly defined Both the PROC and ENDP directives require a label to indicate the name of the procedure. RET instruction executed the end of the proc. USES directive indicates which registers are used by the proc. The assembler automatically save and restore them using the stack instructions. EX: PRC1 PROC USES AX BX CX Use .LISTALL directive to view all instruction generated by assembler Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

The assembler uses two basic formats for developing software: Memory Organization The assembler uses two basic formats for developing software: one method uses models; the other uses full-segment definitions Memory models are unique to MASM. The models are easier to use for simple tasks. The full-segment definitions offer better control over the assembly language task and are recommended for complex programs. Microprocessor (c) Prima Dewi Purnamasari 2011

Models There are many models available to the MASM assembler, ranging from tiny to huge. .MODEL memsize TINY: all software and data fit into 64kb memory segment. Useful for small programs. assembled as a command (.COM) program SMALL: one data segment with one code segment for a total of 128kb of memory. assembled as an execute (.EXE) program Start of segments: .CODE, .DATA, .STACK Start of instructions and load segment registers with segment addresses: .STARTUP Exit to DOS: .EXIT End of file: END MP selection : .386, .486, .586, .686 .. Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011

Full Segment Definitions Full-segment definitions are also used with the Borland and Microsoft C/C++ environments for procedures developed in assembly language More structured form than the model method Use assume directive before the program begins. The program loader does not automatically initialize DS and ES. These registers must be loaded in the program STACK_SEG, DAT_SEG, CODE_SEG, END MAIN Microprocessor (c) Prima Dewi Purnamasari 2011

Microprocessor (c) Prima Dewi Purnamasari 2011 STACK_SEG SEGMENT ‘STACK’ DW 100H DUP(?) STACK_SEG ENDS DATA_SEG SEGMENT ‘DATA’ LISTA DB 100 DUP(?) LISTB DB 100 DUP(?) DATA_SEG ENDS COSE_SEG SEGMENT ‘CODE’ ASSUME CS:CODE_SEG, DS:DATA_SEG, SS:STACK_SEG MAIN PROC FAR MOV AX, DATA_SEG MOV ES, AX MOV DS, AX CLD MOV SI, OFFSET LISTA MOV DI, OFFSET LISTB MOV CX, 100 REP MOVSB MAIN ENDP CODE_SEG ENDS END MAIN Microprocessor (c) Prima Dewi Purnamasari 2011

Introduction to MOV Instruction Microprocessor (c) Prima Dewi Purnamasari 2011

Data Addressing Modes opcode an opcode, or operation code, tells the microprocessor which operation to perform MOV instruction provides a basis for explanation of data-addressing modes Microprocessor (c) Prima Dewi Purnamasari 2011

MOV Instruction MOV instruction perform COPY of a value, either from or to memory or register MOV = COPY MOV ≠ MOVE Microprocessor (c) Prima Dewi Purnamasari 2011

MOV BX, CX The source register’s contents do not change. the destination register’s contents do change The contents of the destination register or destination memory location change for all instructions except the CMP and TEST instructions. Note that only the rightmost 16 bits of register EBX change. The MOV BX, CX instruction does not affect the leftmost 16 bits of register EBX Microprocessor (c) Prima Dewi Purnamasari 2011

Some MOV Variant MOV AX,BX MOV [BX], AX MOV DATA,AX MOV AX,0123H [ ] sign represents memory location Destination = memory which has address as in BX MOV DATA,AX DATA is a name the programmer define in DATA SEGMENT destination=memory named DATA MOV AX,0123H a value 0123H is copied to AX register There are several more, but the above are the fundamental ones Microprocessor (c) Prima Dewi Purnamasari 2011

Rules in addressing. DO NOT: Mix different size of register MOV AX, BL Perform memory to memory addressing MOV [1234H],DATA Copy content of one segment register to another MOV DS,ES Use CS as the destination register MOV CS,1000H Microprocessor (c) Prima Dewi Purnamasari 2011

Group Assignment—Due Thursday 22/9 Make a program (altogether in one program, sequentially) Reserve place for data in data segment namely DATA1 with type word Copy 1234 to AX Copy 0011B to AL Copy 12H to AH Copy AX to DATA1 Microprocessor (c) Prima Dewi Purnamasari 2011

The report Write the program in emulator Compile it. Run the program in emulator. (single step). Analyze the effect on the registers and memory for each line of code Written report should be made as comprehensive as it can be (greater score for better report) The main part of your report would be: Print of program (source code), provide sufficient comment Print of LISTING file Program analysis Microprocessor (c) Prima Dewi Purnamasari 2011