0% found this document useful (0 votes)
613 views

MARIE Assembly Language Programming Lab Report

The document is a lab report for an assembly language programming course. It includes references and background information on the MARIE assembly language. It then summarizes two chapters: Chapter 1 describes a MARIE program for unsigned integer multiplication with comments explaining the code. Chapter 2 involves transforming part of the multiplication program into Register Transfer Notation (RTN) to describe the machine structure and function.

Uploaded by

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

MARIE Assembly Language Programming Lab Report

The document is a lab report for an assembly language programming course. It includes references and background information on the MARIE assembly language. It then summarizes two chapters: Chapter 1 describes a MARIE program for unsigned integer multiplication with comments explaining the code. Chapter 2 involves transforming part of the multiplication program into Register Transfer Notation (RTN) to describe the machine structure and function.

Uploaded by

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

Andre Fathallah Yousiff

430185500

MARIE Assembly Language Programming


Lab report
References
http://www.cse.yorku.ca/~jeff/notes/compiler/Marie/DocumentationFromW
eb/2.2.pdf
http://mrajababu.com/?
q=system/files/08.Introduction2DataPathImplementation.pdf
http://mirkwood.cs.edinboro.edu/~bennett/wombat/manual/node7.html
http://samples.jbpub.com/9781449600068/00068_CH04_Null3e.pdf

Background Information
MARIE has a simple and powerful instruction set. Each instruction for
MARIE has 16 bits. The bits 12-15 are the most significant because they
make up the opcode that determines the instruction to be executed. The
other 12 bits (0-11) make an address. The table below showcases MARIEs
instruction set.

RTN (Register Transfer Notation) is a means of describing machine


structure and function. It can be used to describe what a machine does
without describing how the machine does it. Register names such as IR,
PC, MAR, MBR and AC are used to represent the registers.
Summary Chapter 1
The first exercise of the lab involved writing a MARIE assembly program to
implement unsigned integer multiplication. Below is the program which is
explained in the comments.
/Program Start
Start,
Load
Subt
Skipcond
Jump

Num2
Count
800
Inver2

Andre Fathallah Yousiff


Store
Jump

430185500
Iter
S1P

/Remove negative sign function


Inver2,
Load
Invert
Subt
Num2
Add
One
Store
Iter
Jump
S1P
/Loop Function
S1P,
Load
Iter
Subt
Count
Skipcond
400
Jump
LoopS1
Jump
RCheck
/and + if ++ or --)
/Multiplication Function
LoopS1,
Load
Result
/number of times
Add
Num1
Store
Result
Load
Count
Add
One
Store
Count
Jump
S1P

/Finds correct result (- if / +- or -+,

/Loads num1 and adds nunm1: num2


/Saves num1
/Adds 1
/Loops again

/Checks if result needs to be inverted function


RCheck,
Load
Num1
/Check if Num1 is possitive
Subt
Count
Skipcond
000
Jump
Check2
/Check if Num2 is positive if
/Num1 > 0
Load
Num2
/If Num1 < 0, Check Num2 is positive
Subt
Count
Skipcond
000
Halt
/Num1 < 0, Num2 > 0, no need to
invert /result as we get negative value we want because -num1 + -num1 =
negative /(true because -n * +n = -n^2)
Jump
InvRes
/Num1 and Num2 < 0, so need to
/invert result as -n * -n = +n^2
/Checks if result needs
Check2,
Load
Subt
Skipcond
Halt
invert /result
Jump
to /invert result as +n
/negative number
/Invert Result function
InvRes,
Load
Subt
Add
Store
Halt
/Variables

to be inverted function (cont)


Num2
/Loads num2 for negative check
Count
000
/Num1 and Num2 > 0, no need to
InvRes
/Num1 > 0, Num2 < 0, so need
+ +n = + however Num2 is negative, so we want a

Invert
Result
One
Result

Andre Fathallah Yousiff

430185500

Num1,
Num2,
Result,
Count,

Dec
Dec
Dec
Dec

65000
4
0
0

/Number 1 to multiply
/Number 2 to multiply
/Result to store
/Keeps track of ammount of iterate times

One,

Dec

/Holds number 1

Invert,

Dec

65535 /To invert number

Iter,

Dec

/Itererator

Temp,

Dec

/Holds a temporary value

Summary Chapter 2
Exercise two of the lab involved transforming the Program below to RTN.

MAR Num2
MBR M[MAR]
AC MBR

/Load Num2

MAR Count
MBR M[MAR]
AC AC MBR

/Subt Count

/Skipcond 400
If IR[11-10] = 01 then
If AC = 0 then PC PC + 1
PC LoopS1

/Jump LoopS1
/Halt

MAR Result
MBR M[MAR]
AC MBR

/Load Result

Andre Fathallah Yousiff


MAR Num1
MBR M[MAR]
AC AC + MBR

430185500

/Add Num1

/Store Result
MAR Result, MBR AC
M[MAR] MBR
MAR Count
MBR M[MAR]
AC MBR

/Load Count

MAR One
MBR M[MAR]
AC AC + MBR

/Add One

/Store Count
MAR Count, MBR AC
M[MAR] MBR
PC S1P

/Jump S1P

You might also like