Assembly Language. Dr. Esam Al_Qaralleh CE Department Princess Sumaya University for Technology. Overview of Assembly Language

Similar documents
Intel 8086 MICROPROCESSOR ARCHITECTURE

Intel 8086 MICROPROCESSOR. By Y V S Murthy

Code segment Stack segment

SRI VENKATESWARA COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF ECE EC6504 MICROPROCESSOR AND MICROCONTROLLER (REGULATION 2013)

Microprocessor. By Mrs. R.P.Chaudhari Mrs.P.S.Patil

9/25/ Software & Hardware Architecture

8086 INTERNAL ARCHITECTURE

Lecture 5:8086 Outline: 1. introduction 2. execution unit 3. bus interface unit

icroprocessor istory of Microprocessor ntel 8086:

SPRING TERM BM 310E MICROPROCESSORS LABORATORY PRELIMINARY STUDY

Lecture 5: Computer Organization Instruction Execution. Computer Organization Block Diagram. Components. General Purpose Registers.

MICROPROCESSOR PROGRAMMING AND SYSTEM DESIGN

ADVANCE MICROPROCESSOR & INTERFACING

EXPERIMENT WRITE UP. LEARNING OBJECTIVES: 1. Get hands on experience with Assembly Language Programming 2. Write and debug programs in TASM/MASM

Introduction to Microprocessor

CC411: Introduction To Microprocessors

VARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad

Microcomputer Architecture..Second Year (Sem.2).Lecture(2) مدرس المادة : م. سندس العزاوي... قسم / الحاسبات

A Presentation created By Ramesh.K Press Ctrl+l for full screen view

Program controlled semiconductor device (IC) which fetches (from memory), decodes and executes instructions.

UNIT 2 PROCESSORS ORGANIZATION CONT.

Marking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313)

Microprocessor and Assembly Language Week-5. System Programming, BCS 6th, IBMS (2017)

1. Introduction to Assembly Language

Module 3 Instruction Set Architecture (ISA)

EEM336 Microprocessors I. The Microprocessor and Its Architecture

EC-333 Microprocessor and Interfacing Techniques

BAHAR DÖNEMİ MİKROİŞLEMCİLER LAB3 FÖYÜ

16-Bit Intel Processor Architecture


US06CCSC04: Introduction to Microprocessors and Assembly Language UNIT 1: Assembly Language Terms & Directives

Internal architecture of 8086

Basic characteristics & features of 8086 Microprocessor Dr. M. Hebaishy

Chapter 2 COMPUTER SYSTEM HARDWARE

We can study computer architectures by starting with the basic building blocks. Adders, decoders, multiplexors, flip-flops, registers,...

Faculty of Engineering Computer Engineering Department Islamic University of Gaza Assembly Language Lab # 2 Assembly Language Fundamentals

EC 333 Microprocessor and Interfacing Techniques (3+1)

The Microprocessor and its Architecture

EC-333 Microprocessor and Interfacing Techniques

Assembler Programming. Lecture 2

INTRODUCTION TO MICROPROCESSORS

Introduction to IA-32. Jo, Heeseung

EEM336 Microprocessors I. Data Movement Instructions

Unit I Introduction. Department of Electronics and Communication Engineering VARDHAMAN COLLEGE OF ENGINEERING Shamshabad, Hyderabad , India.

INTRODUCTION TO IA-32. Jo, Heeseung

Chapter 3: Addressing Modes

PESIT Bangalore South Campus

ELE 3230 Microprocessors and Computer Systems

Hardware and Software Architecture. Chapter 2

Computer Architecture 1 ح 303

Marking Scheme. Examination Paper. Module: Microprocessors (630313)

Basic Execution Environment

ORG ; TWO. Assembly Language Programming

UNIT II OVERVIEW MICROPROCESSORS AND MICROCONTROLLERS MATERIAL. Introduction to 8086 microprocessors. Architecture of 8086 processors

EE2007 Microprocessor systems.

MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION (Autonomous) (ISO/IEC Certified) WINTER 2018 EXAMINATION MODEL ANSWER

CS401 Assembly Language Solved MCQS From Midterm Papers

Ex : Write an ALP to evaluate x(y + z) where x = 10H, y = 20H and z = 30H and store the result in a memory location 54000H.

Basic Assembly SYSC-3006

An 8-Bit Scientific Calculator Based Intel 8086 Virtual Machine Emulator

Complex Instruction Set Computer (CISC)

