16
Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/ Hal 11-1 MODUL KE 11 Sistem Mikroprosesor (3 sks) MATERI KULIAH : Perancangan program sederhana untuk sistem mikroprosesor dalam bahasa rakitan (assembly) untuk menjumlahkan/mengurangkan dua bilangan heksa pada dua lokasi berbeda, menjumlahkan/mengurangkan lebih dari dua bilangan heksa pada beberapa lokasi alamat berbeda, serta program sederhana (penjumlahan dan pengurangan) sebagai pengantar program menggunakan looping. POKOK BAHASAN : Desain Program Sederhana untuk Sistem Mikroprosesor dalam Bahasa Rakitan (Assembly) Oleh Ir. INDRAGUNG PRIYAMBODO, MT. 11.1 PROGRAM UNTUK PENJUMLAHAN/PENGURANGAN DUA BILANGAN HEKSA PADA DUA LOKASI BERBEDA Misalnya untuk menjumlahkan bilangan heksadesimal yang disimpan di dua lokasi/alamat yang berbeda. Sebagai contoh : LATIHAN 11.1 Program sistem mikroprosesor (dalam bahasa rakitan/assembly) untuk menjumlahkan dua bilangan heksadesimal yang masing-masing berada di alamat 50H dan alamat 51H, kemudian hasil penjumlahannya disimpan di alamat 52H. Atau dapat juga dengan kalimat, untuk menjumlahkan isi dari alamat 50H dan 51H, kemudian hasilnya disimpan di alamat 52H, serta diasumsikan bahwa hasil penjumlahannya tidak menghasilkan carry. SOLUSI : Persoalan tersebut dapat ditulis secara sederhana seperti berikut ini. (50H) + (51H) 52H 11

MODUL KULIAH KE 9 - supardiwayan.files.wordpress.com · MATERI KULIAH : Perancangan program sederhana untuk sistem mikroprosesor dalam bahasa rakitan ... Program tersebut walaupun

  • Upload
    duongtu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-1

MODUL KE 11

Sistem Mikroprosesor (3 sks)

MATERI KULIAH :

Perancangan program sederhana untuk sistem mikroprosesor dalam bahasa rakitan (assembly) untuk menjumlahkan/mengurangkan dua bilangan heksa pada dua lokasi berbeda, menjumlahkan/mengurangkan lebih dari dua bilangan heksa pada beberapa lokasi alamat berbeda, serta program sederhana (penjumlahan dan pengurangan) sebagai pengantar program menggunakan looping.

POKOK BAHASAN :

Desain Program Sederhana

untuk Sistem Mikroprosesor dalam

Bahasa Rakitan (Assembly)

Oleh Ir. INDRAGUNG PRIYAMBODO, MT.

11.1 PROGRAM UNTUK PENJUMLAHAN/PENGURANGAN DUA

BILANGAN HEKSA PADA DUA LOKASI BERBEDA

Misalnya untuk menjumlahkan bilangan heksadesimal yang disimpan di dua lokasi/alamat yang berbeda.

Sebagai contoh :

LATIHAN 11.1

Program sistem mikroprosesor (dalam bahasa rakitan/assembly) untuk menjumlahkan dua bilangan heksadesimal yang masing-masing berada di alamat 50H dan alamat 51H, kemudian hasil penjumlahannya disimpan di alamat 52H.

Atau dapat juga dengan kalimat, untuk menjumlahkan isi dari alamat 50H dan 51H, kemudian hasilnya disimpan di alamat 52H, serta diasumsikan bahwa hasil penjumlahannya tidak menghasilkan carry.

SOLUSI :

Persoalan tersebut dapat ditulis secara sederhana seperti berikut ini.

(50H) + (51H) 52H

11

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-2

Untuk tahap awal, langkah-langkah penyelesaiannya seperti berikut ini.

1. Masukkan isi alamat 50H ke Accumulator (Register A)

2. Amankan data di Acc. (isi alamat 50H) ke Register B

3. Masukkan data berikutnya (isi alamat 51H) ke Accumulator (ke Reg. A)

4. Jumlahkan data di Acc. (A) = (50H) dengan data di Reg. B (= isi alamat 51H), dan hasilnya langsung disimpan di Acc. (A).

5. Pindahkan/Copykan data di Acc (A) ke alamat 52H.

