Design and Construction of a PC-Based Stack Machine Simulator for Undergraduate Computer Science & Engineering Courses

Size: px
Start display at page:

Download "Design and Construction of a PC-Based Stack Machine Simulator for Undergraduate Computer Science & Engineering Courses"

Transcription

1 Design and Construction of a PC-Based Stack Machine Simulator for Undergraduate Computer Science & Engineering Courses Fitratullah Khan and Sohail Anwar Department of Computer Science The University of Texas at Brownsville Brownsville, Texas Abstract - A senior level compiler design course in an undergraduate computer science and engineering program usually deals with teaching the students the basics of compiler construction. A thorough understanding of the grammar of a formal language and a compiler designed for it can only be truly obtained by writing a working compiler for the language. A semester long feat of constructing the lexical, syntactic, semantic, and code generation phases of a compiler exposes the students to the inner workings of the compiler. The final phase of testing the integrity and effectiveness of the constructed compiler is both important and rewarding for a student. Furthermore, since the impetus of such an undergraduate course is to deal with the issues of compiler construction rather than intricacies of different machines, it is instructive to generate the code for a simple stack machine, incorporating a hardware stack, rather than dealing with a register-based machine such as a microcomputer. However, the educational institutions have the latter as a well established computing platform. Therefore, for testing a constructed compiler for a stack machine, it is feasible to make a microcomputer-based stack machine simulator. This paper presents the working design of a PC-based stack machine simulator developed by the authors for use in an undergraduate computer science and engineering course in compiler design. This paper begins by putting forward the architecture of the virtual stack machine for which the simulator is designed and constructed. The stack machine s instruction set is explained and then followed by a discussion of its encoding scheme. The main data structures and the different stages of the simulator are elaborated upon, culminating in a description of the salient features of the simulator that make it an effective tool in a compiler construction course. This includes the simulator s different analytical features such as measuring space-time complexity to analyze the effectiveness of a compiled code. top of the stack. The instructions pop operands from the stack and push results back on to the stack. The stack machine designed by the authors consists of a code segment, a stack segment, an Arithmetic Logic Unit (ALU), and four address registers. The code segment has the program to be executed. The stack segment holds the intermediate data and addresses generated during program execution. A portion of the stack is set aside to store global data as well. The four address registers are pointers into the code and stack segments: Instruction Pointer (IP) points to the next instruction to be executed, Stack Pointer (SP) points to the valid item on top of the stack, Local Scope Pointer (LSP) points to the local data declared within a procedure and the parameters passed to the procedure, and Parent Scope Pointer (PSP) points to the data defined in the outer static scope. Each of the segments is 64KWords, where a word is 16 bits. Hence, each segment is 64K deep and 16-bit wide, and the addresses of the locations within a segment range from The Architecture of the Virtual Stack Machine The stack machine simulator presented in this paper is a Virtual Stack Machine (VSM) running on a Personal Computer (PC). Typically, a VSM has a program memory and a data stack [1]. The program instructions reside in the program memory, and the data that the instructions operate on are available from the Figure 1 Architecture of the VSM

2 0000H (Hexadecimal) to FFFFH. Each register is 16-bit wide It is important to note that LSP points to the local scope to address any location within the 64K range of a segment. and can be pushed on the stack to create a dynamic link among Figure 1 shows the architecture of the VSM. Note that all the stack frames of the procedures called dynamically [5]. In address and data paths are 16-bit wide. The instruction pointer Figure 2, this chain of dynamic links is depicted by the saved points within the code segment. Similarly, the stack and scope old value of LSP on top of the return address. This is typically pointers only point to locations within the stack segment. The done by pushing LSP before setting LSP to point to the local globally defined data are also made to reside within the stack scope of the procedure. segment rather than having a segment of their own. This Note that the memory of the VSM is a word addressable design approach provides a set of simple data structures upon rather than a byte addressable memory. All operations and which to build the stack machine simulator. instructions are in units of words. In case of an Input/Output The stack grows from high memory to low memory as is (I/O) operation involving characters, the least significant byte the case in Intel X86 architecture [2]. The stack pointer points contains the character, whereas the most significant byte has to the valid item on top of the stack. Hence, a push operation zeros. Besides providing simplicity and uniformity, this first decrements the stack pointer by 1 and then the specified approach provides 64KWords of memory rather than 64KBytes operand is pushed on to the stack. The pop operation first pops with 16-bit pointers. the contents of the location pointed by the stack pointer and then increments the stack pointer by 1. The global data are stored in the high memory region in Instruction Set of the Virtual Stack Machine the stack segment starting from FFFFH. The normal stack Generally, an assembly language program for a stack machine starts where the global variables end. PSP points to the last is comprised of arithmetic, logical, input/output, control, stack location containing a global variable, thereby demarcating the altering, and assembler directive instructions. Table I two regions, global data and normal stack. summarizes the complete instruction set of the designed VSM. Figure 2 shows a snapshot of the stack illustrating the Note that the assembler directives are not part of the machine s functions of SP, LSP, and PSP. The figure shows the possible instruction set. However, these directives are found in an values of the stack after a procedure, with two passed assembly language program written for the VSM. They have parameters and one local variable, is called. The stack frame been included in the table for completeness. or the activation record of the called procedure shown is It is important to note that the result of some binary operations, such as subtraction and division, are sensitive to the order of operands on the stack. The description of such instructions in Table I explicitly names the operands to state the expected order. For example, in case of a division operation the divisor is at the top (lower memory address) of the stack whereas the location below it (higher memory address) has the dividend [5]. Similarly, in case of a subtraction operation, the lower address has the subtrahend and the higher address the minuend. POPI and RTI are dereferencing type of operations in which an operand becomes the address of another operand. This is also called indirect addressing [6]. These operations are mostly required when dealing with arrays and variables passed by reference rather than passed by value [1]. Instruction Encoding Figure 2 A Snapshot of the Stack actually a function of the execution of a set of assembly language instructions either generated by a compiler or directly coded by a programmer [4]. Therefore, it is up to the compiler or the programmer to adhere to the intended use of different registers. For example, LSP can be used to point to global data and PSP to local scope instead, however, that is not the intended use of the registers. The instructions of the VSM are either two words wide or one word wide. The two-word instructions are those that require an address, offset, or an immediate value. Table II shows the machine code for each instruction. Note that the opcode of an instruction always appears as the Least Significant Word (LSW). For a two-word instruction, the Most Significant Word (MSW) contains the address, offset, or an immediate value.

