1 Programming in Machine Language SCSC 311 Spring 2011.

32
1 Programming in Machine Language SCSC 311 Spring 2011

Transcript of 1 Programming in Machine Language SCSC 311 Spring 2011.

1

Programming in Machine Language

SCSC 311Spring 2011

2

Index

Overview Bit-wise Logical Operations

3

Brookshear Machine Architecture

4

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

5

Instruction Format

0011 0101 1010 011116-bit patterns per instruction

3 5 A 7 Hex form

OperandOp-code

6

0iii - No-operation1RXY - Load register R with contents of location XY2RXY - Load register R with value XY3RXY - Store contents of register R at location XY4iRS - Move contents of register R to register S5RST - Add contents of registers S and T as binary numbers, place

result in register R6RST - Add contents of registers S and T as floating-point numbers,

place result in register R7RST - OR together the contents of registers S and T , place result in

register R8RST - AND together the contents of registers S and T , place result in

register R9RST - XOR together the contents of registers S and T , place result in

register RARiZ - Rotate the contents of register R one bit to the right, Z timesBRXY - Jump to instruction at XY if contents of register R equal

contents of register 0Ciii - HaltDRXY - Jump to instruction at XY if contents of register R are greater

than contents of register 0

R,S,T - Register numbersXY - A one-byte address or data valueZ - A half-byte valuei - Ignored when the instruction is de-coded: usually entered as 0

7

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.

8

9

Example: Trace a program by hand

Trace the following machine instruction by hand and write the results, given the contents of main memory as in the table

Address Contents

00 15

01 6c

02 16

03 6d

04 50

05 56

06 30

07 6e

08 c0

09 00

6a

6b

6c 0b

6d 0c

6e

10

Index

Overview Bit-wise Logical Operations

11

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.

12

Bit-wise Logical Operations

AND OR1001001 111000011110001 100011001000001 11101101

XOR100101001111001101011100100

13

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

14

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.

15

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 bitEven Number Odd Number

100101010 1010100101AND 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

16

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?

17

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

18

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.

19

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

20

Exercise 3: Converting ASCII Case

Task: 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 )

21

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

22

Exercise 4: Combining Nybbles

A Nybble (or, nibble) is a half-byte = 4 bits

Task: You are given two bytes. You must 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.

23

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

24

Shift: right and left

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

25

Arithmetic Shift

A special form of shift, except the sign bit is preserved

Arithmetic shift to the right by one position

11001001 10100100

26

Exercise 5: No Shift Instruction?(bonus)

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.

27

Suppose the cell addresses 08-0F containthe following data:

Address Contents28 2A29 3D2A 142B FF2C F02D F12E F22F F3

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?

Lab 2: Trace a program 1

28

Lab 2: Trace a program 2

Run this program stored in cells 00 through 12 with different value in location 12: 04 02

What does this program do?

Address: contents00: 2001: 0002: 2103: 0104: 2305: 0106: 1207: 1208: B209: 100A: A10B: 070C: 500D: 030E: B00F: 0810: C011: 0012: 03

29

Lab 2: Trace a program 3 (bonus)Address Contents

00 10

01 20

02 11

03 21

04 22

05 00

06 26

07 00

08 23

09 01

0A 40

0B 56

0C 55

0D 61

0E 52

0F 23

10 B2

11 14

12 B0

13 0A

14 35

15 22

16 C0

17 00

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?

30

Lab 3: 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.

31

Lab 3: Combining two 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.

32

Lab 3: Write a BSML Program: ASCII case(bonus)

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