Dengan demikian programnya seperti berikut ini.

ALTERNATIF 11.1.1

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

3

1

3

1

3

1

3A

47

3A

80

32

76

LDA

MOV

LDA

ADD

STA

HLT

50H

B, A

51H

B

52H

(50H) A ; Jadi (A) = (50H)

(A) B ; Jadi (B) = (50H), diamankan

(51H) A ; Jadi (A) = (51H)

(A) + (B) A ; (A) = (50H) + (51H)

(A) 52H ; (52H) = (A) = (50H)+(51H)

Stop program ini

12 Byte membutuhkan 12 lokasi untuk program, misalnya dari 00 H s/d 0B H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

0A

0B

LDA

MOV

LDA

ADD

STA

HLT

50H

B, A

51H

B

52H

3A

50

00

47

3A

51

00

80

32

52

00

76

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-3

ALTERNATIF 11.1.2

Alternatif lainnya adalah menggunakan LXI, dan selanjutnya isi dari HL dinaikkan terus. Cara ini terlihat diawalnya lebih sulit, tetapi untuk penjumlahan berulang-ulang menjadi jauh lebih mudah dan dapat diarahkan ke bentuk looping.

Berikut ini adalah alternatif 11.1.2

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

3

1

1

1

1

1

1

21

7E

23

86

23

77

76

LXI

MOV

INX

ADD

INX

MOV

HLT

H, 50H

A, M

H

M

H

M, A

50H HL ; Jadi (HL) = 0050 H = M

(M=(HL)=50H) A ; (A) = (M) = (50H)

(HL) + 1 HL ; (HL) = 0051 H = M

(A)+(M=51H) A; ( A)=(50H)+(51H)

(HL) + 1 HL ; (HL) = 0052 H = M

(A)M=52H; (52H)=(A)=(50H)+(51H)

Stop program ini

9 Byte membutuhkan 9 lokasi untuk program, misalnya dari 00 H s/d 08 H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti

berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

LXI

MOV

INX

ADD

INX

MOV

HLT

H, 50H

A, M

H

M

H

M, A

21

50

00

7E

23

86

23

77

76

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-4

ALTERNATIF 11.1.3

Alternatif ini sama dengan alternatif 11.1.2, tetapi saat memindahkan/meng-copykan data dari Accumulator ke alamat 52H, langsung mengggunakan STA 52H.

Berikut ini adalah alternatif 11.1.3

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

3

1

1

1

3

1

21

7E

23

86

32

76

LXI

MOV

INX

ADD

STA

HLT

H, 50H

A, M

H

M

52H

50H HL ; Jadi (HL) = 0050 H = M

(M=(HL)=50H) A ; (A) = (M) = (50H)

(HL) + 1 HL ; (HL) = 0051 H = M

(A)+(M=51H) A; ( A)=(50H)+(51H)

(A)52H; (52H)=(A)=(50H)+(51H)

Stop program ini

10 Byte membutuhkan 10 lokasi untuk program, misalnya dari 00 H s/d 09 H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

LXI

MOV

INX

ADD

STA

HLT

H, 50H

A, M

H

M

52H

21

50

00

7E

23

86

32

50

00

76

Ternyata walaupun kesan pertamanya program tersebut lebih pendek, ternyata tidak demikian, justru tetap lebih panjang, dan lebih lama eksekusinya.

LATIHAN SOAL

S.13.1.1 Desainlah program sistem mikroprosesor menggunakan bahasa

rakitan/assembly untuk mengurangkan dua bilangan heksadesimal yang berada di lokasi alamat 51H dengan bilangan di lokasi 52H, kemudian hasilnya disimpan di alamat di alamat 53 H, serta diasumsikan bahwa hasilnya tidak negatif.

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-5

11.2 PROGRAM UNTUK PENJUMLAHAN/PENGURANGAN LEBIH

DARI DUA BILANGAN HEKSA DI BEBERAPA LOKASI BERBEDA

Misalnya untuk menjumlahkan bilangan heksadesimal yang disimpan di lima lokasi/alamat yang berbeda.

Sebagai contoh :

LATIHAN 11.2.

