100% found this document useful (1 vote)
134 views10 pages

Assembly Programs Examples - Assembling Process: Topics To Discuss

This document discusses assembly language programming for the LC-3 computer. It covers two examples assembly programs: one for swapping two numbers, and one for multiplying a number by a constant. It then describes the two-pass assembly process: the first pass constructs a symbol table by finding labels and their addresses, and the second pass converts instructions to machine code using the symbol table. Finally, it discusses the LC-3 assembler and object file format.

Uploaded by

vipulugale
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT or read online on Scribd
100% found this document useful (1 vote)
134 views10 pages

Assembly Programs Examples - Assembling Process: Topics To Discuss

This document discusses assembly language programming for the LC-3 computer. It covers two examples assembly programs: one for swapping two numbers, and one for multiplying a number by a constant. It then describes the two-pass assembly process: the first pass constructs a symbol table by finding labels and their addresses, and the second pass converts instructions to machine code using the symbol table. Finally, it discusses the LC-3 assembler and object file format.

Uploaded by

vipulugale
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT or read online on Scribd

Computer Programming TA C162

Topics to discuss…

•Assembly Programs Examples


•Assembling Process
• First Pass
• Second Pass

1
Computer Programming TA C162

Program for swapping two numbers


.ORIG x3000
LD R1,VAL1 Register Transfer
LD R2,VAL2 R1VAL1
ADD R3,R1,#0
ADD R1,R2,#0 R2VAL2
ADD R2,R3,#0
R3VAL1
HALT
VAL1 .FILL #5
R1VAL2
VAL2 .FILL #7
.END R2R3

2
Computer Programming TA C162

Program to multiply a number by the constant 6


; program for 5x6
.ORIG x3000
LD R1, SIX
LD R2, NUMBER
AND R3, R3, #0 ; Clear R3. It will
; contain the product
; The inner loop
;
AGAIN ADD R3, R3, R2
ADD R1, R1, #-1 ; R1 keeps track of
BRp AGAIN ; the iteration.
;
HALT
;
NUMBER .FILL x0005
SIX .FILL x0006
;
.END
3
Computer Programming TA C162

Assembly Process
Convert assembly language file (.asm)
into an executable file (.obj) for the LC-3 simulator.

4
Computer Programming TA C162

Assembly Process
First Pass:
• Scan program file
• Find all labels and calculate the corresponding addresses;
this is called the symbol table

Second Pass:
• Convert instructions to machine language, using
information from symbol table

5
Computer Programming TA C162

First Pass: Constructing the Symbol Table


• Find the .ORIG statement, which tells us the address of the
first instruction.
• Initialize location counter (LC), which keeps track of the current
instruction.

2. For each non-empty line in the program:


• If line contains a label, add label and LC to symbol table
• Increment LC
– NOTE: If statement is .BLKW or .STRINGZ,
increment LC by the number of words allocated.

• Stop when .END statement is reached.

NOTE: A line that contains only a comment is considered an empty line.

6
Computer Programming TA C162

Symbol Table for Multiplication Program


; Program for 5x6
.ORIG x3000
3000 LD R1, SIX
3001 LD R2, NUMBER
3002 AND R3, R3, #0 ;Clear R3 to store product

; The inner loop


;
3003 AGAIN ADD R3, R3, R2
3004 ADD R1, R1, #-1 ; R1 keeps track of
3005 BRp AGAIN ; the iteration.
;
3006 HALT
; Symbol Address
3007 NUMBER .FILL x0005
3008 SIX .FILL x0006 AGAIN X3003
.END
NUMBER X3007
SIX X3008

7
Computer Programming TA C162

Second Pass: Generating Machine Language


For each executable assembly language statement, generate
the corresponding machine language instruction.
• If operand is a label, look up the address from the symbol
table.
Potential problems:
• Improper number or type of arguments
ex: NOT R1,#7
ADD R1,R2
• Immediate argument too large
ex: ADD R1,R2,#1023
• Address (associated with label) more than 256 from
instruction
Can’t use PC-relative addressing mode
8
Computer Programming TA C162

LC-3 Assembler
Using “assemble” (Unix) or LC3Edit (Windows),
generates several different output files.
This one gets
loaded into the
simulator.

9
Computer Programming TA C162

Object File Format


LC-3 object file contains
• Starting address (location where program must be
loaded), followed by…
• Machine instructions
Example:
• Beginning of “multiply” object file looks like this:
0011000000000000 .ORIG x3000
0010001000000110 LD R1, SIX
0010010000000101 LD R2, NUMBER
.
.
.
10

You might also like