0% found this document useful (0 votes)
120 views14 pages

LC-2 Assembly Language: Introduction To Computing Systems

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
120 views14 pages

LC-2 Assembly Language: Introduction To Computing Systems

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Introduction to Computing Systems

from bits & gates to C & beyond

Chapter 7

LC-2 Assembly Language


It’s hard to write code in 1’s & 0’s!

 Assembly language makes it possible


to write Machine Language code
 each line of assembly language is translated
into a single ML instruction

A program called the Assembler does the


translation and provides useful tools:
 use of labels - symbolic names for address locations
 automatic conversion of binary / hex / decimal
 pseudo-ops

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-2 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
A sample program
01 ;
02 ; Program to multiply an integer by the number 6
03 ;
04 .ORIG x3050
05 LD R1, SIX
06 LD R2, NUMBER
07 AND R3, R3, #0 ; clear R3 to hold the product
08 ;
09 ; The inner loop
0A ;
0B AGAIN ADD R3, R3, R2
0C ADD R1, R1, #-1 ; keep track of iterations
0D BRp AGAIN
0E ;
0F HALT
10 ;
11 NUMBER .BLKW 1
12 SIX .FILL x0006
13 ;
14 .END

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-3 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Assembly Language Instructions
 Formats
 LABEL OPCODE OPERANDS ; COMMENTS
 LABEL PSEUDO-OPS ; COMMENTS

 Opcode
 Symbolic name for the 4-bit ML opcode
 Label
 Symbolic name for a memory location. It is used to:
 indicate the target of a branch instruction, e.g. AGAIN in location 0B
 indicate the location of a stored value or array, e.g. NUMBER and SIX
 Comments
 intended for humans only: explanation of code, visual display

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-4 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Pseudo-Ops …
 … are directives to the assembler
 they are not translated into ML instructions
 LC-3 Pseudo-Ops:
 .ORIG address Tells assembler where to locate the program in
memory (starting address).
 .FILL value Store value in the next location in memory.
 .BLKW n Set aside a block of n words in memory.
 .STRINGZ string Store the string, one character per word, in
memory. Add a word of x0000 after the string.
 .END Marks the end of the source program (not to be
confused with the instruction HALT!)
 .EXTERNAL The label so indicated is allocated in another module.

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-5 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
A partial assembly sample
.ORIG x3000 x3000: AND R1, R1, b0 0000
AND R1, R1, #0 x3001: ADD R1, R1, b0 1010
ADD R1, R1, #10 x3002: LD R2, b0 0000 0010
LD R2, Twenty x3003: LD R3, b0 0000 0100
x3004: TRAP b0010 0101
LD R3, Ess
x3005: b0000 0000 0001 0100 ; x0014
HALT
x3006:
Twenty FILL x0014 x3007:
.BLKW 2 x3008: b0000 0000 0101 0011 ; x0053
Ess .FILL “S” x3009: b0000 0000 0100 1000 ; x0048 = ‘H’
.STRINGZ “Hi” x300A: b0000 0000 0110 1001 ; x0069 = ‘i’
.BLKW 3 x300B: x0000 ; null terminator
.END x300C:
x300D:
x300E:

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-6 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
The Assembly Process
 Objective

 Translate the AL (Assembly Language) program


into ML (Machine Language).
 Each AL instruction yields one ML instruction word.
 Interpret pseudo-ops correctly.

 Problem

 An instruction may reference a label.


 If the label hasn’t been encountered yet, the assembler
can't form the instruction word

 Solution

 Two-pass assembly
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-7 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Two-Pass Assembly - 1

 First Pass - generating the symbol table


 Scan each line
 Keep track of current address
 Increment by 1 for each instruction
 Adjust as required for any pseudo-ops
(e.g. .FILL or .STRINGZ, etc.)
 For each label
 Enter it into the symbol table
 Allocate to it the current address
 Stop when .END is encountered

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-8 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Symbol Table example
;
; Program to multiply a number by six
;
 Using the earlier .ORIG x3050
example: x3050 LD R1, SIX
x3051 LD R2, NUMBER
x3052 AND R3, R3, #0
Symbol Address ;

Again x3053 ; The inner loop


;
Number x3057 x3053 AGAIN ADD R3, R3, R2
x3054 ADD R1, R1, #-1
Six x3058 x3055 BRp AGAIN
;
x3056 HALT
;
x3057 NUMBER .BLKW 1
x3058 SIX .FILL x0006
;
.END

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7-9 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Another example - Parity checking
Parity is a function that returns a 1 when the number of 1s
in a word is odd and 0 when it is even.

.ORIG x3000
3000 AND R2, R2, x0 ; clear R2
3001 LDI R1, Input ; load word into R1
Symbol Address 3002 Count BRz Report ; if 0, done counting
Count x3002 3003 BRp Shift ; if >0, skip ADD
3004 ADD R2, R2, x1 ; increment count
Shift x3005
3005 Shift ADD R1, R1, R1 ; shift left 1 bit
Report x3007 3006 BRnzp Count ; go back up
Input x300A 3007 Report AND R3, R2, x1 ; LSB 1 or 0?
3008 STI R3, Output ; store results
Output x300B 3009 TRAP x25 ; halt program
300A Input .FILL x3200 ; address of input
300B Output .FILL x3201 ; address of output

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7 - 10 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Two-Pass Assembly - 2

 Second Pass - generating the ML program


 Scan each line again
 Translate each AL instruction into ML
 Look up symbols in the symbol table instruction
 Ensure that labels are no more than +256 / -255 lines from
instruction
 Determine operand field for the instruction
 Fill memory locations as directed by pseudo-ops
 Stop when .END is encountered

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7 - 11 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Assembled code

 Using the earlier


example:

Symbol Address x3050 0010 001 0 0000 0111 ; LD R1, SIX


x3051 0010 010 0 0000 0101 ; LD R2, NUMBER
Again x3053 x3052 0101 011 011 1 00000 ; AND R3, R3, #0
Number x3057 x3053 0001 011 011 0 00 010 ; ADD R3, R3, R2
x3054 0001 001 001 1 11111 ; ADD R1, R1, #-1
Six x3058 x3055 0000 001 1 1111 1101 ; BRp AGAIN
x3056 1111 0000 0010 0101 ; HALT
x3057 ; .BLKW 1
x3058 0000 0000 0000 0110 ; .FILL x0006

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7 - 12 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
Object File

 Each source file is translated into an object file


 a list of ML instructions including the symbol table.

 A complete program may include several


source and/or object files:
 Source files written in Assembly by the programmer
 Library files provided by the system (OS or other)
 Compiled HLL libraries

 The object files must be linked


 One object file will be the “main”
 All cross-referenced labels in symbol tables will be resolved

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7 - 13 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside
The end result …

… is the executable image (.exe file)


 this is a file (“image”) of the finalized list of ML instructions,
with all symbolic references resolved

 it is loaded by copying the list into memory, starting at the


address specified in the .ORIG directive

 it is run by copying the starting address to the PC

Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
7 - 14 Slides prepared by Walid A. Najjar & Brian J. Linard, University of California, Riverside

You might also like