Program sistem mikroprosesor (dalam bahasa rakitan/assembly) untuk menjumlahkan lima bilangan heksadesimal yang masing-masing berada di alamat 41H s/d 45H, kemudian hasil penjumlahannya disimpan di alamat 46H.

Atau dapat juga dengan kalimat, untuk menjumlahkan isi dari alamat 41H dan 45H, kemudian hasilnya disimpan di alamat 46H, serta diasumsikan bahwa hasil penjumlahannya tidak menghasilkan carry.

SOLUSI :

Persoalan tersebut dapat ditulis secara sederhana seperti berikut ini.

(41H) + (42H) + (43H) + (44H) + (45H) 46H

Dengan demikian programnya seperti berikut ini.

ALTERNATIF 11.2.1

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

3

1

3

1

1

3

1

1

3

1

1

3

1

3

1

3A

47

3A

80

47

3A

80

47

3A

80

47

3A

80

32

76

LDA

MOV

LDA

ADD

MOV

LDA

ADD

MOV

LDA

ADD

MOV

LDA

ADD

STA

HLT

41H

B, A

42H

B

B, A

43H

B

B, A

44H

B

B, A

45H

B

46H

(41H) A ; Jadi (A) = (41H)

(A) B ; Jadi (B) = (41H), diamankan

(42H) A ; Jadi (A) = (42H)

(A) + (B) A ; (A) = (41H) + (42H)

(A) B; Jadi (B) = hasil yg diamankan

(43H) A ; Jadi (A) = (43H)

(A) + (B) A ; (A) = hasil tadi + (43H)

(A) B; Jadi (B) = hasil yg diamankan

(44H) A ; Jadi (A) = (44H)

(A) + (B) A ; (A) = hasil tadi + (44H)

(A) B; Jadi (B) = hasil yg diamankan

(45H) A ; Jadi (A) = (45H)

(A) + (B) A ; (A) = hasil tadi + (45H)

(A) 46H ; (46H) = (41H)+s/d+(45H)

Stop program ini

27 Byte membutuhkan 27 lokasi untuk program, misalnya dari 00 H s/d 1A H

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-6

Dari hasil program tersebut, terlihat adanya tiga instruksi berulang yaitu MOV B,A kemudian LDA XXH, dan ADD B.

Program tersebut walaupun berulang, tetapi tidak dapat dibuat looping karena berulangnya tidak persis sama, yaitu adalanya instruksi LDA XXH, nilai XX nya berbeda-beda.

Program tersebut bila ditulis lengkap sesuai format bakunya, dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

13

14

15

16

17

18

19

1A

LDA

MOV

LDA

ADD

MOV

LDA

ADD

MOV

LDA

ADD

MOV

LDA

ADD

STA

HLT

41H

B, A

42H

B

B, A

43H

B

B, A

44H

B

B, A

45H

B

46H

3A

41

00

47

3A

42

00

80

47

3A

43

00

80

47

3A

44

00

80

47

3A

45

00

80

32

46

00

76

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-7

ALTERNATIF 11.2.2

Alternatif lainnya adalah menggunakan LXI, dan selanjutnya isi dari HL dinaikkan terus. Cara ini terlihat diawalnya lebih sulit, tetapi dengan penjumlahan berulang-ulang akan menjadi jauh lebih mudah dan dapat diarahkan ke bentuk looping.

Kemudian disini diperkenalkan inisiasi untuk mengosongkan/mengenolkan Accumulator, yaitu menggunakan instruksi

SUB A : (A) – (A) A atau

XRA A : (A) exor (A) A

Berikut ini adalah alternatif 11.2.2

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

1

3

1

1

1

1

1

1

1

1

1

1

1

1

97

21

86

23

86

23

86

23

86

23

86

23

77

76

SUB

LXI

ADD

INX

ADD

INX

ADD

INX

ADD

INX

ADD

INX

MOV

HLT

A

H, 41H

M

H

M

H

M

H

M

H

M

H

M, A

Clear (A) dan Carry

41H HL ; Jadi (HL) = 0041 H = M

(A)+(M=41H) A; ( A)=00+(41H)

(HL) + 1 HL ; (HL) = 0042 H = M

(A)+(M=42H) A; ( A)=(41H)+(42H)

(HL) + 1 HL ; (HL) = 0043 H = M

(A)+(M=43H) A; ( A)=hasil +(43H)

