Little Man Computer Task 2x

Download Report

Transcript Little Man Computer Task 2x

Program to multiply 2 numbers
500
291
500
292
193
391
293
192
499
292
801
905
193
600
700
-
Input x
Store acc. as x
Input y
Store acc. as y
Load y in to acc. (0 on 1st parse)
Add x to acc. value
Store acc. as z
Load y in to acc.
Minus one from acc.
Store acc. as y
Skip next if acc. is zero
Jump to instruction 5
Load z in to acc.
Output acc.
Halt
1xx
2xx
3xx
4xx
500
600
700
800
801
802
9xx
Load
Store
Add
Subtract
Input
Output
Halt
Skip If Negative
Skip If Zero
Skip If Positive
Jump
Choose one program
Little Man Computer Really Tricky Task
Write a program to divide two numbers.
Write the program in word, or on paper before using the LMC
program.
The program should output the quotient, and then the
remainder.
e.g. for the calculation 10/3 the program would output 3 and 1.
If you finish the program this lesson, use the LMC program to
help you answer the exam question on the last slide of this file.
The addition method
take the divisor and add it to itself.
update a counter.
Check if it equals the number that is being divided.
If not, do the same addition, and update your counter again.
keep going till you see that the sum is equal to or greater than the
number that is to be divided.
Then the value of your counter is the quotient.
To get the remainder, (divisor - (final sum - divident))
for example. take 10/3
3 + 3 = 6 counter = 1
6 + 3 = 9 counter = 2
9 + 3 = 12 counter = 3 (now 12 > 10 hence quotient = counter = 3)
remainder = 3 - (12 - 10) = 1
The addition method
take 22/5
5 + 5 = 10 counter = 1
10 + 5 = 15 counter = 2
15 + 5 = 20 counter = 3
20 + 5 = 25 counter = 4
(now 25 > 22 hence quotient = counter = 4)
remainder = 5 - (25 - 22) = 2
The subtraction method
take the divident and subtract the divisor from it.
update a counter.
Check if it equals the number that is being divided.
If not, do the same addition, and update your counter again. keep
going till you see that the sum is equal to or greater than the number
that is to be divided.
Then the value of your counter is the quotient.
To get the remainder, (divisor - (final sum - divident))
for example. take 10/3
10 - 3 = 7 counter = 1
7 - 3 = 4 counter = 2
4 - 3 = 1 counter = 3 (now 1 < 3 hence quotient = counter = 3)
remainder = final value = 1
The subtraction method
take 22/5
22 - 5 = 17 counter = 1
17 - 5 = 12 counter = 2
12 - 5 = 7 counter = 3
7 - 5 = 2 counter = 4
(now 4 < 5 hence quotient = counter = 4)
remainder = final value = 2
Registers
•
Different CPU designs have different numbers and types of registers. The following four types of
registers, however, are found in all designs:
•
PC, the program counter. The PC tells the CPU which memory location contains the next instruction
to be executed. Typically, the PC is incremented by 1 so that it points to the next instruction in
memory. But branch instructions can set the PC to another value.
–
•
IR, the instruction register. This register is important because it holds the instruction that is
currently being executed.
–
•
In the LMC, the "instruction register" is shown as the Instruction Display. To visualize the LMC operation, we
can picture the Little Man holding the instruction written on a slip of paper he has taken from a mailbox,
and reading what needs to be done.
MAR, the memory address register. This register tells the CPU which location in memory is to be
accessed.
–
•
In the LMC, the "program counter" is represented as the Location Counter.
The MAR is not shown in the LMC.
MDR, the memory data register. This register holds the data being put into or taken out of the
memory location identified by the MAR. It is sometimes called the memory buffer register, or MBR.
Exam Question