3 Instruction Directives: end exit Arithmetic: add div mlt neg sub Logical: and not or Input/Output: getc geti putc puti Control Flow: call label ret nloc cmp jmp label jlt label jgt label jz label jnz label Stack Operations: push REG * push int push n[reg] pop REG pop n[reg] popi rti xchg mov REG,SP isp n *REG is either LSP or PSP Table I Instruction Set of the Virtual Stack Machine Description (all operands and results are on stack unless otherwise specified) Physical end of the program (not a machine instruction) Halt the execution of the program and exit (not a machine instruction) Pop the top two locations, add, and push the result Pop the dividend and divisor, divide, and push the quotient and then the remainder Pop the multiplicand and multiplier, multiply, and push the result Pop the top location, negate, and push the result Pop subtrahend and minuend, subtract, and push the result Pop the top two locations, perform bitwise AND, and push the result Pop the top location, perform bitwise NOT, and push the result Pop the top two locations, perform bitwise OR, and push the result Get a character byte from the standard input, pad it with zeros on the left, and push it Get a 16-bit integer from the standard input and push it Pop the top location and print the least significant byte as a character on the standard output Pop the top location and print it as a 16-bit integer on the standard output Push the return address and transfer the control to the instruction at address label Pop the return address into IP and increment SP by nloc Without popping stack, subtract the top location from the one below and push the result Unconditionally jump to the instruction at address label Pop the top location and jump to label if the popped location is less than 0 Pop the top location and jump to label if the popped location is greater than 0 Pop the top location and jump to label if the popped location is zero Pop the top location and jump to label if the popped location is not zero Push the value of REG Push a 16-bit integer value Push the contents of the location addressed by n+[reg] Pop the top location into REG Pop the top of stack into the location addressed by n+[reg] Pop the top of stack, point to the location addressed by it, and pop the top into this location Pop the top of stack, point to the location addressed by it, and push the location s contents Exchange the values of the top two locations Set REG to the value of SP Increment SP by n (a negative value of n will decrement it) The execution time of an instruction is evaluated on the basis of its use of the ALU, registers, and the number of times it needs to access the code or stack segment. An ALU operation, code memory access, stack memory access, or a register to register move costs one unit. The fetch and decode phases, being different from the execution phase, of an instruction are not reflected in the execution times given in Table II. The cumulative cost of fetching and decoding an instruction is considered to be one clock unit by the simulator. Furthermore, the evaluation of an effective address, such as n[lsp], is counted as one clock unit. As an example, consider the instruction ADD. It pops two operands (2 clock units), computes the result (1 clock unit), and pushes it on stack (1 clock unit). This costs 4 units. As another example, consider JLT LABEL instruction. The stack is popped (1 clock unit), the ALU is used to check if the

4 Table II Instruction Format, Encoding, and Execution Time Instruction Code Clock Code Clock Instruction MSW LSW Units MSW LSW Units add 0001H 4 jz label label 0053H 2 or 3 div 0002H 5 jnz label label 0054H 2 or 3 mlt 0003H 4 push LSP 0060H 1 neg 0004H 3 push PSP 0061H 1 sub 0005H 4 push int int 0062H 2 and 0010H 4 push n[lsp] n 0063H 4 or 0011H 4 push n[psp] n 0064H 4 not 0012H 3 pop LSP 0065H 1 getc 0020H 2 pop PSP 0066H 1 geti 0021H 2 pop n[lsp] n 0067H 4 putc 0022H 2 pop n[psp] n 0068H 4 puti 0023H 2 popi 0069H 3 call label label 0030H 2 rti 0070H 3 ret nloc nloc 0031H 2 xchg 0071H 4 cmp 0040H 4 mov LSP,SP 0080H 1 jmp label label 0050H 1 mov PSP,SP 0081H 1 jlt label label 0051H * 2 or 3 isp n n 0082H 2 jgt label label 0052H 2 or 3 *The cost is 3 units if the jump is made, otherwise, the cost is 2 units popped value is less than 0 (1 clock unit), and the jump-address converted into an equivalent assembly language program, is fetched from the code segment in case the value is less than rather than a machine language code, for the target machine. 0 (1 clock unit). If the jump is made, the cost is 3 units, The assembly code acts as an intermediate language which is otherwise, the cost is 2 units [7]. more instructive than its machine code counterpart [9]. The simulator has a built-in assembler to facilitate the execution of The VSM Simulator this assembly code. The simulator also accepts the machine code directly so that the students can learn encoding of The simulator for the virtual stack machine is written in the C instructions. The simulator parses the machine code for programming language. As documented earlier, the stack machine consists of code and data segments, each 64K deep and 16-bit wide, four 16-bit registers, and an ALU. The code and stack segments are represented by arrays of unsigned integers with indices ranging from 0000H to FFFFH. The four registers are declared as 16-bit unsigned integers to cover the full range of the segments [8]. A program is assembled as it is loaded into the code syntactic errors before loading it in the code segment of the VSM for execution. Figure 3 depicts the different stages of the simulator before a code segment is accepted for execution. The simulator shows the process of execution graphically by charting out the code and stack segments and the four address registers on screen, and displaying their current values as the instructions are executed one by one. Break-points can be set and the execution can be carried out in single-step mode segment for execution. All references are resolved at the load to facilitate debugging. There are several built-in counters time, thereby relieving the simulator of expensive symbol table referencing during run time. In a typical undergraduate compiler design course a student is made to build a working compiler by constructing lexical, syntax, semantics, and code generation phases. The code generation phase usually is required to be written in a manner such that the source program being compiled is in the simulator that keep track of important statistics for the code being executed. Students can use these statistics to compare different compiled codes and, hence, measure the performance of their compilers. These statistics also can be used to run a benchmark program to fine tune a compiler. Table III documents the statistics available to the user of the simulator for analysis purposes.