(HL) + 1 HL ; (HL) = 0044 H = M

(A)+(M=44H) A; ( A)=hasil +(44H)

(HL) + 1 HL ; (HL) = 0045 H = M

(A)+(M=45H) A; ( A)=hasil +(45H)

(HL) + 1 HL ; (HL) = 0046 H = M

(A)M=46H; (46H)=(A)=hasil akhir

Stop program ini

16 Byte hanya membutuhkan 16 lokasi untuk program, misalnya 00 H s/d 0F H

Dari hasil program tersebut, terlihat adanya dua instruksi berulang dan SAMA PERSIS yaitu INX H dan ADD M. Dengan adanya pengulangan yang sama persis tersebut, maka program tersebut dapat disederhanakan menggunakan LOOPING. Khusus hal ini akan dibahas kemudian.

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-8

Program tersebut bila ditulis lengkap sesuai format bakunya, dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

SUB

LXI

ADD

INX

ADD

INX

ADD

INX

ADD

INX

ADD

INX

MOV

HLT

A

H, 41H

M

H

M

H

M

H

M

H

M

H

M, A

97

21

41

00

86

23

86

23

86

23

86

23

86

23

77

76

LATIHAN SOAL

Desainlah program sistem mikroprosesor menggunakan bahasa rakitan/assembly untuk melakukan operasi berikut ini.

S.11.2.1 Memindahkan/mengcopykan isi lokasi alamat 41H ke alamat 42 H s/d 46 H.

S.11.2.2 Menjumlahkan beberapa bilangan heksadesimal yang berada di lokasi

alamat 51H s/d 5AH, kemudian hasilnya disimpan di alamat di alamat 61 H s/d 63 H, serta diasumsikan bahwa hasil akhirnya tidak mengandung carry.

S.11.2.3 Mengurangkan beberapa bilangan heksadesimal yang berada di lokasi alamat 51H s/d 5AH, kemudian hasilnya disimpan di alamat di alamat 61 H s/d 63 H, serta diasumsikan bahwa hasil akhirnya tidak negatif.

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-9

11.3 PROGRAM UNTUK PENJUMLAHAN/PENGURANGAN

BEBERAPA BILANGAN HEKSA DI BEBERAPA LOKASI BERBEDA

DENGAN MENGGUNAKAN LOOPING (JUMP)

Misalnya untuk menjumlahkan bilangan heksadesimal yang disimpan di beberapa lokasi/alamat yang berbeda (dimulai dengan lima lokasi berbeda seperti pada latihan 11.2, kemudian sampai dengan di banyak lokasi alamat.yang berurutan)

Sebagai contoh :

LATIHAN 11.3.1

Program sistem mikroprosesor (dalam bahasa rakitan/assembly) untuk menjumlahkan isi alamat 41H s/d 45H, kemudian hasilnya disimpan di alamat 46H, serta diasumsikan bahwa hasil penjumlahannya tidak menghasilkan carry. Kemudian informasi tentang banyaknya bilangan yang dijumlahkan berada di alamat 40H, ini berarti isi alamat 40H adalah 05.

SOLUSI :

Persoalan tersebut seperti pada latihan sebelumnya, dapat ditulis secara sederhana seperti berikut ini.

(40H) = 05 H

(41H) + (42H) + (43H) + (44H) + (45H) 46H

Dengan demikian programnya seperti berikut ini.

ALTERNATIF 11.3.1.1

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

1

3

1

1

1

1

3

3

1

97

21

46

23

86

05

C2

32

76

JUML :

SUB

LXI

MOV

INX

ADD

DCR

JNZ

STA

HLT

A

H, 40H

B, M

H

M

B

JUML

46H

Clear (A) dan Carry

40H HL ; Jadi (HL) = 0040 = M

(M=(HL)) B; (B)=05, sebagai counter

(HL) + 1 HL ; (HL) = 0041 = M

(A) + (M=41) A

(B) – 1 B ; Isi B berkurang 1

Jump jika (B) ≠ 0 Jump if ZERO = 0

(A) 46H

Stop program ini

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-10

15 Byte membutuhkan 15 lokasi untuk program, misalnya dari 00 H s/d 0E H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

JUML :

SUB

LXI

MOV

INX

ADD

DCR

JNZ

STA

HLT

A

