-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimpleLoopsAndConditions.X68
62 lines (51 loc) · 1.41 KB
/
SimpleLoopsAndConditions.X68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
* Written by: AbdulMuaz Aqeel (Software and Hardware Developer)
* Social : https://www.facebook.com/AbdulMuaz.Aqeel.SSP
*
* HAVE FUN :)
*
START:
* PC [PROGRAM COUNTER], MEMORY START ADDRESS
ORG $0000
MOVE #1,D2
* PRINTING 'INPUT STRING'
MOVE #14,D0
LEA USR_IN,A1
TRAP #15
* GETTING INTEGER FROM USER INPUT
MOVE #4,D0
TRAP #15
* MOVING THE VALUE TO OTHER REGISTER & INCREMENT IT BY ONE
MOVE D1,D3
ADD #1,D3
* (Optional Statment) JUMP TO LOOP FOR COUNTING...
JMP LOOP
LOOP:
* SUBTRACT BY ONE, UNTIL N OF NUMBERS REACH 0
SUB D2,D3
MOVE D3,D1
* CHECK IF WE REACH 0 OR NO, IF YES: JUMP TO [EXIT_LOOP], NO: KEEP..
BEQ EXIT_LOOP
* PRINTING STRING & VALUE
MOVE #17,D0
LEA CURNT_VAL,A1
TRAP #15
* JUST KEEP LOOP UNTIL [EXIT_LOOP] OR Z = 0
BRA LOOP
EXIT_LOOP:
* PRINTS 'DONE' CONST WHEN Z = 0
MOVE #13,D0
LEA DONE,A1
TRAP #15
SIMHALT * HALTING THE PROGRAM.
* CONSTANTS
DONE DC.B CR,LF,'Done',0
CURNT_VAL DC.B CR,LF,'Value is: ',0
USR_IN DC.B 'KeyBoard Input [(0-9)*] : ',0
* DIFINITIONS
CR EQU $0D
LF EQU $0A
END START
*~Font name~Courier New~
*~Font size~10~
*~Tab type~1~
*~Tab size~4~