5 Figure 3 Passage of Code through Different Stages of the VSM Simulator Table III Performance Statistics Generated by the Simulator Size (Words) # of Data References # of Code References Execution Time (Clock Units) Code Global One-word instructions Overall Global data Local Two-word instructions Average per call Maximum stack growth Average global per stack Individual instructions Categories of Instructions Average stack frame Average local per stack Conclusions students and colleagues for useful feedback, encouragement, and support for the work in this paper. In a typical undergraduate compiler design course in computer science and engineering curricula, a student is familiarized with Selected References the theory and practice of compiler design via assigning projects leading to a working compiler. Since the emphasis of 1) Aho, A., Sethi, R., Ullman, J., Compilers: Principles, the course is to learn compiler design rather than deal with Techniques, and Tools, Addison-Wesley Publishing idiosyncracies of the architecture of a machine, it is instructive Company, to design a compiler for a simple stack machine. The absence 2) K. Irvine, Assembly Language for the IBM-PC, Prenticeof a physical stack machine in today s PC world necessitates Hall, Inc., construction of a virtual stack machine simulator for testing the 3) Y. Yu and C. Marut, Assembly Language Programming compilers built for it. This paper presented the design and and Organization of the IBM PC, Mitchell McGrawconstruction of such a virtual stack machine simulator and Hill, described its use in an undergraduate compiler design course. 4) J. Bennet, Introduction to Compiling Techniques: A First In doing so, the architecture of the virtual stack machine was Course Using ANSI C, LEX and YACC, McGraw-Hill detailed along with its instruction set, instruction format, Book Company, Inc., encoding scheme, and execution times. The last part of the 5) V. Hamacher, Z. Vranesic, and S. Zaki, Computer paper describes the function and interface of the simulator from Organization, McGraw-Hill Book Company, Inc., the user perspective. The interactive graphical user interface 6) J. Tremblay and P. Sorenson, The Theory and Practice of and the statistics generated by the simulator, make it an Compiler Writing, McGraw-Hill Book Company, Inc., effective tool for analyzing compiled codes and, hence, measuring the performance of different compilers. Acknowledgments The author gratefully acknowledges his experience as a student at The University of Kansas, Lawrence, where he took a compiler construction course which inspired the work presented in this paper. The authors greatly appreciate their 7) J. Uffenbeck, Microcomputers and Microprocessors: The 8080, 8085, and Z-80 Programming, interfacing, and Troubleshooting, Prentice-Hall, Inc., ) M. Waite, S. Prata, and D. Martin, C Primer Plus, Howard W. Sams & Co., Inc., ) R. Hunter, The Design and Construction of Compilers, John Wiley & Sons, 1981.

It is possible to define a number using a character or multiple numbers (see instruction DB) by using a string.

