Programming in Machine Language

Slides:



Advertisements
Similar presentations
Chapter 2: Data Manipulation
Advertisements

Machine Instructions Operations
Chapter 2 Data Manipulation Dr. Farzana Rahman Assistant Professor Department of Computer Science James Madison University 1 Some sldes are adapted from.
Machine Instructions Operations 1 ITCS 3181 Logic and Computer Systems 2015 B. Wilkinson Slides4-1.ppt Modification date: March 18, 2015.
 Suppose for a moment that you were asked to perform a task and were given the following list of instructions to perform:
2.3) Example of program execution 1. instruction  B25 8 Op-code B means to change the value of the program counter if the contents of the indicated register.
TK 2633 Microprocessor & Interfacing
Room: E-3-31 Phone: Dr Masri Ayob TK 2123 COMPUTER ORGANISATION & ARCHITECTURE Lecture 5: CPU and Memory.
Room: E-3-31 Phone: Dr Masri Ayob TK 2633 Microprocessor & Interfacing Lecture 1: Introduction to 8085 Assembly Language.
Data Manipulation Computer System consists of the following parts:
CSCE 121, Sec 200, 507, 508 Fall 2010 Prof. Jennifer L. Welch.
1 Lab Session-IV CSIT-120 Spring 2001 Lab 3 Revision and Exercises Rev: Precedence Rules Lab Exercise 4-A Machine Language Programming The “Micro” Machine.
Chapter 2.2 Machine Language.
COMP3221 lec07-numbers-III.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 7: Number Systems - III
Bit Operations C is well suited to system programming because it contains operators that can manipulate data at the bit level –Example: The Internet requires.
A bit can have one of two values: 0 or 1. The C language provides four operators that can be used to perform bitwise operations on the individual bits.
Computer Architecture
Lecture 18 Last Lecture Today’s Topic Instruction formats
CPS120: Introduction to Computer Science
Lecture 11: Machine Processing Intro to IT COSC1078 Introduction to Information Technology Lecture 11 Machine Processing James Harland
1 Programming in Machine Language SCSC 311 Spring 2011.
Computer Systems Organization CS 1428 Foundations of Computer Science.
Data manipulation, Part one Introduction to computer, 2nd semester, 2010/2011 Mr.Nael Aburas Faculty of Information.
ICS312 Set 9 Logic & Shift Instructions. Logic & Shift Instructions Logic and Shift Instructions can be used to change the bit values in an operand. The.
Microprocessor Dr. Rabie A. Ramadan Al-Azhar University Lecture 7.
Dr. José M. Reyes Álamo 1.  Review: ◦ Statement Labels ◦ Unconditional Jumps ◦ Conditional Jumps.
CS 111 – Sept. 15 Chapter 2 – Manipulating data by performing instructions “What is going on in the CPU?” Commitment: –Please read through section 2.3.
EEL 3801C EEL 3801 Part I Computing Basics. EEL 3801C Data Representation Digital computers are binary in nature. They operate only on 0’s and 1’s. Everything.
Computer Architecture and Organization
A summary of TOY. 4 Main Components Data Processor Control Processor Memory Input/Output Device.
CMSC 150 PROGRAM EXECUTION CS 150: Wed 1 Feb 2012.
9/20/6Lecture 2 - Prog Model Architecture, Data Types and Addressing Modes.
CIS 020 Assembly Programming Chapter 11 - Binary Operations Using RX-Format Instructions © John Urrutia 2012, All Rights Reserved.5/27/20121.
Data Manipulation, part two Introduction to computer, 2 nd semester, 2010/2011 Mr.Nael Aburas Faculty of Information.
Computer Science I Storing data. Binary numbers. Classwork/homework: Catch up. Do analysis of image types.
Chapter 7 Bit Manipulation. 7.1 Logical Operations.
1 Sec (2.4) Arithmetic / logic instruction:. 2 Logical operations: Ex: XOR OR AND
27 October 2015 Birkbeck College, U. London1 Introduction to Computer Systems Lecturer: Steve Maybank Department of Computer Science and Information Systems.
Computer and Information Sciences College / Computer Science Department CS 206 D Computer Organization and Assembly Language.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Yaohang Li.
NUMBER SYSTEMS.
Lec 3: Data Representation
Assembly Language Programming of 8085
ECE 3430 – Intro to Microcomputer Systems
Microprocessor Systems Design I
System Programming and administration
Morgan Kaufmann Publishers
5 - How Computers Calculate - the ALU
Overview Register Transfer Language Register Transfer
Microcomputer Programming
A Closer Look at Instruction Set Architectures: Expanding Opcodes
The University of Adelaide, School of Computer Science
The Processor and Machine Language
BEE1244 Digital System and Electronics BEE1244 Digital System and Electronic Chapter 2 Number Systems.
CS149D Elements of Computer Science
CSCE Fall 2013 Prof. Jennifer L. Welch.
Computer Architecture & Operations I
Instruction encoding We’ve already seen some important aspects of processor design. A datapath contains an ALU, registers and memory. Programmers and compilers.
Computer Architecture and the Fetch-Execute Cycle
Shift & Rotate Instructions)
68000 Architecture, Data Types and Addressing Modes
Shift & Rotate Instructions)
CSCE Fall 2012 Prof. Jennifer L. Welch.
A-level Computer Science
Program Execution.
WJEC GCSE Computer Science
Part I Data Representation and 8086 Microprocessors
CS 111 – Sept. 16 Machine language examples Instruction execution
Presentation transcript:

