Kamis, 31 Maret 2011

BAB I Pengenalan Bahasa Assembly

Sekilas Bahasa Assembly
Bahasa assembly adalah bahasa pemrograman mendasar yang sangat dekat dengan mesin. Konsep perangkat keras dan perangkat lunak dapat dijelaskan secara konstektual dengan memahami bahasa assembly. Disini akan dijelaskan bagaimana perangkat keras computer dan sistem operasi bekerja sama dan bagaimana program aplikasi berkomunikasi dengan system operasi.

Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin. Terdapat dua assembler yang dikenal baik untuk IBM-PC , yaitu MASM (Microsoft Assembler) dan TASM (Turbo Assembler)
.

Download tulisan lengkapnya: klik disini

CONTOH PROGRAM HELLO

CONTOH PROGRAM HELLO

Program Hello pada gambar 1.3 yang menempilkan pesan ‘’Hello, world !” pada layar . Baris 1 mengandung perintah title; semua karakter sisanya pada baris 1 dianggap komentar , seperti pada baris 3. Sebelum menyelesaikan lebih lanjut kita jelaskan dulu segmen ,yaitu bagian-bagian yang membangun program .

Segmen code adalah bagian dimana intruksi program di simpan ; segmen data adalah bagian dimana variable di simpan ; dan segmen stack adalah tempat menyimpan stack . stack sendiri merupakan daftar dalam memori dimana program dijaga dalam variable sementara, kembali dari subrutin , dan semacamnya .

Direktif dosseg menunjukkan segmen standar untuk code , data dan segmen stack . perintah model small mengindifikasikan bahwa program menggunakan Microsoft assembler memory “small” . Direktif stack menset 100 H (256) byte stack untuk program.

Title program hello word [1]

[2]

; program ini menampilkan pesan “hello,word” [3]

[4]

Dosseg [5]

. model small [6]

. stack 100h [7]

[8]

. data [9]

. hello_message db ‘hello, world !’,0dh,0ah, ‘$’ [10]

[11]

. code [12]

main proc [13]

mov ax, @data [14]

mov ds,ax [15]

[16]

mov ah ,9 [17]

mov dx, offset hello_message [18]

int 21 h [19]

[20]

mov ax,4000h [21]

int 21h [22]

main endp [23]

endp main [24]

GAMBAR 1.3 Program hello.asm

Direcktif . code menandai awal segmen code . perintah data menandai awal segmen data , dimana variable dideklarasikan .

Baris 9-10 mengandung segmen data, dimana variable diberi nama hello_message dideklarasikan . huruf db adalah direktif define byte yang meminta assembler mengalokasikan serangkaian byte memori untk data yang mengikutinya .

Baris 13 mengunakan perintah proc untuk mendeklarasikan prosedur main (mungkin juga menggunakan nama lain ) . Baris 14-15 menyalin alamat segmen data ke dalam reg DS . intruksi MOV selalu mempunyai 2 operand: tujuan dan sumber .

Baris 17-19 menyebabkan string karakter dituliskan kekonsole . Mereka melakukannya dengan memnggil fungsi DOS yang menampilkan string yang beralamat dalam register DX.Nomor fungsi diletakkan dalam register AH.

Baris 21-22 adalah perintah untuk berhenti dan kembali ke DOS. Baris 23 akhir dari prosedur main dan baris 24 baris terakhir di assembly.

Rabu, 16 Maret 2011

Bahasa assembly (bag. konversi bilangan)

1.Konversi Dari Sistem Bilangan Desimal

1.1.Konversi Desimal ke Biner

52/2 = 26 sisa 0, sebagai LSB( Least Significant Bit )

26/2 = 13 sisa 0

13/2 = 6 sisa 1

6 /2 = 3 sisa 0

3/2 = 1 sisa 1

1/2 = 0 sisa 1, sebagai MSB( Most Significant Bit )

sehingga 5210 à 1101002

o Cara lain à menjumlahkan bilangan-bilangan pangkat dua yang jumlahnya sama dengan bilangan desimal yang akan dikonversikan. Contoh konversi bilangan 5410 ke bilangan biner :

20 = 1 1

22 = 4 100

23 = 8 1000

25 = 35 100000 +

101101

o Bila bilangan desimal yang akan dikonversikan berupa pecahan à bilangan tersebut harus dipecah menjadi dua bagian. Contoh bilangan desimal 125,4375 dipecah menjadi 125 dan 0,4375.

125/2 = 62 sisa 1

62/2 = 31 sisa 0

31/2 = 15 sisa 1

15/2 = 7 sisa 1

7/2 = 3 sisa 1

3/2 = 1 sisa 1

1/2 = 0 sisa 1

Bilangan desimal 125 à 1111101.

Kemudian bilangan yang pecahan dikonversikan:

0,4375 * 2 = 0,875

0,875 * 2 = 1,75

0,75 * 2 = 1,5

0,5 * 2 = 1

hasil konversi 0,0111

Maka hasil konversi 125,4375 ke bilangan biner:

125 = 1111101

0,4375 = 0,0111 +

125,4375 = 11111,0111

1.2.Konversi Desimal ke Oktal

o Teknik pembagian yang berurutan dapat digunakan untuk mengubah bilangan desimal menjadi oktal. Contoh : 581910 à oktal:

5819/8 = 727 sisa 3, LSB

727/8 = 90 sisa 7

90/8 = 11 sisa 2

11/8 = 1 sisa 3

1/8 = 0 sisa 1, MSB

Sehingga 581910 = 132738

1.3.Konversi Desimal ke Hexadesimal

o Dengan remainder method [pembaginya basis dari bilangan hexadesimal :16]. 340910 à hexadesimal:

3409/16 = 213 sisa 1 = 1, LSB

213/16 = 13 sisa 5 = 5

13/16 = 0 sisa 13 = 0, MSB

jadi, 340910 = 05116

2.Konversi dari Sistem Bilangan Biner

2.1.Konversi Biner ke Desimal

o Bilangan biner dikonversikan kebilangan desimal à mengalikan masing-masing bit dalam bilangan dengan posisi valuenya sebagai contoh :

10110110 = 1*25 + 0*24 + 1*23 + 1*22 + 0*21 + 1*20

= 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 1*1

= 32 + 0 + 8 + 4 + 0 + 1

= 18210

o Bentuk pecahan biner à 1111101,0111 dapat dikonversikan :

1111101,0111 = 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 + 1*2-3 + 1*2-4

= 64+32+16+8+4+0+1+ 0.25 + 0.125 + 0.0625

= 125,437510

Sehingga 1111101,01112 = 125,437510

2.2.Konversi Biner ke Oktal

o Konversi dapat dilakukan dengan mengkonversikan tiap-tiap tiga buah digit biner, dimulai dari digit yang paling kanan. Contoh : 111100110012dikelompokkan menjadi 11 110 011 001 à

112 = 38, MSB

1102 = 68

0112 = 38

0012 = 18, LSB

Jadi bilangan biner 111100110012 = 36318

2.3.Konversi Biner ke Hexadesimal

o Konversi dapat dilakukan dengan mengkonversi tiap-tiap empat buah digit biner, diawalai dari digit yang paling kanan. Contoh : 01001111010111102dikelompokkan menjadi 0100 1111 1010 1110 à 0100 = 416, MSB

1111 = F16

0101 = 516

1110 = E16, LSB

Maka, bilangan 01001111010111102 = 4F5E16

3.Konversi dari Sistem Bilangan Oktal

3.1.Konversi Bilangan Oktal ke Desimal

o Bilangan oktal dapat dikonversikan ke bilangan desimal dengan mengalikan masing-masing bit dalam bilangan dengan position valuenya. Contoh : 3248 dikonversi kebilangan desimal :

3248 = 3 * 82 + 2 * 81 + 4 * 80

= 3 * 64 + 2 * 8 + 4 * 1

= 192 + 16 + 4

= 21210

