LM3000 Hi-Low Program
From BenningtonWiki
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
