Substansi:
- Mengeluarkan data secara berurutan dengan beberapa varian instruksi geser
- Mengkondisikan accu = 01 --> A = A+A dalam pengulangan
- Menggunakan 4 varian instruksi geser, seperti:

1. SLA (Shift Left Arithmetic)

2. SRA (Shift Right Arithmetic)

3. SRL (Shift Right Logic)

4. RLC (Rotation Left Circular)

CARA 1
Struktur Algoritma
| Isi Accu dengan data kendali port A = B = C = OUT 80h |
|-------------------------------------------------------|
| Keluarkan isi Accu ke Register Control |
| Cycle end less |
| Isi Accu dengan data 01 |
| keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 02 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 04 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 08 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 10 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 20 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 40 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 80 |
| Keluarkan isi Accu ke port A |
| Tunda Waktu |
| Isi Accu dengan data 00 |
| Keluarkan isi Accu ke port A |
| Akhiri program |
Subroutine 1A00
| Isi Pas Register HL = FF FF |
|----------------------------------------------------|
| H = 0 |
| L = 0 |
| Kurangi denga 1 isi Register L |
| Kurangi dengan 1 isi Register H |
| RET UNC |
Struktur Program
| Alamat | Assembly | Mesin |
|------------|---------------|----------|
| 1800 | LDA, 80 | 3E 80 |
| 1802 | OUT (43), A | D3 43 |
| 1804 | NOP | 00 |
| 1805 | LDA, 01 | 3E 01 |
| 1807 | OUT (40), A | D3 40 |
| 1809 | CALL UNC 1A00 | CD 00 1A |
| 180B | LDA, 02 | 3E 02 |
| 180E | OUT (40), A | D3 40 |
| 1810 | CALL UNC 1A00 | CD 00 1A |
| 1812 | LDA, 04 | 3E 04 |
| 1815 | OUT (40), A | D3 40 |
| 1817 | CALL UNC 1A00 | CD 00 1A |
| 1819 | LDA, 08 | 3E 08 |
| 181C | OUT (40), A | D3 40 |
| 181E | CALL UNC 1A00 | CD 00 1A |
| 1820 | LDA, 10 | 3E 10 |
| 1823 | OUT (40), A | D3 40 |
| 1825 | CALL UNC 1A00 | CD 00 1A |
| 1827 | LDA, 20 | 3E 20 |
| 182A | OUT (40), A | D3 40 |
| 182C | CALL UNC 1A00 | CD 00 1A |
| 182D | LDA, 40 | 3E 40 |
| 1831 | OUT (40), A | D3 40 |
| 1833 | CALL UNC 1A00 | CD 00 1A |
| 1835 | LDA, 80 | 3E 80 |
| 1838 | OUT (40), A | D3 40 |
| 183A | JPNC 1804 | C3 04 18 |
| SUBROUTINE | | |
| 1A00 | LDHL, FF FF | 21 FF FF |
| 1A03 | NOP | 00 |
| 1A04 | NOP | 00 |
| 1A05 | DEC L | 2D |
| 1A06 | JPNZ 1A04 | C2 04 18 |
| 1A09 | DEC H | 25 |
| 1A0A | JPNZ 1A03 | C2 03 18 |
| 1A0D | RET UNC | C9 |
CARA 2
Struktur Algoritma
| Isi Accu dengan data kendali port A |
|------------------------------------------------|
| Keluarkan isi Accu ke Register Control |
| Cycle end less |
| A = 01 |
| B = 08 |
| B = 0 |
| OUT (40) A |
| Tunda Waktu |
| A = A+A = SLA |
| DEC B |
Subroutine 1A00
| Isi Pas Register HL = FF FF |
|----------------------------------------------------|
| H = 0 |
| L = 0 |
| Kurangi denga 1 isi Register L |
| Kurangi dengan 1 isi Register H |
| RET UNC |
Struktur Program
| Alamat | Assembly | Mesin |
|------------|---------------|----------|
| 1800 | LDA, 80 | 3E 80 |
| 1802 | OUT (43), A | D3 43 |
| 1804 | NOP | 00 |
| 1805 | LDA, 01 | 3E 01 |
| 1807 | LDB, 07 | 06 07 |
| 1809 | NOP | 00 |
| 180A | OUT (40), A | D3 40 |
| 180C | CALL UNC 1A00 | CD 00 1A |
| 180F | ADD A | 87 |
| 1810 | DEC B | 05 |
| 1811 | JPNZ 1809 | C2 09 18 |
| 1814 | JPUNC 1804 | C3 04 18 |
| SUBROUTINE | | |
| 1A00 | LDHL, FF FF | 21 FF FF |
| 1A 03 | NOP | 00 |
| 1A 04 | NOP | 00 |
| 1A05 | DEC L | 2D |
| 1A06 | JPNZ 1A04 | C2 04 18 |
| 1A09 | DEC H | 25 |
| 1A0A | JPNZ 1A03 | C2 03 18 |
| 1A0D | RET UNC | C9 |
Semoga bermanfaat & selamat belajar!