UNIT-I. 1.Draw and explain the Architecture of a 8085 Microprocessor?

CG2007 Microprocessor systems.

Addressing Modes on the x86

The 8086 Microprocessor

8086 Microprocessors & Peripherals

COE 205: Computer Organization & Assembly Language Introductory Experiment-B By Louai Al-Awami

Assembling, Linking and Executing 1) Assembling: .obj obj .obj.lst .crf Assembler Types: a) One pass assembler:

WINTER 12 EXAMINATION Subject Code : Model Answer Page No : / N. a) Describe the function of SID and SOD pins of 8085 microprocessor

Assembly Language Each statement in an assembly language program consists of four parts or fields.

Intel 8086: Instruction Set

CS 31: Intro to Systems ISAs and Assembly. Martin Gagné Swarthmore College February 7, 2017

Computer Processors. Part 2. Components of a Processor. Execution Unit The ALU. Execution Unit. The Brains of the Box. Processors. Execution Unit (EU)

Computer Architecture and System Software Lecture 04: Floating Points & Intro to Assembly

Northern India Engineering College, Delhi (GGSIP University) PAPER I

Chapter Three Addressing Mode MOV AX, BX

Lecture (02) The Microprocessor and Its Architecture By: Dr. Ahmed ElShafee

The Instruction Set. Chapter 5

Topic 2 :16 Bit Microprocessor: 8086 (24 Marks)

Week 2 The 80x86 Microprocessor Architecture

The x86 Microprocessors. Introduction. The 80x86 Microprocessors. 1.1 Assembly Language

Dr. Ramesh K. Karne Department of Computer and Information Sciences, Towson University, Towson, MD /12/2014 Slide 1

Architecture of 8086 Microprocessor

x86 Assembly Tutorial COS 318: Fall 2017

6/20/2011. Introduction. Chapter Objectives Upon completion of this chapter, you will be able to:

SHEET-2 ANSWERS. [1] Rewrite Program 2-3 to transfer one word at a time instead of one byte.

UNIT 1. Introduction to microprocessor. Block diagram of simple computer or microcomputer.

Lecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86

Moodle WILLINGDON COLLEGE SANGLI (B. SC.-II) Digital Electronics

Advanced Microprocessors

SPRING TERM BM 310E MICROPROCESSORS LABORATORY PRELIMINARY STUDY

Experiment 3 3 Basic Input Output

SYSC3601 Microprocessor Systems. Unit 2: The Intel 8086 Architecture and Programming Model

PESIT Bangalore South Campus

6/17/2011. Introduction. Chapter Objectives Upon completion of this chapter, you will be able to:

The x86 Architecture

THE UNIVERSITY OF TRINIDAD & TOBAGO

CS499. Intel Architecture

MICROPROCESSOR MICROPROCESSOR ARCHITECTURE. Prof. P. C. Patil UOP S.E.COMP (SEM-II)

iapx Systems Electronic Computers M

Transcription:

4345 Assembly Language Assembly Language Dr. Esam Al_Qaralleh CE Department Princess Sumaya University for Technology Assembly Language 3-1 Overview of Assembly Language Advantages: Faster as compared to programs written using high-level languages Efficient memory usage Control down to bit level Disadvantages: Need to know detail hardware implementation Not portable Slow to development and difficult to debug Basic components in assembly Language: Instruction, Directive, Label, and Comment Assembly Language 3-2