H, 40H

B, M

H

M

B

JUML

46H

97

21

40

00

46

23

86

05

C2

05

00

32

46

00

76

Yang perlu diingat adalah :

Jump Not Carry selalu berpasangan dengan suatu nilai !

Pengertian sederhananya dari JNZ JUML adalah : Bila isi B ≠ 0 maka akan loncat/jump

ke alamat 05 H (tempat tanda JUML tersebut).

Kemudian instruksi STA 46H, dapat diganti denganinstruksi yang lebih cepat (pendek),

yaitu INX H dilanjutkan dengan MOV M,A

ALTERNATIF 11.3.1.2

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-11

Sebagai bahan latihan, berikut ini diberikan alternatif lainnya untuk solusi

program nomor 1, misalnya anda tidak boleh menggunakan instruksi JNZ, tetapi

boleh MENGGUNAKAN INSTRUKSI JZ, seperti berikut ini.

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

1

3

1

1

1

3

1

3

1

3

1

97

21

46

23

86

32

05

CA

23

C3

76

JUML:

STOP :

SUB

LXI

MOV

INX

ADD

STA

DCR

JZ

INX

JMP

HLT

A

H, 41H

B, M

H

M

46H

B

STOP

H

JUML

Clear (A) dan Carry

41H HL ; Jadi (HL) = 0041 H = M

(M = (HL)) B ; sebagai counter

(HL) + 1 HL ; (HL) = 0042 H = M

(A) + (M) A

(A) 46H; Hasil akhir

(B) – 1 B ; Isi B berkurang 1

Jump jika (B) = 0 Jump if ZERO = 1

(HL) + 1 HL ; (HL) = 0043 H = M

Jump to JUML

Stop program ini

19 Byte membutuhkan 19 lokasi untuk program, misalnya dari 00 H s/d 12 H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-12

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

JUML:

STOP :

SUB

LXI

MOV

INX

ADD

STA

DCR

JZ

NX

JMP

HLT

A

H, 41H

B, M

H

M

46H

B

STOP

H

JUML

97

21

41

00

46

23

86

32

46

00

05

CA

12

00

23

C3

06

00

76

ALTERNATIF 11.3.1.3

Sebagai bahan latihan, jika informasi tentang banyaknya data yang dijumlahkan tidak disimpan di suatu lokasi/alamat, dalam hal ini tidak disimpan di alamat 40H. Maka harus langsung dimasukkan ke dalam mikroprosesor, dalam hal ini langsung dimasukkan ke suatu register dengan instruksi MVI.

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

1

2

3

1

1

1

3

3

1

97

06

21

23

86

05

C2

32

76

JUML :

SUB

MVI

LXI

INX

ADD

DCR

JNZ

STA

HLT

A

B, 05H

H, 40H

H

M

B

JUML

46H

Clear (A) dan Carry

05H B; (B)=05, sebagai counter

40H HL ; Jadi (HL) = 0040 = M

(HL) + 1 HL ; (HL) = 0041 = M

(A) + (M=41) A

(B) – 1 B ; Isi B berkurang 1

Jump jika (B) ≠ 0 Jump if ZERO = 0

(A) 46H

Stop program ini

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-13

16 Byte membutuhkan 16 lokasi untuk program, misalnya dari 00 H s/d 0F H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

JUML :

SUB

MVI

LXI

INX

ADD

DCR

JNZ

STA

HLT

A

B, 05H

H, 40H

H

M

B

JUML

46H

97

06

05

21

40

00

23

86

05

C2

06

00

32

46

00

76

LATIHAN 11.3.2 Program sistem mikroprosesor (dalam bahasa rakitan/assembly) untuk menjumlahkan

isi alamat 43H s/d 7AH, kemudian hasilnya disimpan di alamat 40H, serta diasumsikan

bahwa hasil penjumlahannya tidak menghasilkan carry.

SOLUSI :

Persoalan tersebut seperti pada latihan sebelumnya, dapat ditulis secara sederhana

seperti berikut ini.

(43H) + ... + (7AH) 40H

Terlebih dahulu harus dihitung banyaknya bilangan atau lokasi yang dijumlahkan,

yaitu = 7AH – 43H + 1H = 28 H.

Dan jangan lupa bahwa LXI yang pertama kali adalah lokasi sebelumnya, berarti

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-14

