----------------Микрокоды инструкций 4-Bit-CPU --------------------------- (порядок байт для генератора последовательностей в Electronics Workbenchs) ROM 1 0 -----0----FETCH FFFF FF7F FFBF FFFF -----1----LIT FDFF FFDF FFFF FDFF -----2----LOAD FBFF FFDF FFFF FBFF -----3----STORE FFFF FFFD FFFF FFFF -----4----INC FFFF FFEF FFFF FFFF -----5----DEC FFFF FFF7 FFFF FFFF -----6----REG FFFF FFFB FFFF FFFF -----7----CMPL FDFF FFFE FFFF FDFF -----8----CMPR FBFF FFFE FFFF FBFF -----9----RST FFFF EFFF FFFF FFFF -----A----JUMPL FFFF 7FFF EFFF FFFF -----B----JUMPE FFFF BFFF EFFF FFFF -----C----JUMPG FFFF DFFF EFFF FFFF -----D----IN FEFF FFDF FFFF FEFF -----E----OUT FBFF F7FF FFFF FBFF -----F----NOP FFFF FFFF FFFF FFFF --------- Test Programm 1 --------------------------------------------------------------------------- Numonic Address Data Instruction Comments --------------------------------------------------------------------------- Runs in segement zero. LIT 0 0000 0000 0000 0001 Put 0 in the accumulator. REG 0000 0001 0000 0110 Select register A. LOAD 0000 0010 0000 0010 Load value into accumulator from register A. OUT 0000 0011 0000 1110 Send accumulator value to output. INC 0000 0100 0000 0100 Increment accumulator. STORE 0000 0101 0000 0011 Store accumulator back to register A. RST 0000 0110 0000 1001 Restart program counter. --------------------------------------------------------------------------- Адреса регистра формируются следующим образом: Четырехбитовое слово: RRWW WW - Write address. RR - Read address. 00 - Register A 01 - Register B 10 - Register C 11 - Register D --------------------------------------------------------------------------- Программа набирается микрокомандами из списка, каждая инструкция предва- ряется FETCH, в Аккумулятор - читать только '0' (не запрограммировано ПЗУ) условные переходы в модели не реализованы, последней инструкцией должна быть 'RST', оганичения на размер программы - 16 байт (сегмент) отсутству- ют, т.к. в модели не реализовано переключение сегментов. --------------------------------------------------------------------------- Test Programm 2 --------------------------------------------------------------------------- LIT 0 ; Put 0 in the accumulator. INC ; 1 in the accumulator. INC ; 2 in the accumulator. INC ; 3 in the accumulator. REG ; Select register D for Write. IN ; Read Port into the accumulator. STORE ; Store accumulator to register D. LIT 0 ; Put 0 in the accumulator. DEC ; A = 1111 - prepare register D. REG ; Select register D for Read. LOAD ; Load value into accumulator from register D. OUT ; Send accumulator value to output. LIT 0 ; Put 0 in the accumulator. REG ; Select register A. LOAD ; Load value into accumulator from register A. OUT ; Send accumulator value to output. INC ; Increment accumulator. STORE ; Store accumulator back to register A. RST ; Restart program counter. ---------------------------------------------------------------------------