Programming in Machine Language CSCI 311 Dr. Frank Li

Index Overview Bit-wise Logical Operations

Brookshear Machine Architecture

Brookshear Machine Architecture 16 general-purpose registers numbered 0 through 15 Hex notation: numbered 0 through F 256 byte-size main memory cells (i.e., 8 bits each) numbered 0 through 255 Hex notation: numbered 00 through FF 12 simple instructions encoded using 16 bits (2 bytes) per instruction Hex notation: 4 hex digits per instruction One hex digit for op-code Other three hex digits for Operands

Instruction Format 3 5 A 7 0011 Op-code 16-bit patterns per instruction 0011 0101 1010 0111 Hex form 3 5 A 7 Operand Op-code

1RXY - Load register R with contents of location XY 0iii - No-operation 1RXY - Load register R with contents of location XY 2RXY - Load register R with value XY 3RXY - Store contents of register R at location XY 4iRS - Move contents of register R to register S 5RST - Add contents of registers S and T as binary numbers, place result in register R 6RST - Add contents of registers S and T as floating-point numbers, place result in register R 7RST - OR together the contents of registers S and T , place result in register R 8RST - AND together the contents of registers S and T , place result in register R 9RST - XOR together the contents of registers S and T , place result in register R ARiZ - Rotate the contents of register R one bit to the right, Z times BRXY - Jump to instruction at XY if contents of register R equal contents of register 0 Ciii - Halt DRXY - Jump to instruction at XY if contents of register R are greater than contents of register 0 R,S,T - Register numbers XY - A one-byte address or data value Z - A half-byte value i - Ignored when the instruction is de-coded: usually entered as 0

GUI: three major sections the PC registers contain working data values as well as the Program Counter the Memory contains hexadecimal encoded instructions and data; the Run controls on the bottom, control the start, stop and speed of the simulation as well as allowing the user to reset the PC registers and Program Counter.

Example: Trace a program by hand Address Contents 00 15 01 6c 02 16 03 6d 04 50 05 56 06 30 07 6e 08 c0 09 6a 6b 0b 0c Trace the following machine instruction by hand and write the results, given the contents of main memory as in the table 17

Index Overview Bit-wise Logical Operations

Bit-wise Logical Operations A byte can be seen as a set of 8 Boolean variables each bit is one variable Logical instructions like AND, OR, XOR, etc. performed by aligning the bytes and performing the logical operations on the corresponding bits, one by one.

Bit-wise Logical Operations AND OR 1001001 11100001 1110001 10001100 1000001 11101101 XOR 100101001 111001101 011100100

Masking Goal: To test the individual pattern of bits in a given string of bits The sequence of bits that are used to examine a particular bit is known as the mask Using Mask, along with the appropriate logical operation, a programmer can determine the values of individual bits in a byte

Masking Technique 1: Reading Reading a bit in a bit string is done by masking away the bits we are not interested in: AND operator along with a bit mask of 1 in the position we want to read leave the interesting bit and mask away the others Example: Suppose you want to determine if a number is odd or even.

Example The low-order bit (rightmost binary digit) is 1 in an odd number and 0 in an even number. A mask of …0001 with AND operator will test the last bit Even Number Odd Number 100101010 1010100101 AND 000000001 AND 0000000001 000000000 0000000001 By examining the result of the masking operation, you can determine the number as odd or even: If the result is 0, it is even

Exercise 1 Suppose you have an 8-bit string (a byte) that is in 2’s complement notation, sitting in a memory cell. You want to determine if it represents a positive or negative number. What bit-mask would you use? What Logical operation would you use?

Masking Technique 2: Setting Setting (set to 1) a bit in a bit string is done by an OR operation with 1 in the position we want to set to 1, 0 in the other positions leaving the other bits unchanged. Example: Suppose you want to set the high-order bit to a 1 in a given bit string 00100110 OR 10000000 10100110

Exercise 2 Suppose you want to set the 2nd bit from left in a given bit string to 1. What is the bit mask you would use? and what is the operation to achieve the result? i.e., given the bit string 10000010, we want the result to be 11000010.

Masking Technique 3: Re-Setting Re-Setting (set to 0) a bit in a bit string AND with 0 in the bit position that needs resetting 1 in the other positions in order not to change the other bits Example: Suppose you want to reset the high-order bit to a 0 in a given bit string 10100110 AND 01111111 00100110

Converting ASCII Case Develop a mask and select operator to convert uppercase ASCII characters to lowercase, e.g. “A” to “a”, “B” to “b”, etc. Product: Mask and operator. (See ASCII code at next page )

A 0100 0001 B 0100 0010 C 0100 0011 D 0100 0100 E 0100 0101 F 0100 0110 G 0100 0111 H 0100 1000 I 0100 1001 J 0100 1010 K 0100 1011 L 0100 1100 M 0100 1101 N 0100 1110 O 0100 1111 P 0101 0000 Q 0101 0001 R 0101 0010 S 0101 0011 T 0101 0100 U 0101 0101 V 0101 0110 W 0101 0111 X 0101 1000 Y 0101 1001 Z 0101 1010 a 0110 0001 b 0110 0010 c 0110 0011 d 0110 0100 e 0110 0101 f 0110 0110 g 0110 0111 h 0110 1000 i 0110 1001 j 0110 1010 k 0110 1011 l 0110 1100 m 0110 1101 n 0110 1110 o 0110 1111 p 0111 0000 q 0111 0001 r 0111 0010 s 0111 0011 t 0111 0100 u 0111 0101 v 0111 0110 w 0111 0111 x 0111 1000 y 0111 1001 z 0111 1010

Exercise 3: Converting ASCII Case Task: Write a program to convert uppercase to lowercase for an ASCII character stored in a memory location 30

Combining Nybbles A Nybble (or, nibble) is a half-byte = 4 bits given two bytes, create a third byte that combines the first half of the 1st byte (4 bits) with the last half of the 2nd byte (4 bits). For example, given 01101001 and 11100111, the answer would be 01100111. Devise a sequence of logical operations using bit masks to do this.

Exercise 4: Combining Nybbles Task: Develop a machine language program to combine two nybbles. combines the first half of the 1st byte (4 bits) with the last half of the 2nd byte (4 bits). The given two bytes are stored in locations 20 and 21, and the result byte should be stored in location 22.

Rotation: right and left “wrap around” Rotate left 1 position 01001010 10010100 Rotate left 1 position again 10010100 00101001 Rotate right 1 position 01001010 00100101 Rotate right 1 position again 00100101 10010010

Shift: right and left Shift right 1 position Shift left 1 position Shifting is similar to rotation, except the bits “fall off the end” instead of “wrap around”… and you “fill in” the gap with 0. Shift right 1 position 11001010  01100101 Shift right 1 position again 01100101  00110010 Shift left 1 position 11001010  10010100 Shift left 1 position again 10010100  00101000

Arithmetic Shift A special form of shift, except the sign bit is preserved Arithmetic shift to the right by one position 11001001  10100100

Exercise 5: No Shift Instruction? Make one The Brookshear machine does not have a SHIFT instruction, although there is a ROTATE How can a SHIFT be accomplished in the Brookshear machine? Demonstrate your answer with two examples.

Exercise 6: Trace a program Trace the following instructions and explain what the program does. 00 1128 02 1229 04 132A 06 5412 08 5443 0A 342A 0C 4043 0E 9413 10 342B 12 C000 What are the contents of cells 2A and 2B when program halts? Suppose the cell addresses 08-0F contain the following data: Address Contents 28 2A 29 3D 2A 14 2B FF 2C F0 2D F1 2E F2 2F F3

Exercise 7: Trace a program Address: contents 00: 20 01: 00 02: 21 03: 01 04: 23 05: 01 06: 12 07: 12 08: B2 09: 10 0A: A1 0B: 07 0C: 50 0D: 03 0E: B0 0F: 08 10: C0 11: 00 12: 03 Run this program stored in cells 00 through 12 with different value in location 12: 04 02 What does this program do? LOAD R0 00 LOAD R1 01 LOAD R3 01 LOADI R2 [12] JUMP R2 [10] //if R2 == R0 (is 0) jump to [10] (is halt) ROR R1 07 // R1 become 02 ADD R0 R0, R3 //R0 become 01

Exercise 8: Trace a program Address Contents 00 10 01 20 02 11 03 21 04 22 05 06 26 07 08 23 09 0A 40 0B 56 0C 55 0D 61 0E 52 0F B2 14 12 B0 13 35 15 16 C0 17 Address Contents 20 03 21 02 22 00 Try the following values in cells 20 and 21. In each case, write down the contents of cell 22 when the program completes execution. Case 1: cell 20 contains 04 and cell 21 contains 02 Case 2: cell 20 contains 05 and cell 21 contains 02 What does this program do? 1020 1121 2200 2600 2301 4056 5561 5223 B214 B00A 3522 C000 0000 0302 ------ 06 08 0a

Exercise 9: adding three numbers Task: Write a program to add three numbers together. The numbers are stored at memory cell locations 10, 11, and 12. The result should be stored at location 13. 1010 1111 5001 1112 3013 c000 0000 0102 0300