LM3000 Hi-Low Program

From BenningtonWiki

Jump to: navigation, search

R0 = Lower Limit

R1 = Upper Limit

R2 = Range

R3 = Counter

00  MOV  R0 #0
01  MOV  R1 #100


02  MOV  R3 #0


03  MOV  A  R1
04  MOV  B  R0
05  SUB  R2

06  MOV  A  R2
07  MOV  B  2
08  SUB  R2

09  MOV  A  R3
10  MOV  B  1
11  ADD  R3

12  MOV  A  R2
13  MOV  B  0
14  CMP
15  BNMZ 06			Sorry Joe, don’t know the abbreviation.

16  MOV  A  R0
17  MOV  B  R3
18  ADD  R3


19  BRA 19			Wait for response: If “GUESS HIGHER,”
					Set program counter to: 15

					If “GUESS LOWER,”
					Set program counter to: 19

20  MOV  A  R0			GUESS HIGHER
21  MOV  B  R3
22  ADD  R0
23  BRA  02


24  MOV  A  R1			GUESS LOWER
25  MOV  B  R3
26  SUB  R1
27  BRA  02

Note: I haven't tested this out yet on paper, but it seems to me that the BNMZ seems to not work for odd numbers. Instead, I might have to use a CMP R2 to zero, and also CMP R2 to one, and create two a different branch if it equals one. - Reid

Personal tools