o Apabila bilangan oktal yang akan dikonversikan itu memiliki koma à Contoh : mengkonversi bilangan 521,58 ke desimal :

521 = 5 * 82 + 2 * 81 + 1 * 80

= 320 + 64 + 1

= 337

sedangkan pecahannya à 0.5 = 5 * 8-1 = 0.625

Sehingga, 521,58 = 337.62510

3.2.Konversi Oktal ke Biner

o Konversi dari bilangan oktal ke biner dapat dilakukan dengan mengkonversikan masing-masing digit oktal ke tiga digit biner, dan masing-masing digit okatl diubah ke biner secara terpisah kemudian diurutkan dari MSB ke LSB. Contoh : 35278 à ke biner :

3 = 0112, MSB

58 = 1012

28 = 0102

78 = 1112, LSB

Sehingga, 35278 = 0111010101112.

o Konversi bilangan oktal yang berkoma à 75,638 :

@ 758 @ 638

78 = 1112 68 = 1102

58 = 1012 38 = 0112

Sehingga, 75,638 = 111101,1100112

3.3.Konversi Oktal ke Heksadesimal

o Ada dua tahapan :

a.Rubah bilangan oktal ke bilangan biner, kemudian

b.Rubah bilangan biner ke bilangn heksadesimal

Contoh : 25378 dikonversi keheksadesimal à

o Konversi terlebih dahulu kebilangan biner

28 = 0102

58 = 1012

38 = 0112

78 = 1112

o Dari bilangan biner dikonversi ke bilangan heksadesimal

01012 = 516

01012 = 516

11112 = F16

Maka bilangan oktal 25378 = 55F16

4.Konversi dari Sistem Bilangan Heksadesimal

4.1.Konversi Heksadesimal ke Desimal

o Contoh : B6A à

B6A16 = 11 * 162 + 6 * 161 + 10 * 160

= 11 * 256 + 6 * 16 + 10 * 1

= 2816 + 96 + 10

= 292210

Tabel hubungan nilai heksadesimal diposisi tertentu dengan nilai desimal

Posisi 4

Posisi 3

Posisi 2

Posisi 1

Hexa

Desimal

Hexa

Desimal

Hexa

Desimal

Hexa

Desimal

0

0

0

0

0

0

0

0

1

4096

1

256

1

16

1

1

2

8192

2

512

2

32

2

2

3

12288

3

768

3

48

3

3

4

16384

4

1024

4

64

4

4

5

21480

5

1280

5

80

5

5

6

24576

6

1536

6

96

6

6

7

28672

7

1792

7

112

7

7

8

32768

8

2048

8

128

8

8

9

36864

9

2304

9

144

9

9

A

40960

A

2560

A

160

A

10

B

45056

B

2816

B

176

B

11

C

49152

C

3072

C

192

C

12

D

53248

D

3728

D

288

D

13

E

57344

E

3584

E

224

E

14

F

61440

F

3840

F

240

F

15

Contoh 17E16 = 256 + 112 + 14 = 38210

o Bila bilangan heksadesimal yang akan dikonversikan berupa pecahan : Contoh : 9B,05 dikonversikan ke desimal à

9B,0516 = 9*161 + 11*160 + 0*16-1 + 5*16-1 = 9*16 + 11*1 + 0*0.625 + 5*0.004

= 144 + 11 + 0 + 0,02

= 155,0210

4.2.Konversi Heksadesimal ke Biner

o Contoh : 2A5C16 dikonversi ke biner

216 = 00102, MSB

A16 = 10102

516 = 01012

C16 = 110016, LSB

Sehingga 2A5C16 = 00101010010111002

4.3.Konversi Heksadesimal ke Oktal

o Contoh : 55F16 dikonversi ke desimal à

· Rubah terlebih dahulu ke biner

516 = 01012

5 16 = 01012

F16 = 11112

o Dari bilangan biner baru dikonversikan ke oktal

0102 = 28

1012 = 38

1112 = 78

Maka 55F16 = 25378