It is possible to define a number using a character or multiple numbers (see instruction DB) by using a string. 1 od 5 17. 12. 2017 23:53 (https://github.com/schweigi/assembler-simulator) Introduction This simulator provides a simplified assembler syntax (based on NASM (http://www.nasm.us)) and is simulating a x86

More information

Practical Malware Analysis

Practical Malware Analysis Practical Malware Analysis Ch 4: A Crash Course in x86 Disassembly Revised 1-16-7 Basic Techniques Basic static analysis Looks at malware from the outside Basic dynamic analysis Only shows you how the

More information

Contents 8051 Instruction Set BY D. BALAKRISHNA, Research Assistant, IIIT-H Chapter I : Control Transfer Instructions Lesson (a): Loop Lesson (b): Jump (i) Conditional Lesson (c): Lesson (d): Lesson (e):

More information

Computer Organization CS 206 T Lec# 2: Instruction Sets

Computer Organization CS 206 T Lec# 2: Instruction Sets Computer Organization CS 206 T Lec# 2: Instruction Sets Topics What is an instruction set Elements of instruction Instruction Format Instruction types Types of operations Types of operand Addressing mode

More information

Tutorial 1: Programming Model 1

Tutorial 1: Programming Model 1 Tutorial 1: Programming Model 1 Introduction Objectives At the end of this lab you should be able to: Use the CPU simulator to create basic CPU instructions Use the simulator to execute the basic CPU instructions

More information

8051 Overview and Instruction Set

8051 Overview and Instruction Set 8051 Overview and Instruction Set Curtis A. Nelson Engr 355 1 Microprocessors vs. Microcontrollers Microprocessors are single-chip CPUs used in microcomputers Microcontrollers and microprocessors are different

More information

3.0 Instruction Set. 3.1 Overview

3.0 Instruction Set. 3.1 Overview 3.0 Instruction Set 3.1 Overview There are 16 different P8 instructions. Research on instruction set usage was the basis for instruction selection. Each instruction has at least two addressing modes, with

More information

Basic Assembly SYSC-3006

Basic Assembly SYSC-3006 Basic Assembly Program Development Problem: convert ideas into executing program (binary image in memory) Program Development Process: tools to provide people-friendly way to do it. Tool chain: 1. Programming

More information

VARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad

VARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad Introduction to MS-DOS Debugger DEBUG In this laboratory, we will use DEBUG program and learn how to: 1. Examine and modify the contents of the 8086 s internal registers, and dedicated parts of the memory

More information

Summer 2003 Lecture 4 06/14/03

Summer 2003 Lecture 4 06/14/03 Summer 2003 Lecture 4 06/14/03 LDS/LES/LSS General forms: lds reg,mem lseg reg,mem Load far pointer ~~ outside of current segment {E.g., load reg w/value @ mem, & seg w/mem+2 XCHG Exchange values General

More information

SOURCE LANGUAGE DESCRIPTION

SOURCE LANGUAGE DESCRIPTION 1. Simple Integer Language (SIL) SOURCE LANGUAGE DESCRIPTION The language specification given here is informal and gives a lot of flexibility for the designer to write the grammatical specifications to

More information

EEM336 Microprocessors I. Arithmetic and Logic Instructions

EEM336 Microprocessors I. Arithmetic and Logic Instructions EEM336 Microprocessors I Arithmetic and Logic Instructions Introduction We examine the arithmetic and logic instructions. The arithmetic instructions include addition, subtraction, multiplication, division,

More information

Virtual Machine Tutorial

Virtual Machine Tutorial Virtual Machine Tutorial CSA2201 Compiler Techniques Gordon Mangion Virtual Machine A software implementation of a computing environment in which an operating system or program can be installed and run.

More information

Registers. Registers

Registers. Registers All computers have some registers visible at the ISA level. They are there to control execution of the program hold temporary results visible at the microarchitecture level, such as the Top Of Stack (TOS)

More information

Computer Organization

Computer Organization Computer Organization (Instruction set Architecture & Assembly Language Programming) KR Chowdhary Professor & Head Email: kr.chowdhary@gmail.com webpage: krchowdhary.com Department of Computer Science

More information

Digital System Design Using Verilog. - Processing Unit Design

Digital System Design Using Verilog. - Processing Unit Design Digital System Design Using Verilog - Processing Unit Design 1.1 CPU BASICS A typical CPU has three major components: (1) Register set, (2) Arithmetic logic unit (ALU), and (3) Control unit (CU) The register

More information

Assembly Language Programming of 8085

Assembly Language Programming of 8085 Assembly Language Programming of 8085 Topics 1. Introduction 2. Programming model of 8085 3. Instruction set of 8085 4. Example Programs 5. Addressing modes of 8085 6. Instruction & Data Formats of 8085

More information

Sparse Notes on an MIPS Processor s Architecture and its Assembly Language

Sparse Notes on an MIPS Processor s Architecture and its Assembly Language Sparse Notes on an MIPS Processor s Architecture and its Assembly Language February 6, 2004 1 Introduction In this notes we are not going in details with the architecture of an MIPS processor, but only

More information

ORG ; TWO. Assembly Language Programming

ORG ; TWO. Assembly Language Programming Dec 2 Hex 2 Bin 00000010 ORG ; TWO Assembly Language Programming OBJECTIVES this chapter enables the student to: Explain the difference between Assembly language instructions and pseudo-instructions. Identify

More information

DC57 COMPUTER ORGANIZATION JUNE 2013

DC57 COMPUTER ORGANIZATION JUNE 2013 Q2 (a) How do various factors like Hardware design, Instruction set, Compiler related to the performance of a computer? The most important measure of a computer is how quickly it can execute programs.

More information

We briefly explain an instruction cycle now, before proceeding with the details of addressing modes.

We briefly explain an instruction cycle now, before proceeding with the details of addressing modes. Addressing Modes This is an important feature of computers. We start with the known fact that many instructions have to include addresses; the instructions should be short, but addresses tend to be long.

More information

CNIT 127: Exploit Development. Ch 1: Before you begin. Updated

CNIT 127: Exploit Development. Ch 1: Before you begin. Updated CNIT 127: Exploit Development Ch 1: Before you begin Updated 1-14-16 Basic Concepts Vulnerability A flaw in a system that allows an attacker to do something the designer did not intend, such as Denial

More information

Lecture 8: Addition, Multiplication & Division

Lecture 8: Addition, Multiplication & Division Lecture 8: Addition, Multiplication & Division Today s topics: Signed/Unsigned Addition Multiplication Division 1 Signed / Unsigned The hardware recognizes two formats: unsigned (corresponding to the C

More information

Programming Model 2 A. Introduction

Programming Model 2 A. Introduction Programming Model 2 A. Introduction Objectives At the end of this lab you should be able to: Use direct and indirect addressing modes of accessing data in memory Create an iterative loop of instructions

More information

SOEN228, Winter Revision 1.2 Date: October 25,

SOEN228, Winter Revision 1.2 Date: October 25, SOEN228, Winter 2003 Revision 1.2 Date: October 25, 2003 1 Contents Flags Mnemonics Basic I/O Exercises Overview of sample programs 2 Flag Register The flag register stores the condition flags that retain

More information

Intel 8086: Instruction Set

Intel 8086: Instruction Set IUST-EE (Chapter 6) Intel 8086: Instruction Set 1 Outline Instruction Set Data Transfer Instructions Arithmetic Instructions Bit Manipulation Instructions String Instructions Unconditional Transfer Instruction

More information

UNIT-II. Part-2: CENTRAL PROCESSING UNIT

UNIT-II. Part-2: CENTRAL PROCESSING UNIT Page1 UNIT-II Part-2: CENTRAL PROCESSING UNIT Stack Organization Instruction Formats Addressing Modes Data Transfer And Manipulation Program Control Reduced Instruction Set Computer (RISC) Introduction:

More information

UNIT 1 REFERENCE 1 PREPARED BY S.RAVINDRAKUMAR, LECT/ECE, CHETTINAD COLLEGE OF ENGG AND TECH, KARUR

UNIT 1 REFERENCE 1 PREPARED BY S.RAVINDRAKUMAR, LECT/ECE, CHETTINAD COLLEGE OF ENGG AND TECH, KARUR UNIT 1 REFERENCE 1 PROGRAMMING THE 8085 DEVELOPMENT OF PROGRAM A program is a sequence of instructions written to tell a computer to perform a specific function. The instructions are selected from the

More information

9/25/ Software & Hardware Architecture

9/25/ Software & Hardware Architecture 8086 Software & Hardware Architecture 1 INTRODUCTION It is a multipurpose programmable clock drive register based integrated electronic device, that reads binary instructions from a storage device called

More information

COMPUTER ARITHMETIC (Part 1)

COMPUTER ARITHMETIC (Part 1) Eastern Mediterranean University School of Computing and Technology ITEC255 Computer Organization & Architecture COMPUTER ARITHMETIC (Part 1) Introduction The two principal concerns for computer arithmetic

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 9 Integer Arithmetic and Bit Manipulation April, 2014 1 Assembly Language LAB Bitwise

More information

(2) Explain the addressing mode of OR What do you mean by addressing mode? Explain diff. addressing mode for 8085 with examples.

(2) Explain the addressing mode of OR What do you mean by addressing mode? Explain diff. addressing mode for 8085 with examples. (1) Explain instruction format and Opcode format of 8085 μp with example. OR With help of examples, explain the formation of opcodes of 8085 OR What is an instruction? List type of instruction based on

More information

Summary: Direct Code Generation

Summary: Direct Code Generation Summary: Direct Code Generation 1 Direct Code Generation Code generation involves the generation of the target representation (object code) from the annotated parse tree (or Abstract Syntactic Tree, AST)

More information

MAHALAKSHMI ENGINEERING COLLEGE TIRUCHIRAPALLI

MAHALAKSHMI ENGINEERING COLLEGE TIRUCHIRAPALLI MAHALAKSHMI ENGINEERING COLLEGE TIRUCHIRAPALLI-621213. QUESTION BANK DEPARTMENT: EEE SUB CODE: EE2324 YR/ SEM:III/ VI SUB NAME: MICROPROCESSORS & MICROCONTROLLERS UNIT 2- PROGRAMMING OF 8085 MICROPROCESSORS

More information

231 Spring Final Exam Name:

231 Spring Final Exam Name: 231 Spring 2010 -- Final Exam Name: No calculators. Matching. Indicate the letter of the best description. (1 pt. each) 1. address 2. object code 3. condition code 4. byte 5. ASCII 6. local variable 7..global

More information

Chapter 5: Computer Arithmetic. In this chapter you will learn about:

Chapter 5: Computer Arithmetic. In this chapter you will learn about: Slide 1/29 Learning Objectives In this chapter you will learn about: Reasons for using binary instead of decimal numbers Basic arithmetic operations using binary numbers Addition (+) Subtraction (-) Multiplication

More information

Instruction Sets: Characteristics and Functions Addressing Modes

Instruction Sets: Characteristics and Functions Addressing Modes Instruction Sets: Characteristics and Functions Addressing Modes Chapters 10 and 11, William Stallings Computer Organization and Architecture 7 th Edition What is an Instruction Set? The complete collection

More information

Instruction Set Instruction set of 8085 can be classified in following groups: Data Transfer Instructions These instructions can perform data transfer operations between Registers of 8085 e.g. MOV 8085

More information

Microcomputer Architecture and Programming

Microcomputer Architecture and Programming IUST-EE (Chapter 1) Microcomputer Architecture and Programming 1 Outline Basic Blocks of Microcomputer Typical Microcomputer Architecture The Single-Chip Microprocessor Microprocessor vs. Microcontroller

More information

Project 3 Due October 21, 2015, 11:59:59pm

Project 3 Due October 21, 2015, 11:59:59pm Project 3 Due October 21, 2015, 11:59:59pm 1 Introduction In this project, you will implement RubeVM, a virtual machine for a simple bytecode language. Later in the semester, you will compile Rube (a simplified

More information

Computer Organization & Assembly Language Programming. CSE 2312 Lecture 15 Addressing and Subroutine

Computer Organization & Assembly Language Programming. CSE 2312 Lecture 15 Addressing and Subroutine Computer Organization & Assembly Language Programming CSE 2312 Lecture 15 Addressing and Subroutine 1 Sections in 8088 Code TEXT section, for the processor instructions. DATA section for the initialization

More information

Memory organization Programming model - Program status word - register banks - Addressing modes - instruction set Programming examples.

Memory organization Programming model - Program status word - register banks - Addressing modes - instruction set Programming examples. MICROCONTROLLERS AND APPLICATIONS 1 Module 2 Module-2 Contents: Memory organization Programming model - Program status word - register banks - Addressing modes - instruction set Programming examples. MEMORY

More information

Chapter 10 - Computer Arithmetic

Chapter 10 - Computer Arithmetic Chapter 10 - Computer Arithmetic Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 10 - Computer Arithmetic 1 / 126 1 Motivation 2 Arithmetic and Logic Unit 3 Integer representation

More information

EC 333 Microprocessor and Interfacing Techniques (3+1)

EC 333 Microprocessor and Interfacing Techniques (3+1) EC 333 Microprocessor and Interfacing Techniques (3+1) Lecture 6 8086/88 Microprocessor Programming (Arithmetic Instructions) Dr Hashim Ali Fall 2018 Department of Computer Science and Engineering HITEC

More information

Summer 2003 Lecture 14 07/02/03

Summer 2003 Lecture 14 07/02/03 Summer 2003 Lecture 14 07/02/03 LAB 6 Lab 6 involves interfacing to the IBM PC parallel port Use the material on wwwbeyondlogicorg for reference This lab requires the use of a Digilab board Everyone should

More information

Learning Objectives. Binary over Decimal. In this chapter you will learn about:

Learning Objectives. Binary over Decimal. In this chapter you will learn about: Ref Page Slide 1/29 Learning Objectives In this chapter you will learn about: Reasons for using binary instead of decimal numbers Basic arithmetic operations using binary numbers Addition (+) Subtraction

More information

Architecture & Instruction set of 8085 Microprocessor and 8051 Micro Controller

Architecture & Instruction set of 8085 Microprocessor and 8051 Micro Controller of 8085 microprocessor 8085 is pronounced as "eighty-eighty-five" microprocessor. It is an 8-bit microprocessor designed by Intel in 1977 using NMOS technology. It has the following configuration 8-bit

More information

IBM PC Hardware CPU 8088, Pentium... ALU (Arithmetic and Logic Unit) Registers. CU (Control Unit) IP.

IBM PC Hardware CPU 8088, Pentium... ALU (Arithmetic and Logic Unit) Registers. CU (Control Unit) IP. IBM PC Hardware CPU 8088, 8086 80286 80386 80486 Pentium... ALU (Arithmetic and Logic Unit) Registers CU (Control Unit) IP Memory ROM BIOS I/O RAM OS Programs Video memory BIOS data Interrupt Vectors Memory

More information

STRUCTURE OF DESKTOP COMPUTERS

STRUCTURE OF DESKTOP COMPUTERS Page no: 1 UNIT 1 STRUCTURE OF DESKTOP COMPUTERS The desktop computers are the computers which are usually found on a home or office desk. They consist of processing unit, storage unit, visual display

More information

CS 11 C track: lecture 8

CS 11 C track: lecture 8 CS 11 C track: lecture 8 n Last week: hash tables, C preprocessor n This week: n Other integral types: short, long, unsigned n bitwise operators n switch n "fun" assignment: virtual machine Integral types

More information

Practical Course File For

Practical Course File For Practical Course File For Microprocessor (IT 473) B.Tech (IT) IV-SEM Department of IT University Institute of Engineering & Technology Panjab University, Chandigarh Page 1 INTRODUCTION... 4 EXPERIMENT-1:

More information

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

Microprocessor. By Mrs. R.P.Chaudhari Mrs.P.S.Patil Microprocessor By Mrs. R.P.Chaudhari Mrs.P.S.Patil Chapter 1 Basics of Microprocessor CO-Draw Architecture Of 8085 Salient Features of 8085 It is a 8 bit microprocessor. It is manufactured with N-MOS technology.

More information

BLDEA S V.P. DR. P.G. HALAKATTI COLLEGE OF ENGINEERING & TECHNOLOGY, VIJAYAPURA

BLDEA S V.P. DR. P.G. HALAKATTI COLLEGE OF ENGINEERING & TECHNOLOGY, VIJAYAPURA EXPERIMENT NO.:- 1. BINARY SEARCH Work Space: Register Used Memory Address Data DI 10000H 11H 10001H 11H 10002H 22H 10003H 22H BX 10004H 33H 10005H 33H 10006H 44H 10007H 44H CX 10008H 55H 10009H 55H 24

More information

8085 INSTRUCTION SET INSTRUCTION DETAILS

8085 INSTRUCTION SET INSTRUCTION DETAILS 8085 INSTRUCTION SET INSTRUCTION DETAILS DATA TRANSFER INSTRUCTIONS MOV Rd, Rs Copy from source to destination This instruction copies the contents of the source register Rs into the destination register

More information

UNIT 4. Modular Programming

UNIT 4. Modular Programming 1 UNIT 4. Modular Programming Program is composed from several smaller modules. Modules could be developed by separate teams concurrently. The modules are only assembled producing.obj modules (Object modules).

More information

CS401 Assembly Language Solved MCQS From Midterm Papers

CS401 Assembly Language Solved MCQS From Midterm Papers CS401 Assembly Language Solved MCQS From Midterm Papers May 14,2011 MC100401285 Moaaz.pk@gmail.com MC100401285@gmail.com PSMD01(IEMS) Question No:1 ( Marks: 1 ) - Please choose one The first instruction

More information

A flow chart is a graphical or symbolic representation of a process.

A flow chart is a graphical or symbolic representation of a process. Q1. Define Algorithm with example? Answer:- A sequential solution of any program that written in human language, called algorithm. Algorithm is first step of the solution process, after the analysis of

More information

MIPS Instruction Set

MIPS Instruction Set MIPS Instruction Set Prof. James L. Frankel Harvard University Version of 7:12 PM 3-Apr-2018 Copyright 2018, 2017, 2016, 201 James L. Frankel. All rights reserved. CPU Overview CPU is an acronym for Central

More information

Computer Architecture and System Programming Laboratory. TA Session 3

Computer Architecture and System Programming Laboratory. TA Session 3 Computer Architecture and System Programming Laboratory TA Session 3 Stack - LIFO word-size data structure STACK is temporary storage memory area register points on top of stack (by default, it is highest

More information

1. INTRODUCTION TO MICROPROCESSOR AND MICROCOMPUTER ARCHITECTURE:

1. INTRODUCTION TO MICROPROCESSOR AND MICROCOMPUTER ARCHITECTURE: 1. INTRODUCTION TO MICROPROCESSOR AND MICROCOMPUTER ARCHITECTURE: A microprocessor is a programmable electronics chip that has computing and decision making capabilities similar to central processing unit

More information

CSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs

CSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs CSC 2400: Computer Systems Towards the Hardware: Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32)

More information

An Instruction Stream Compression Technique 1

An Instruction Stream Compression Technique 1 An Instruction Stream Compression Technique 1 Peter L. Bird Trevor N. Mudge EECS Department University of Michigan {pbird,tnm}@eecs.umich.edu Abstract The performance of instruction memory is a critical

More information

INSTRUCTION SET OF 8085

INSTRUCTION SET OF 8085 INSTRUCTION SET OF 8085 Instruction Set of 8085 An instruction is a binary pattern designed inside a microprocessor to perform a specific function. The entire group of instructions that a microprocessor

More information

Assembly Language programming (3)

Assembly Language programming (3) EEE3410 Microcontroller Applications LABORATORY Experiment 3 Assembly Language programming (3) Name Class Date Class No. Marks Conditional Program Branching and Subroutine Call in 8051 Objectives To learn

More information

CHAPTER ASSEMBLY LANGUAGE PROGRAMMING

CHAPTER ASSEMBLY LANGUAGE PROGRAMMING CHAPTER 2 8051 ASSEMBLY LANGUAGE PROGRAMMING Registers Register are used to store information temporarily: A byte of data to be processed An address pointing to the data to be fetched The vast majority

More information

Instruction-set Design Issues: what is the ML instruction format(s) ML instruction Opcode Dest. Operand Source Operand 1...

Instruction-set Design Issues: what is the ML instruction format(s) ML instruction Opcode Dest. Operand Source Operand 1... Instruction-set Design Issues: what is the format(s) Opcode Dest. Operand Source Operand 1... 1) Which instructions to include: How many? Complexity - simple ADD R1, R2, R3 complex e.g., VAX MATCHC substrlength,

More information

Assembly Language Programming of 8085

Assembly Language Programming of 8085 Assembly Language Programming of 8085 1. Introduction A microprocessor executes instructions given by the user Instructions should be in a language known to the microprocessor Microprocessor understands

More information

Today's Topics. CISC 458 Winter J.R. Cordy

Today's Topics. CISC 458 Winter J.R. Cordy Today's Topics Last Time Semantics - the meaning of program structures Stack model of expression evaluation, the Expression Stack (ES) Stack model of automatic storage, the Run Stack (RS) Today Managing

More information

Single-pass Static Semantic Check for Efficient Translation in YAPL

Single-pass Static Semantic Check for Efficient Translation in YAPL Single-pass Static Semantic Check for Efficient Translation in YAPL Zafiris Karaiskos, Panajotis Katsaros and Constantine Lazos Department of Informatics, Aristotle University Thessaloniki, 54124, Greece

More information

CSIS1120A. 10. Instruction Set & Addressing Mode. CSIS1120A 10. Instruction Set & Addressing Mode 1

CSIS1120A. 10. Instruction Set & Addressing Mode. CSIS1120A 10. Instruction Set & Addressing Mode 1 CSIS1120A 10. Instruction Set & Addressing Mode CSIS1120A 10. Instruction Set & Addressing Mode 1 Elements of a Machine Instruction Operation Code specifies the operation to be performed, e.g. ADD, SUB

More information

CPU. Fall 2003 CSE 207 Digital Design Project #4 R0 R1 R2 R3 R4 R5 R6 R7 PC STATUS IR. Control Logic RAM MAR MDR. Internal Processor Bus

CPU. Fall 2003 CSE 207 Digital Design Project #4 R0 R1 R2 R3 R4 R5 R6 R7 PC STATUS IR. Control Logic RAM MAR MDR. Internal Processor Bus http://www.engr.uconn.edu/~barry/cse207/fa03/project4.pdf Page 1 of 16 Fall 2003 CSE 207 Digital Design Project #4 Background Microprocessors are increasingly common in every day devices. Desktop computers

More information

Chapter 7 Central Processor Unit (S08CPUV2)

Chapter 7 Central Processor Unit (S08CPUV2) Chapter 7 Central Processor Unit (S08CPUV2) 7.1 Introduction This section provides summary information about the registers, addressing modes, and instruction set of the CPU of the HCS08 Family. For a more

More information

EXAMPLE PROGRAMS 8085

EXAMPLE PROGRAMS 8085 P! EXAMPLE PROGRAMS 8085 Statement:Multiply the 8-bit unsigned number in memory location 2200H by the 8-bit unsigned number in memory location 2201H. Store the 8 least significant bits of the result in

More information

CPE 323 MSP430 INSTRUCTION SET ARCHITECTURE (ISA)

CPE 323 MSP430 INSTRUCTION SET ARCHITECTURE (ISA) CPE 323 MSP430 INSTRUCTION SET ARCHITECTURE (ISA) Aleksandar Milenković Email: milenka@uah.edu Web: http://www.ece.uah.edu/~milenka Objective Introduce MSP430 Instruction Set Architecture (Class of ISA,

More information

Chapter 3: Addressing Modes

Chapter 3: Addressing Modes Chapter 3: Addressing Modes Chapter 3 Addressing Modes Note: Adapted from (Author Slides) Instructor: Prof. Dr. Khalid A. Darabkh 2 Introduction Efficient software development for the microprocessor requires

More information

Ex: Write a piece of code that transfers a block of 256 bytes stored at locations starting at 34000H to locations starting at 36000H. Ans.

Ex: Write a piece of code that transfers a block of 256 bytes stored at locations starting at 34000H to locations starting at 36000H. Ans. INSTRUCTOR: ABDULMUTTALIB A H ALDOURI Conditional Jump Cond Unsigned Signed = JE : Jump Equal JE : Jump Equal ZF = 1 JZ : Jump Zero JZ : Jump Zero ZF = 1 JNZ : Jump Not Zero JNZ : Jump Not Zero ZF = 0

More information

General issues. Section 9.1. Compiler Construction: Code Generation p. 1/18

General issues. Section 9.1. Compiler Construction: Code Generation p. 1/18 General issues Section 9.1 Target language: absolute machine language all addresses refer to actual addresses program placed in a fixed location in memory relocatable machine language (object modules)

More information

Chapter 2A Instructions: Language of the Computer

Chapter 2A Instructions: Language of the Computer Chapter 2A Instructions: Language of the Computer Copyright 2009 Elsevier, Inc. All rights reserved. Instruction Set The repertoire of instructions of a computer Different computers have different instruction

More information

Low-Level Essentials for Understanding Security Problems Aurélien Francillon

Low-Level Essentials for Understanding Security Problems Aurélien Francillon Low-Level Essentials for Understanding Security Problems Aurélien Francillon francill@eurecom.fr Computer Architecture The modern computer architecture is based on Von Neumann Two main parts: CPU (Central

More information

Computer Logic II CCE 2010

Computer Logic II CCE 2010 Computer Logic II CCE 2010 Dr. Owen Casha Computer Logic II 1 The Processing Unit Computer Logic II 2 The Processing Unit In its simplest form, a computer has one unit that executes program instructions.

More information

1-Operand instruction types 1 INC/ DEC/ NOT/NEG R/M. 2 PUSH/ POP R16/M16/SR/F 2 x ( ) = 74 opcodes 3 MUL/ IMUL/ DIV/ DIV R/M

1-Operand instruction types 1 INC/ DEC/ NOT/NEG R/M. 2 PUSH/ POP R16/M16/SR/F 2 x ( ) = 74 opcodes 3 MUL/ IMUL/ DIV/ DIV R/M Increment R16 1-Operand instruction types 1 INC/ DEC/ NOT/NEG R/M 4 x (16+48) = 256 opcodes 2 PUSH/ POP R16/M16/SR/F 2 x (8+24+4+1) = 74 opcodes 3 MUL/ IMUL/ DIV/ DIV R/M 4 x (16+48) = 256 opcodes INC

More information

CHAPTER 3 JUMP, LOOP, AND CALL INSTRUCTIONS

CHAPTER 3 JUMP, LOOP, AND CALL INSTRUCTIONS CHAPTER 3 JUMP, LOOP, AND CALL INSTRUCTIONS Looping Repeating a sequence of instructions a certain number of times is called a loop Loop action is performed by DJNZ reg, Label The register is decremented

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

Application Software For Learning CPU Process of Interrupt and I/O Operation

Application Software For Learning CPU Process of Interrupt and I/O Operation Application Software For Learning CPU Process of Interrupt and I/O Operation Fransiscus A Halim Computer Engineering Department, Universitas Multimedia Nusantara, Tangerang, Indonesia Received on August

More information

COMPUTER ORGANIZATION & ARCHITECTURE

COMPUTER ORGANIZATION & ARCHITECTURE COMPUTER ORGANIZATION & ARCHITECTURE Instructions Sets Architecture Lesson 5a 1 What are Instruction Sets The complete collection of instructions that are understood by a CPU Can be considered as a functional

More information

Machine and Assembly Language Principles

Machine and Assembly Language Principles Machine and Assembly Language Principles Assembly language instruction is synonymous with a machine instruction. Therefore, need to understand machine instructions and on what they operate - the architecture.

More information

ELEG3924 Microprocessor

ELEG3924 Microprocessor Department of Electrical Engineering University of Arkansas ELEG3924 Microprocessor Ch.3 Jump, Loop, and Call Dr. Jing Yang jingyang@uark.edu 1 OUTLINE Loop and Jump instructions Call instructions Time

More information

Microcontroller Systems

Microcontroller Systems µcontroller systems 1 / 43 Microcontroller Systems Engineering Science 2nd year A2 Lectures Prof David Murray david.murray@eng.ox.ac.uk www.robots.ox.ac.uk/ dwm/courses/2co Michaelmas 2014 µcontroller

More information

Microcontroller. Instruction set of 8051

Microcontroller. Instruction set of 8051 UNIT 2: Addressing Modes and Operations: Introduction, Addressing modes, External data Moves, Code Memory, Read Only Data Moves / Indexed Addressing mode, PUSH and POP Opcodes, Data exchanges, Example

More information

Architecture and components of Computer System Execution of program instructions

Architecture and components of Computer System Execution of program instructions Execution of program instructions Microprocessor realizes each program instruction as the sequence of the following simple steps: 1. fetch next instruction or its part from memory and placing it in the

More information

Computer Architecture /

Computer Architecture / Computer Architecture 02-201 / 02-601 The Conceptual Architecture of a Computer PC CPU register 0 register 1 register 2 registers hold small amounts of data for processing by the CPU Reading / writing

More information

Introduction to Microprocessor

Introduction to Microprocessor Introduction to Microprocessor The microprocessor is a general purpose programmable logic device. It is the brain of the computer and it performs all the computational tasks, calculations data processing

More information

CSE 351 Midterm - Winter 2017

CSE 351 Midterm - Winter 2017 CSE 351 Midterm - Winter 2017 February 08, 2017 Please read through the entire examination first, and make sure you write your name and NetID on all pages! We designed this exam so that it can be completed

More information

361 div.1. Computer Architecture EECS 361 Lecture 7: ALU Design : Division

361 div.1. Computer Architecture EECS 361 Lecture 7: ALU Design : Division 361 div.1 Computer Architecture EECS 361 Lecture 7: ALU Design : Division Outline of Today s Lecture Introduction to Today s Lecture Divide Questions and Administrative Matters Introduction to Single cycle

More information

Microprocessor Micro Syllabus BSc. CSIT, IOST, TU. Microprocessor

Microprocessor Micro Syllabus BSc. CSIT, IOST, TU. Microprocessor Microprocessor Micro Syllabus BSc. CSIT, IOST, TU Microprocessor Course Title: Microprocessor Full Marks: 60 + 20 + 20 Course No: CSC162 Pass Marks: 24 + 8 + 8 Nature of the Course: Theory + Lab Credit

More information

Computer Architecture and Assembly Language. Practical Session 3

Computer Architecture and Assembly Language. Practical Session 3 Computer Architecture and Assembly Language Practical Session 3 Advanced Instructions division DIV r/m - unsigned integer division IDIV r/m - signed integer division Dividend Divisor Quotient Remainder

More information

Introduction to MiniSim A Simple von Neumann Machine

Introduction to MiniSim A Simple von Neumann Machine Math 121: Introduction to Computing Handout #19 Introduction to MiniSim A Simple von Neumann Machine Programming languages like C, C++, Java, or even Karel are called high-level languages because they

More information

Chapter 5: Computer Arithmetic

Chapter 5: Computer Arithmetic Slide 1/29 Learning Objectives Computer Fundamentals: Pradeep K. Sinha & Priti Sinha In this chapter you will learn about: Reasons for using binary instead of decimal numbers Basic arithmetic operations

More information

Instruction-set Design Issues: what is the ML instruction format(s) ML instruction Opcode Dest. Operand Source Operand 1...

Instruction-set Design Issues: what is the ML instruction format(s) ML instruction Opcode Dest. Operand Source Operand 1... Instruction-set Design Issues: what is the format(s) Opcode Dest. Operand Source Operand 1... 1) Which instructions to include: How many? Complexity - simple ADD R1, R2, R3 complex e.g., VAX MATCHC substrlength,

More information

We will first study the basic instructions for doing multiplications and divisions

We will first study the basic instructions for doing multiplications and divisions MULTIPLICATION, DIVISION AND NUMERICAL CONVERSIONS We will first study the basic instructions for doing multiplications and divisions We then use these instructions to 1. Convert a string of ASCII digits

More information