Docstoc

05

Document Sample
05 Powered By Docstoc
					Programming in Machine Language
-- Brookshear Machine




SCSC 311
2009 Summer II


                                  1
Index

   Overview
   Bit-wise Logical Operations




                                  2
Brookshear Machine Architecture




                                  3
      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

                                                                       4
     Instruction Format


                               16-bit patterns per
0011      0101   1010   0111   instruction




                                 Hex form
 3         5     A       7


Op-code          Operand


                                                5
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
                                                                         6
    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.



                                                           7
8
      Example: Trace a program by hand

                                      Address   Contents
                                        00        15
                                        01        6c
                                        02        16
                                        03        6d
                                        04        50
                                        05        56
                                        06        30
Trace the following machine             07        6e
instruction by hand and write the       08        c0

results, given the contents of main     09        00

memory as in the table
                                        6a
                                        6b
                                        6c        0b
                                        6d        0c
                                        6e
                                                           9
Index

   Overview
   Bit-wise Logical Operations




                                  10
    Bit-wise Logical Operations

   A byte can be seen as a set of 8
    Boolean variables
       each bit is one variable


   Logical instructions such as AND, OR,
    XOR, etc.
       Aligning the bytes and performing the logical
        operations on the corresponding bits, one
        by one.

                                                    11
Bit-wise Logical Operations
AND                   OR
      1001001              11100001
      1110001              10001100
      1000001              11101101


XOR
        100101001
        111001101
        011100100



                                      12
        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




                                                    13
  Masking Technique 1: Reading

 Readinga 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.
                                         14
    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

                                                        15
    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.

    Q: What bit-mask would you use?
       What Logical operation would you use?




                                                     16
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



                                                        17
     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.


                                            18
    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

                                                          19
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 )




                                                   20
A   0100 0001   a   0110 0001

B   0100 0010   b   0110 0010

C   0100 0011   c   0110 0011

D   0100 0100   d   0110 0100

E   0100 0101   e   0110 0101

F   0100 0110   f   0110 0110

G   0100 0111   g   0110 0111

H   0100 1000   h   0110 1000

I   0100 1001   i   0110 1001

J   0100 1010   j   0110 1010

K   0100 1011   k   0110 1011

L   0100 1100   l   0110 1100

M   0100 1101   m   0110 1101

N   0100 1110   n   0110 1110

O   0100 1111   o   0110 1111

P   0101 0000   p   0111 0000

Q   0101 0001   q   0111 0001

R   0101 0010   r   0111 0010

S   0101 0011   s   0111 0011

T   0101 0100   t   0111 0100

U   0101 0101   u   0111 0101

V   0101 0110   v   0111 0110

W   0101 0111   w   0111 0111

X   0101 1000   x   0111 1000

Y   0101 1001   y   0111 1001
                                21
Z   0101 1010   z   0111 1010
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.




                                                        22
Rotation: right and left   “wrap around”


 Rotate left 1 position    Rotate right 1
     01001010               position
      10010100                 01001010
                                00100101



 Rotate left 1 position    Rotate right 1
   again                     position again
     10010100                 00100101

      00101001                  10010010




                                              23
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


                                                        24
Arithmetic Shift

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

       Arithmetic shift to the right by one
        position
         11001001  10100100




                                               25
Exercise 5: No Shift Instruction?
   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.




                                                     26

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:1
posted:2/1/2013
language:Latin
pages:26
xuxianglp xuxianglp http://
About