lokasi 42H.

Dengan demikian programnya seperti berikut ini.

Byte Kode

Operasi Instruksi

(Mnemonic) Deskripsi (Artinya)

1

2

3

1

1

1

3

3

1

97

06

21

23

86

05

C2

32

76

JUML :

SUB

MVI

LXI

INX

ADD

DCR

JNZ

STA

HLT

A

B, 28H

H, 42H

H

M

B

JUML

40H

Clear (A) dan Carry

28H B; (B)=28, sebagai counter

42H HL ; Jadi (HL) = 0042 = M

(HL) + 1 HL ; (HL) = 0043 = M

(A) + (M=43) A

(B) – 1 B ; Isi B berkurang 1

Jump jika (B) ≠ 0 Jump if ZERO = 0

(A) 40H

Stop program ini

16 Byte membutuhkan 16 lokasi untuk program, misalnya dari 00 H s/d 0F H

Bila ditulis lengkap dengan lokasi alamat beserta isinya dalam hexadesimal seperti

berikut ini.

Alamat Memori (Heksadesimal)

Instruksi (Mnemonic)

Isi Memori (Heksadesimal)

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-15

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

JUML :

SUB

MVI

LXI

INX

ADD

DCR

JNZ

STA

HLT

A

B, 28H

H, 42H

H

M

B

JUML

40H

97

06

28

21

42

00

23

86

05

C2

05

00

32

40

00

76

LATIHAN SOAL

Desainlah program sistem mikroprosesor menggunakan bahasa rakitan/assembly untuk melakukan operasi berikut ini.

S.11.3.1 Menjumlahkan isi alamat 2DH s/d 62H serta diasumsikan bahwa hasil

penjumlahannya tidak menghasilkan carry, kemudian hasilnya disimpan di :

a. di alamat 2CH.

b. di alamat 63H s/d 7A H.

S.11.3.2 Mengurangkan isi alamat 2DH s/d 62H (jadi (2DH) – (2EH) – (2FH) dst.nya),

serta diasumsikan bahwa hasil akhir pengurangannya bukan bilangan negatif. Kemudian hasilnya disimpan di :

a. di alamat 2CH.

b. di alamat 63H s/d 7A H.

S.11.3.3 Menjumlahkan isi alamat 52H s/d 70H serta diasumsikan bahwa hasil penjumlahannya tidak menghasilkan carry, kemudian hasilnya disimpan di

Modul Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 11/Hal 11-16

alamat 60H s/d 69 H. Tetapi sebelum hasil penjumlahan tadi disimpan di alamat 60 H s/d 69 H, maka data yang ada di alamat tersebut (di 60 H s/d 69 H) harus diamankan terlebih dahulu ke alamat 91 H s/d 9A H.

DAFTAR PUSTAKA

[1] Lance A. Leventhal, Introduction to Microprocessors : Software, Hardware, Programming, Prentice Hall,1978.

[2] Pasahow, Edward, J. , Microprocessor and Microcomputer Interfacing for Electronics Technicians, McGraw-Hill, New York, 1981.

[3] Chris H. Pappas dan Willian H. Murray III, 80386 Mikroprocessor Handbook, Osborne McGraw-Hill, 1988

[4] Avtar Singh dan Walter A. Triebel, The 8088 Microprocessor : Programmnig, Interfacing, Software, Hardware, and Applications, Prentice Hall, International Editions, 1989

[5] Charles M.Gilmore , Microprocessors:Principles and Applications,

Glencoe/McGraw-Hill, 2nd International Ed. , 1995

[6] Rodnay Azks (alih bahasa : S.H. Nasution), From Chips to Systems : An

Introduction to Microprocessors ( Dari Chip ke Sistem : Pengantar Mikroprosesor), Sybec Inc., 1981 (Penerbit Erlangga, 1986).

[7] Harry Garland (alih bahasa : M. Barmawi dan M.O. Tjia), Introduction to Microprocessor System Design ( Pengantar Desain Sistem Mikroprosesor), McGraw-Hill Inc., 1979 (Penerbit Erlangga, 1984).

[8] Barry B. Brey , Microprocessors and Peripherals : Hardware,Software,Interfacing,

and Applications, Merrill Publishing Company, 1988.