Example of Assembly Language Program ;NUMOFF.ASM: Turn NUM-LOCK indicator off..model SMALL.STACK.CODE.STARTUP MOV AX,40H ;set AX to 0040H D1: MOV DS,AX ;load data segment with 0040H MOV SI,17H ;load SI with 0017H AND BYTE PTR [SI],0DFH ;clear NUM-LOCK bit.exit END Comments Assembly directive Instructions Assembly directive Label Assembly Language 3-3 High-level code char *tmpfilename; int num_schedulers=0; int num_request_submitters=0; int i,j; if (!(f = fopen(filename,"r"))) { xbt_assert1(0,"cannot open file %s",filename); } while(fgets(buffer,256,f)) { if (!strncmp(buffer,"scheduler",9)) num_schedulers++; if (!strncmp(buffer,"requestsubmitter",16)) num_request_submitters++; } fclose(f); tmpfilename = strdup("/tmp/jobsimulator_ The Big (Simplified) Picture ASSEMBLER Machine code 010000101010110110 101010101111010101 101001010101010001 101010101010100101 111100001010101001 000101010111101011 010000000010000100 000010001000100011 101001010010101011 000101010010010101 010101010101010101 101010101111010101 101010101010100101 111100001010101001 Assembly code COMPILER sll $t3, $t1, 2 add $t3, $s0, $t3 sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) slt $t2, $t5, $t6 beq $t2, $zero, endif add $t0, $t1, $zero sll $t4, $t0, 2 add $t4, $s0, $t4 ALU lw $t5, 0($t3) lw $t6, 0($t4) Assembly Language 3-4 slt $t2, $t5, $t6 beq $t2, $zero, endif Program counter register CPU register register Control Unit

The Big (Simplified) Picture High-level code char *tmpfilename; int num_schedulers=0; int num_request_submitters=0; int i,j; if (!(f = fopen(filename,"r"))) { xbt_assert1(0,"cannot open file %s",filename); } while(fgets(buffer,256,f)) { if (!strncmp(buffer,"scheduler",9)) num_schedulers++; if (!strncmp(buffer,"requestsubmitter",16)) num_request_submitters++; } fclose(f); tmpfilename = strdup("/tmp/jobsimulator_ Hand-written Assembly code sll $t3, $t1, 2 add $t3, $s0, $t3 sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) slt $t2, $t5, $t6 beq $t2, $zero, endif ASSEMBLER Machine code 010000101010110110 101010101111010101 101001010101010001 101010101010100101 111100001010101001 000101010111101011 010000000010000100 000010001000100011 101001010010101011 000101010010010101 010101010101010101 101010101111010101 101010101010100101 111100001010101001 Assembly code COMPILER sll $t3, $t1, 2 add $t3, $s0, $t3 sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) slt $t2, $t5, $t6 beq $t2, $zero, endif add $t0, $t1, $zero sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) Assembly Language 3-5 slt $t2, $t5, $t6 beq $t2, $zero, endif Program counter register CPU register register Control ALU Unit What we do in this class: High-level code char *tmpfilename; int num_schedulers=0; int num_request_submitters=0; int i,j; if (!(f = fopen(filename,"r"))) { xbt_assert1(0,"cannot open file %s",filename); } while(fgets(buffer,256,f)) { if (!strncmp(buffer,"scheduler",9)) num_schedulers++; if (!strncmp(buffer,"requestsubmitter",16)) num_request_submitters++; } fclose(f); tmpfilename = strdup("/tmp/jobsimulator_ Hand-written Assembly code sll $t3, $t1, 2 add $t3, $s0, $t3 sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) slt $t2, $t5, $t6 beq $t2, $zero, endif ASSEMBLER Machine code 010000101010110110 101010101111010101 101001010101010001 101010101010100101 111100001010101001 000101010111101011 010000000010000100 000010001000100011 101001010010101011 000101010010010101 010101010101010101 101010101111010101 101010101010100101 111100001010101001 Assembly code COMPILER sll $t3, $t1, 2 add $t3, $s0, $t3 sll $t4, $t0, 2 add $t4, $s0, $t4 lw $t5, 0($t3) lw $t6, 0($t4) slt $t2, $t5, $t6 beq $t2, $zero, endif add $t0, $t1, $zero sll $t4, $t0, 2 add $t4, $s0, $t4 ALU lw $t5, 0($t3) lw $t6, 0($t4) Assembly Language 3-6 slt $t2, $t5, $t6 beq $t2, $zero, endif Program counter register CPU register register Control Unit

Software Model for the 8086 Assembly Language 3-7 Intel 8088 facts Overview 20 bit address bus allow accessing 1 M memory locations VDD (5V) 16-bit internal data bus and 8-bit external data bus. Thus, it need two read (or write) operations to read (or write) a 16-bit datum Byte addressable and byte-swapping Word: 5A2F 8-bit data control signals To 8088 CLK 8088 20-bit address control signals from 8088 18001 18000 5A 2F High byte of word Low byte of word GND Memory locations 8088 signal classification Assembly Language 3-8

Organization of 8088/8086 AH BH AL BL General purpose register Address bus (20 bits) Σ Execution Unit (EU) CH DH SP BP SI CL DL Segment register CS DS SS Data bus (16 bits) DI ALU Data bus (16 bits) ES IP ALU Flag register EU control Instruction Queue Bus control Bus Interface Unit (BIU) External bus Assembly Language 3-9 The 8086 Registers To write assembly code for an ISA (Instruction Set Architecture) you must know the name of registers Because registers are places in which you put data to perform computation and in which you find the result of the computation (think of them as variables) The registers are really numbered, but assembly languages give them easy-to-remember names The 8086 offered 16-bit registers Four general purpose 16-bit registers AX BX CX DX Assembly Language 3-10

The 8086 Registers AX BX CX DX AH AL BH BL CH CL DH DL Each of the 16-bit registers consists of 8 low bits and 8 high bits Low: least significant High: most significant The ISA makes it possible to refer to the low or high bits individually AH, AL BH, BL CH, CL Assembly Language 3-11 DH, DL The 8086 Registers AX BX CX DX AH AL BH BL CH CL DH DL The xh and xl registers can be used as 1-byte register to store 1-byte quantities Important: both are tied to the 16-bit register Changing the value of AX will change the values of AH and AL Changing the value of AH or AL will change the value of AX Assembly Language 3-12

The 8086 Registers Assembly Language 3-13 The 8086 Registers Two 16-bit index registers: SI DI These are basically general-purpose registers But by convention they are often used as pointers, i.e., they contain addresses And they cannot be decomposed into High and Low 1-byte registers Assembly Language 3-14

The 8086 Registers Two 16-bit special registers: BP: Base Pointer SP: Stack Pointer We ll discuss these Later Four 16-bit segment registers: CS: Code Segment DS: Data Segment SS: Stack Segment ES: Extra Segment We ll discuss them later as well Assembly Language 3-15 The 8086 Registers The 16-bit Instruction Pointer (IP) register: Points to the next instruction to execute The 16-bit FLAGS registers Information is stored in individual bits of the FLAGS register Whenever an instruction is executed and produces a result, it may modify some bit(s) of the FLAGS register Example: Z (or ZF) denotes one bit of the FLAGS register, which is set to 1 if the previously executed instruction produced 0, or 0 otherwise Assembly Language 3-16

The 8086 Registers AH AL = AX BH BL = BX CH CL = CX DH DL = DX SI DI BP SP IP = FLAGS CS DS SS ES 16 bits Control Assembly Language Unit 3-17 ALU General Purpose Registers AX 15 8 7 0 AH AL Accumulator Data Group BX CX BH CH BL CL Base Counter DX DH DL Data Pointer and Index Group SP BP SI DI Stack Pointer Base Pointer Source Index Destination Index Assembly Language 3-18

Arithmetic Logic Unit (ALU) Carry Y= 0? A > B? n bits A B n bits Y Signal F control which function will be conducted by ALU. Signal F is generated according to the current instruction. Basic arithmetic operations: addition, subtraction, Basic logic operations: and, or, xor, shifting, F Assembly Language 3-19 F Y 0 0 0 A + B 0 0 1 A - B 0 1 0 A - 1 0 1 1 A and B 1 0 0 A or B 1 0 1 not A 15 Flag Register Flag register contains information reflecting the current status of a microprocessor. It also contains information which controls the operation of the microprocessor. OF DF IF TF SF ZF AF PF CF 0 Control Flags Status Flags IF: DF: TF: Interrupt enable flag Direction flag Trap flag CF: PF: AF: ZF: SF: OF: Carry flag Parity flag Auxiliary carry flag Zero flag Sign flag Overflow flag Assembly Language 3-20

Instruction Machine Codes Instruction machine codes are binary numbers For Example: 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 MOV AL, BL MOV Machine code structure Register mode Opcode Mode Operand1 Operand2 Some instructions do not have operands, or have only one operand Opcode tells what operation is to be performed. (EU control logic generates ALU control signals according to Opcode) Mode indicates the type of a instruction: Register type, or Memory type Operands tell what data should be used in the operation. Operands can be addresses telling where to get data (or where to store results) Assembly Language 3-21 EU Operation 1. Fetch an instruction from instruction queue 2. According to the instruction, EU control logic generates control signals. (This process is also referred to as instruction decoding) 3. Depending on the control signal, EU performs one of the following operations: An arithmetic operation A logic operation Storing a datum into a register Moving a datum from a register Changing flag register AH BH CH DH ALU SP BP SI DI Flag register AL BL CL DL General purpose register ALU Data bus (16 bits) EU control instruction 1011000101001010 Assembly Language 3-22

Generating Memory Addresses How can a 16-bit microprocessor generate 20-bit memory addresses? Left shift 4 bits FFFFF 16-bit register 0000 Addr1 + 0FFFF + 16-bit register Offset Addr1 Offset Segment (64K) 20-bit memory address Segment address 00000 Intel 80x86 memory address generation 1M memory space Assembly Language 3-23 Code, Data, Stack A program constantly references all three regions Therefore, the program constantly references bytes in three different segments For now let s assume that each region is fully contained in a single segment, which is in fact not always the case CS: points to the beginning of the code segment DS: points to the beginning of the data segment SS: points to the beginning of the stack segment code data stack address space Assembly Language 3-24

Memory Segmentation A segment is a 64KB block of memory starting from any 16-byte boundary For example: 00000, 00010, 00020, 20000, 8CE90, and E0840 are all valid segment addresses The requirement of starting from 16-byte boundary is due to the 4-bit left shifting Segment registers in BIU 15 CS 0 Code Segment DS Data Segment SS Stack Segment ES Extra Segment Assembly Language 3-25 Memory Address Calculation Segment addresses must be stored in segment registers Offset is derived from the combination of pointer registers, the Instruction Pointer (IP), and immediate values Examples + Segment address 0000 Offset Memory address CS IP + Instruction address 3 4 8 A 0 4 2 1 4 3 8 A B 4 SS SP + Stack address 5 0 0 0 0 F F E 0 5 F F E 0 DS DI + Data address 1 2 3 4 0 0 0 2 2 1 2 3 6 2 Assembly Language 3-26

Where to fetch the next instruction? Fetching Instructions 8088 Memory CS IP 1 2 3 4 0 0 1 2 1 2 3 5 2 12352 MOV AL, 0 Update IP After an instruction is fetched, Register IP is updated as follows: IP = IP + Length of the fetched instruction For Example: the length of MOV AL, 0 is 2 bytes. After fetching this instruction, the IP is updated to 0014 Assembly Language 3-27 Accessing Data Memory There is a number of methods to generate the memory address when accessing data memory. These methods are referred to as Addressing Modes Examples: Direct addressing: MOV AL, [0300H] DS Memory address 1 2 3 4 0 0 3 0 0 1 2 6 4 0 (assume DS=1234H) Register indirect addressing: MOV AL, [SI] DS Memory address 1 2 3 4 0 0 3 1 0 1 2 6 5 0 (assume DS=1234H) (assume SI=0310H) Assembly Language 3-28

In-class Exercise Consider the byte at address 13DDE within a 64K segment defined by selector value 10DE. What is its offset? Assembly Language 3-29 In-class Exercise Consider the byte at address 13DFE within 64K segment defined by selector value 10DE. What is its offset? 13DDE = 10DE * 16 10 + offset offset = 13DFE - 10DE0 offset = 301E (a 16-bit quantity) Assembly Language 3-30

Address Computation Example Consider the whole 1MB address space Say that we want a 64K segment whose end is 8K from the end of the address space The address at the end of the address space is FFFFF 8K in binary is 1000000000000, that is 01000 in hex So the address right after the end of the segment is FFFFF - 01000 + 1 = FEFFF + 1 = FF000 The length of the segment is 64K 64K in binary is 1000000000000000, that is 08000 So the address at the beginning of the segment is FF000-08000 = F7000 So the value to store in a segment register is F700 To reference the 43th byte in the segment, one must store 002A (= 42 10 ) in an index register The address of that byte is: F7000 + 002A = F702A The address of the last byte in the segment is: F7000 + 07FFF = FEFFF Which is right before FF000, the beginning of the last 8K of the address space Assembly Language 3-31 Instructions Format and Compilation Assembly Language 3-32

Developing software for the personal computer.asm file ;NUMOFF.ASM: Turn NUM-LOCK indicator off. ; All characters following a ; till the line end are comments, ignored by the assembler.model SMALL.STACK Assembler reserved words.code.startup MOV AX,40H ;set AX to 0040H MOV DS,AX ;load data segment with 0040H MOV SI,17H ;load SI with 0017H AND BYTE PTR [SI],0DFH ;clear NUM-LOCK bit.exit END Assembly language instructions Assembly Language 3-33 Developing software for the personal computer.asm file ;NUMOFF.ASM: Turn NUM-LOCK indicator off. ;.MODEL SMALL Register pair (16 bit) (destination of MOV ).STACK Hexadecimal value to be loaded (source for MOV ).CODE Data Segment register pair Prepare the Data Segment.STARTUP MOV AX,40H ;set AX to 0040H MOV DS,AX Source Index ;load data segment with 0040H MOV SI,17H ;load SI with 0017H AND BYTE PTR [SI],0DFH ;clear NUM-LOCK bit.exit END specified by DS and SI together. The complete address of the byte containing NumLock bit is specified. Second operand for logical AND (immediate hexadecimal value) First operand and destination for ANDing with DFH=1101.1111B, logical AND Memory address Assembly Language only b5 (bit 5) of specified memory 3-34 location is affected (reset to 0)

1.7 Developing software for the personal computer.lst file Memory location addresses Machine language codes generated by the assembler ;NUMOFF.ASM: Turn NUM-LOCK indicator off. ;.MODEL SMALL.STACK 0000.CODE.STARTUP 0017 B8 0040 MOV AX,40H ;set AX to 0040H 001A 8E D8 MOV DS,AX ;load data segment with 0040H 001C BE 0017 MOV SI,17H ;load SI with 0017H 001F 80 24 DF AND BYTE PTR [SI],0DFH ;clear NUM-LOCK bit.exit END Assembly Language 3-35 General Format of Instructions Instruction Format Label: Opcode Operands ; Comment Label: It is optional. It provides a symbolic address that can be used in branch instructions Opcode: It specifies the type of instructions Operands: Instructions of 80x86 family can have one, two, or zero operand Comments: Only for programmers reference Machine Code Format Opcode Mode Operand1 Operand2 MOV AL, BL 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 Register MOV mode Assembly Language 3-36

Assembler Directives Source File List File DATA DATA SEGMENT PARA 'DATA ORG 7000H POINTS DB 16 DUP(?) SUM DB? ENDS 0000 DATA SEGMENT PARA 'DATA ORG 7000H 7000 0010 [00] POINTS DB 16 DUP(?) 7010 00 SUM DB? 7011 DATA ENDS CODE SEGMENT PARA 'CODE ASSUME CS:CODE, DS:DATA ORG 8000H TOTAL: MOV AX,7000H MOV DS,AX MOV AL,0 CODE ENDS END TOTAL 0000 CODE SEGMENT PARA 'CODE' ASSUME CS:CODE, DS:DATA ORG 8000H 8000 B8 7000 TOTAL: MOV AX,7000H 8003 8E D8 MOV DS,AX 8005 B0 00 MOV AL,0 Assembly Language 3-37 Assembler Directives SEGMENT directive ENDS directive END directive ORG directive DB: Define Byte; DW,. ASSUME directive Specifies the segment register (segment Register) that will be used to calculate the effective addresses for all labels and variables defined under a given segment or group name (segment Na If CS = 1230H and DS = 5678H, what are the physical memory addresses of label TOTAL and variable SUM? Assembly Language 3-38

Assembler Directives Simplified Segment Directives.MODEL SMALL.DATA ORG 7000H POINTS DB 16 DUP(?) SUM DB?.CODE ORG 8000H TOTAL: MOV AX,7000H MOV DS,AX MOV AL,0 RET END TOTAL Predefined.Mode Types DATA SEGMENT CODE SEGMENT TINY one one SMALL one one MEDIUM one multiple COMPACT multiple one LARGE multiple multiple HUGE multiple multiple FLAT* one one * Flat is used for 32-bit addressing Assembly Language 3-39 Build Executable Programs Source files Assembler library Linker Syntax check Translate source files into machine code OBJ files OBJ files Executable files Question: What is the difference between *.com and *.exe files? http://www.faqs.org/faqs/msdos-programmer-faq/part2/section-9.html Assemblers Microsoft ML, LINK, & DEBUG 8086 Emulator A86 MASM32 package Assembly Language 3-40

Microsoft MASM and Debug Microsoft MASM and Link Programs ML /c /Fl numoff.asm Link numoff Syntax check; Translate assembly instructions into machine codes Build the executable file Microsoft Debug Program C:\> debug - a 0BDF:0100 MOV AX, 40 0BDF:0103 - t AX = 0040 BX = 0000 CX = 0000 DX = 0000 SP =... - q Assembly Language 3-41 8086/8088 Assembler and Emulator Assembly Language 3-42

Difference Between EXE and Binary Files Source File List File.model small.data org 0010H Var1 DB 12H.code MOV AX, 0000 MOV DS, AX label1: MOV AL, DS:[0100H] JMP label1 end.model small 0000.data org 0200H 0200 12 Var1 DB 12H 0000.code 0000 B8 0000 MOV AX, 0000 0003 8E D8 MOV DS, AX 0005 A0 0100 label1: MOV AL, DS:[0100H] 0008 EB FB JMP label1 end Assembly Language 3-43 Difference Between EXE and Binary Files EXE file Binary file Assembly Language 3-44