-
Notifications
You must be signed in to change notification settings - Fork 2
Sample programs
Pavel Dovgalyuk edited this page Mar 12, 2018
·
57 revisions
; A, B, or C contain successive elements of the sequence ORG 0 MOVI B, 1 ; 00: 1000 0001 0000 0001 (8101h) Label: ADD C, B, A ; 01: 0100 1010 0001 1000 (4B18h) MOV A, B ; 02: 0001 1000 0001 0000 (1810h) MOV B, C ; 03: 0001 1001 0010 0000 (1920h) JMP Label ; 04: 1000 0111 0000 0001 (8701h)
https://www.youtube.com/watch?v=P9jCTSYUaJ8
; A, B - operands, A - result ORG 0 MOVI A, op1 ; 00: 10000000 iiiiiiii MOVI B, op2 ; 01: 10000001 iiiiiiii LOOP: OR F, A, A ; 02: 01101000 00000000 JMP Z, END ; 03: 10010111 00001100 OR F, B, B ; 04: 01101000 00010001 JMP Z, END ; 05: 10010111 00001100 SUB F, A, B ; 06: 01011000 00000001 JMP C, L1 ; 07: 10110111 00001010 SUB A, A, B ; 08: 01011000 00001001 JMP LOOP ; 09: 10000111 00000010 L1: SUB B, B, A ; 0A: 01011001 00011000 JMP LOOP ; 0B: 10000111 00000010 END: ADD A, A, B ; 0C: 01001000 00001001 HALT ; 0D: 00010000 00000000
https://www.youtube.com/watch?v=RIoIWR7b1Ps
TODO
; C, D - operands, pair AB - result MOVI C, op1 MOVI D, op2 MOVI A, 0 MOVI B, 0 MOVI M, 0 Loop: SHR C, C JMP NC, Next ADD A, A, D ADC B, B, M Next: ADD D, D, D ADC M, M, M OR C, C, C JMP NZ,Loop HALT
; C, D - operands, A - result MOVI C, op1 ; 00: 10000010 iiiiiiii MOVI D, op2 ; 01: 10000011 iiiiiiii MOVI A, 0 ; 02: 10000000 00000000 Loop: SHR C, C ; 03: 01111010 -0101100 JMP NC, Next ; 04: 11000111 00000110 ADD A, A, D ; 05: 01001000 00001011 Next: ADD D, D, D ; 06: 01001011 00111011 OR F, C, C ; 07: 01101000 00100010 JMP NZ,Loop ; 08: 11100111 00000011 HALT ; 09: 00010000 00000000
https://www.youtube.com/watch?v=hHF_ab6-ruQ
; D, E - operands, D - result, A - remainder MOVI D, op1 ; 00: MOVI E, op2 ; 01: MOVI A, 0 ; 02: MOVI C, 0 ; 03: MOVI B, 8 ; 04: LOOP: SHR C, C ; 05: ADC D, D, D ; 06: ADC A, A, A ; 07: SUB F, A, E ; 08: ADC C, C, 0 ; 09: XOR C, C, 1 ; 0a: JMP Z, NEXT ; 0b: SUB A, A, E ; 0c: NEXT: SUB B, B, 1 ; 0d: JMP NZ, LOOP ; 0e: SHR C, C ; 0f: ADC D, D, D ; 10: HALT ; 11:
Program tries to guess the number (1..100) by showing the guesses in A register and halting. User must set 'guess' field to non-zero if A is greater than the number and press Start button to continue.
MOVI B, 1 ; 00: MOVI C, 101 ; 01: LOOP: ADD A, B, C ; 02: SHR A, A ; 03: HALT ; 04: MOVI D, guess ; 05: OR F, D, D ; 06: JNZ GREATER ; 07: MOV B, A ; 08: JMP LOOP ; 09: GREATER: MOV C, A ; 0a: JMP LOOP ; 0b: