• Tidak ada hasil yang ditemukan

Modul Perkuliahan Bahasa Rakitan

N/A
N/A
Protected

Academic year: 2018

Membagikan "Modul Perkuliahan Bahasa Rakitan"

Copied!
14
0
0

Teks penuh

(1)

Modul Kuliah Bahasa Rakitan Oleh : Harry Witriyono, M.Kom

I. Bahasa Rakitan, Microprocessor dan Bilangan

1. Bahasa Rakitan dan Posisinya dengan Bahasa Lain.

Manusia dapat melakukan interaksi secara efektif dengan menggunakan media bahasa, sehingga memungkinkan untuk menyampaikan gagasan, pemikiran dan informasi, tanpa ada bahasa maka komunikasi tidak akan terjadi. Dalam lingkungan komputer bahasa pemrograman bertindak sebagai sarana komunikasi antara manusia dan komputer dalam menyelesaikan permasalahannya, tanpa ada bahasa pemrograman maka komputer hanyalah sebagai suatu alat saja yang tidak dapat membantu manusia.

Suatu solusi untuk suatu masalah akan menjadi lebih mudah bila bahasa pemrograman yang digunakan lebih dekat dengan permasalahan tersebut. Oleh karena itu, bahasa harus memiliki konstruksi yang merefleksikan terminologi dan elemen yang dipergunakan dalam mendeskripsikan masalah dan bahasa tersebut bebas terhadap jenis komputer yang digunakan. Bahasa pemrograman yang dapat merefleksikan terminologi tersebut adalah bahasa pemrograman yang lebih menyerupai bahasa manusia sendiri dan dikenal dengan bahasa tingkat tinggi (High Level Language). Disisi lain, komputer digital melaksanakan pekerjaannya dalam memecahkan masalah manusia hanya memahami dan menerima bahasa yang berupa nol dan satu atau yang dikenal sebagai bahasa tingkat rendah (Low Level Language).

Bahasa pemrograman berdasarkan ketergantungannya dengan mesin bisa meliputi jenis bahasa seperti berikut ini:

1. Bahasa Mesin, yang merupakan bentuk bahasa terendah dari bahasa komputer, dimana setiap instruksi dalam program direpresentasikan dengan kode numerik, yang secara fisik berupa deretan angka 0 dan 1. Sekumpulan instruksi dalam bahasa mesin bisa dibentuk menjadi microcode, yaitu semacam prosedur dalam bahasa mesin. 2. Bahasa Rakitan / Assembly Language, yang merupakan bentuk simbolik dari bahasa

mesin. Misalnya simbolik / mnemonic MOV AH,2 adalah terjemahan dari bahasa mesin 1011010000000010. Pada bahasa rakitan terdapat alat bantu untuk diagnostik yang disebut debug. Contoh produk yang ada untuk pengembangan dan debug bahasa rakitan adalah : Turbo Assembler dari Borland Co. dan Macro Assembler dari Microsoft Co, sedangankan debuggernya adalah Turbo Debuger dan Debug. Ciri khas bahasa rakitan dalam penulisan perintahnya adalah terdiri dari field operasi atau perintah diikuti oleh satu atau lebih operannya.

3. Bahasa Tingkat Tinggi (user oriented), disebut demikian karena bahasa pemrograman komputer ini lebih mendekati dengan bahasa manusia. Disamping itu memberikan fasilitas yang lebih banyak, kontrol program yang terstruktur, kalang (nested), block

dan prosedur. Contohnya adalah bahasa Pascal, BASIC, FORTRAN, COBOL, ADA, C++, dan lain-lain.

(2)

LISP untuk gambar teknik, Visual Basic, Visual Delphi, COGO untuk aplikasi teknik sipil, Flash untuk pembuatan animasi, dan lain-lain.

Muara akhir dari kelompok bahasa – bahasa tadi adalah ke bahasa mesin atau bahasa rakitan, dimana ketika telah dikompilasi maka hasilnya akan menjadi kode-kode dalam bahasa mesin atau mnemonik assembler. Perhatikan instruksi binner berikut :

1011010000000010 MOV AH,2

1011001001000001 MOV DL,41 PRINT “A” 1100110100100001 INT 21

1100110100100000 INT 20 END

Pada baris pertama instruksi bilangan binner tersebut, memerintahkan komputer untuk mempersiapkan service 2 untuk persiapan proses cetak dari interupt 21 yang diinstruksikan pada baris ke 3. Baris keduanya menunjukkan pada komputer karakter yang akan dicetak adalah karakter 41 Heksa atau 65 Desimal yang artinya huruf A, sehingga waktu komputer mengerjakan perintah baris ketiga, tercetaklah huruf A di layar. Baris terakhir memberikan perintah pada komputer untuk menghentikan program.

Bilangan pada bahasa rakitan dapat berupa beberapa basis bilangan, yaitu : bilangan desimal, heksadesimal, oktal, dan binner. Tetapi yang paling banyak digunakan pada pemrograman bahasa rakitan adalah bilangan heksadesimal.

Bilangan desimal : bilangan yang berbasis 10 yang biasa kita gunakan sehari-hari. Bilangan ini dipakai menghitung dari mulai 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Bilangan biner adalah bilangan yang berbasis 2, dimana perhitungan pada bilangan ini hanya dikenal dua bentuk bilangan 0 dan 1 saja. Bilangan oktal adalah bilangan yang berbasis delapan, sehingga dalam perhitungan hanya dikenal 8 bilangan Dengan demikian bila kita menghitung mulai dari 0 hingga 15 dalam bilangan biner,oktal dan heksadesimal menjadi seperti tabel berikut:

Desimal Binner Oktal Heksadesimal

0 0 0 0

1 1 1 1

2 10 2 2

3 11 3 3

4 100 4 4

5 101 5 5

6 110 6 6

7 111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 A

11 1011 13 B

12 1100 14 C

13 1101 15 D

14 1110 16 E

(3)

Konversi bilangan Biner menjadi Desimal :

Contoh : bilangan biner 110 maka desimalnya adalah : = 1 x 22 + 1 x 21 + 0 x 20

= 4 + 2 + 0 = 610

Konversi bilangan Desimal menjadi Biner :

Contoh : bilangan desimal 13 maka binernya : 2 13 sisa 1

2 6 sisa 0 2 3 sisa 1

2 1 sisa 1 baca binnernya 0

Jadi bilangan binernya adalah 1101

Sebagai latihan silahkan coba ubah bilangan 23 desimal menjadi biner. Jawabannya :

23 sisa 1 11 sisa 1 5 sisa 1 2 sisa 0 1 sisa 1 0

Jadi binernya adalah : 10111

Konversi bilangan Oktal ke Desimal

Contoh bilangan 23 oktal ke desimal : = 2 x 81 + 3 x 80

= 16 + 3 = 19 Desimal

Konversi bilangan Desimal ke Oktal

Contoh bilangan 50 desimal ke oktal : 850 sisa 2

8 6 sisa 6 0

Jadi bilangan 50 desimal sama dengan 62 oktal.

Konversi Heksadesimal ke Biner

Contoh bilangan C5E2 heksadesimal menjadi biner : C 5 E 2 = 1100 0101 1110 0010

Jadi bilangan binernya = 1100010111100010

(4)

Memori, Interrupt dan Register

Memori pada komputer memiliki hubungan yang tak dapat dipisahkan, karena setiap komputer memerlukan memori sebagai tempat kerjanya. Memori ini dapat berfungsi untuk memuat program dan juga sebagai tempat untuk menampung hasil proses. Memori ini bersifat volatile, artinya data yang tersimpan cuma sebatas adanya aliran listrik, sehingga pada komputer diperlukan adanya media penyimpanan kedua seperti flash disk, disket, harddisk, dan lain-lain.

Pada IBM-PC dikenal bagian terkecil dari memori yang dapat diakses secara langsung dan cepat, seperti halnya variabel pada bahasa tingkat tinggi, dan disebut dengan nama register. Register ada beberapa macamnya, diantaranya adalah : register general purpose, register segmen, register pointer dan index, register index pointer dan register flag.

1. Register General Purpose, register yang termasuk dalam kelompok ini adalah : register AX, BX, CX, dan DX yang masing-masing terdiri dari 16 bit. Register ini dapat dipisah menjadi dua bagian masing-masing berjumlah 8 bit, yaitu bagian low dan bagian high; sehingga terdapat register AH, AL, BH, BL, CH, CL, DH, dan DL. Secara umum register ini berguna untuk berbagai keperluan, antara lain : AX digunakan pada operasi aritmatika, BX digunakan untuk menunjukkan suatu alamat offset dari suatu segmen, CX digunakan untuk proses perulangan / looping, register DX digunakan untuk menampung sisa hasil bagi 16 bit. Mulai processor 80386 terdapat tambahan register 32 bit, yaitu EAX, EBX, ECX dan EDX.

2. Register Segmen, register ini terdiri dari CS (Code Segment), DS (Data Segment), ES (Extra Segment), SS (Stack Segment), yang masing-masing merupakan register 16 bit dan berguna untuk menunjukkan alamat dari suatu segmen. Register CS digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS menunjukkan letak dari segmen yang digunakan oleh stack; kedua register ini sebaiknya tidak sembarangan diubah karena akan menyebabkan kekacauan pada program. Register DS untuk menunjukkan tempat segmen dimana data-data pada program disimpan. ES biasanya digunakan untuk menunjukkan suatu alamat di memory, misalnya memory video. Pada prosesor 80386 ke atas terdapat tambahan register FS dan GS.

3. Register Pointer dan Index, yang termasuk dalam kelompok ini adalah register SP (Stack Pointer), BP (Base Pointer), SI (Source Index) dan DI (Destination Index); pada processor 80386 terdapat tambahan register 32 bit yaitu ESP, EBP, ESI dan EDI.

4. Register Index Pointer, yaitu IP adalah register 16 bit yang menunjukkan alamat di memory tempat dari instruksi selanjutnya akan dieksekusi. Pada processor 80386 ke atas terdapat register EIP yang merupakan register 32 bit.

(5)

Interrupt adalah suatu permintaan khusus kepada microprocessor untuk melakukan sesuatu aktifitas, seperti mencetak karakter, mengatur atribut file, dan lain-lain. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.

Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi yang diberi nomor dari 0 sampai 255. Nomor interupsi 0 sampai 1F disediakan oleh ROM BIOS, yaitu suatu IC pada komputer yang mengatur operasi dasar komputer. Program yang melayani suatu interupsi disebut dengan interupt handler.

Setiap interrupt akan mengeksekusi interrupt handlernya masin-masing berdasarkan nomornya. Sedangkan alamat dari masing-masing interrupt handler tercatat di memori dalam bentuk array yang besar elemennya masing-masing 4 byte. Keempat byte ini dibagi lagi menjadi : 2 byte pertama berisi kode offset dan 2 byte berikutnya berupa kode segmen dari alamat interupt handler yang bersangkutan. Alamat absolut semua interrupt handler ini disimpan dalam lokasi memori 0000h sampai 3FF, dan disebut dengan Interrupt Vector Table; dan ini tidak sama di satu komputer dengan yang lainnya.

Interrupt nomor 00h – 1F berada di alamat absolut memory 0000h – 007Fh, dan bersifat standar untuk semua komputer baik yang bersistem operasi DOS atau tidak. Interrup ini antara lain :

00h Devide by Zero 10h Video Service

01h Single Step 11h Equipment Check

02h Non Maskable Interrupt 12h Memory Size

03h Break Point 13h Disk Service

04h Arithmatic Overflow 14h Communication (RS-232)

05h Print Screen 15h Cassete Service

06h Reserved 16h Keyboard Service

07h Reserved 17h Printer Service

08h Clock Tick (Timer) 18h ROM Basic

09h Keyboard 19h Bootstrap loader

0Ah I/O Channel Action 1Ah BIOS Time & Date

0Bh COM 1 (Serial 1) 1Bh Control Break

0Ch COM 2 (Serial 2) 1Ch Timer Tick

0Dh Fixed Disk 1Dh Video Initialization

0Eh Diskette 1Eh Disk Parameter

0Fh LPT 1(Parallel 1) 1Fh Graphics Char

Interrupt 20h – FFh adalah interrupt pada komputer yang menggunakan sistem operasi DOS dan diload dimemori pada saat digunakan di alamat absolut : 07Fh – 3FFh, antara lain : 20h Terminate Program

21h DOS Function Service 22h Terminate Code 23h Ctrl – Break Code 24h Critical Error Handler 25h Absolute Disk Read 26h Absolute Disk Write

(6)

Membuat Program COM dengan Debug

Program Debug merupakan program bawaan atau terintegrasi langsung pada paket sistem operasi mulai dari DOS hingga Microsoft Windows. Program ini bila kita aktifkan pada Microsoft Windows XP tahapannya adalah sebagai berikut.

1. Klik Start – Run

2. Ketik perintah CMD lalu klik button OK sehingga akan tampak jendela MS DOS Prompt.

3. Selanjutnya pindah ke folder tempat kita menyimpan program kita nanti. 4. Aktifkan program Debug dengan mengketiknya pada prompt yang tampil.

Program Debug merupakan salah satu program kecil yang berdaya-guna besar. Program ini dapat digunakan untuk melihat-lihat kode program dalam mnemonic bahasa Assembler. Beberapa perintah yang sering kita gunakan nanti adalah sebagai berikut : 1. Q = Quit, digunakan untuk mengakhiri program Debug.

2. D = Dump / Display digunakan untuk melihat-lihat kode hexadesimal dari suatu alamat memori tertentu.

3. A = Assemble digunakan untuk memberikan perintah bahasa Assembler pada program yang diubah atau dibuat.

4. U = Unassemble digunakan untuk melihat mnemonik bahasa Assembler pada suatu alamat tertentu.

5. R = untuk memberikan nilai pada suatu register langsung 6. N = digunakan untuk memberi nama ke suatu file

7. W = digunakan untuk menyimpan sejumlah byte yang telah diubah / dibuat.

8. ? = digunakan untuk menampilkan bantuan atas perintah-perintah lain dalam program Debug.

Pada contoh berikut kita akan mempelajari bagaimana membuat program COM yang memanfaatkan Interupt 21H service 02H untuk mencetak suatu karakter ke layar. Tahapan-tahapannya adalah sebagai berikut :

1. Aktifkan program Debug. 2. ketik A100

3. ketik mov ah,2 4. ketik mov dl,45 5. ketik int 21 6. ketik int 20

7. tekan enter untuk menutup perintah baris terakhir program. 8. ketik RCX

9. ketik angka selisih dari mulai tahap 3 sampai alamat terakhir yang ditunjukkan pada tahap 6. Pada contoh kita nilainya adalah 8, yaitu selisih dari 108 – 100. 10. ketik Na.com

(7)

Tampilan tahapan tadi pada program Debug adalah seperti berikut ini : -a100

1386:0100 mov ah,2 1386:0102 mov dl,41 1386:0104 int 21 1386:0106 int 20 1386:0108 -rcx CX 0000 :8

-na.com -w

Writing 00008 bytes -q

Setelah keluar dari program Debug, silahkan anda jalankan program a.com tadi, dengan mengetiknya pada prompt.

Contoh berikut adalah membuat program COM yang menampilkan tulisan ABA pada monitor.

-a100

1386:0100 mov ah,2 1386:0102 mov dl,41 1386:0104 int 21 1386:0106 mov dl,42 1386:0108 int 21 1386:010A mov dl,41 1386:010C int 21 1386:010E int 20 1386:0110 -rcx CX 0000 :10

-nABA.com -w

Writing 00010 bytes -q

Sebagai latihan silahkan anda buat program berikut ini : 6. Program yang menampilkan tulisan : UMB BKL

7. Buat program yang menampilkan tulisan : Universitas Muhammadiyah Bengkulu 8. Buat program yang menampilkan tulisan :

(8)

Analisa beberapa Mnemonic bahasa rakitan adalah sebagai berikut :

1. Perintah MOV, berguna untuk memberikan suatu nilai pada suatu register. Perintah ini setara dengan bahasa keluarga BASIC, yaitu LET. Contoh :

Mov AH,02 artinya memberikan nilai AH=02 Mov DL,41 artinya memberikan nilai DL=41

2. INT 21 artinya kerjakan perintah no 21, yang dalam contoh program kita adalah perintah 21 service 2 (Register AH berisi 2), yang berguna mencetak karakter ke layar. Service dan interrup yang lain berbeda pula fungsinya.

3. INT 20 artinya akhiri program.

4. JMP alamat artinya menjalankan perintah pada suatu alamat 5. LOOP alamat artinya ulang ke alamat sampai nilai register CX menjadi 0 6. INC register artinya tambahkan suatu register dengan nilai 1.

7. ADD reg1,regi2 artinya tambahkan nilai register 2 ke register 1 dan hasilnya di register 1

8. SUB reg1,reg2 artinya kurangkan nilai register 2 dengan register 1 dan hasilnya di register 1.

9. DEC reg artinya mengurangi nilai register reg dengan nilai 1.

Contoh Permrograman dengan beberapa perintah / mnemonic bahasa rakitan tersebut adalah seperti berikut ini :

1. Membuat perulangan mencetak karakter A ke layar sebanyak 5 kali, maka nemoniknya adalah:

MOV AH,02 MOV DL,41

XXXX:YYYY MOV CX,5

INT 21 LOOP YYYY INT 20

2. Membuat perulangan mencetak karakter ABCDE ke layar dengan INC, maka mnemoniknya adalah :

MOV AH,02 MOV DL,41

XXXX:YYYY MOV CX,5

INT 21

INC DL

LOOP YYYY INT 20

3. Membuat cetak karakter ACE ke layar dengan ADD, maka mnemoniknya adalah : MOV AH,02

(9)

4. Membuat karakter ECA ke layar dengan SUB, maka mnemoniknya MOV AH,02

(10)

PEMROGRAMAN BAHASA ASSEMBLY DENGAN TURBO ASSEMBLER Pada pemrograman bahasa assembly / rakitan dengan menggunakan debug tampak sekali tidak begitu nyaman dalam proses pengetikan kode bahasanya. Walaupun aplikasi Debug adalah peralatan tercepat yang dapat kita gunakan untuk membongkar program, tetapi dalam pembuatan aplikasi bahasa assembly menjadi tidak nyaman, sama saja halnya dengan menebang pohon dengan menggunakan pisau dibandingkan denga menebang pohon dengan gergaji. Untuk itu pemrograman Assembly yang cukup baik dapat menggunakan aplikasi Turbo Assembler (TASM) sebagai kompilernya, dimana kode programnya dapat kita ketik dengan menggunakan aplikasi pengolah kata standard ASCII biasa seperti Edit atau Notepad.

Tahapan pelaksanaannya secara garis besar adalah sebagai berikut : 1. Buatlah folder kerja terlebih dulu di media simpan anda.

2. Copy-kan file TASM.EXE, TLINK.EXE ke folder tersebut.

3. Bila perlu Copy-kan juga aplikasi pengolah kata standard tadi ke folder tersebut. 4. Ketik source code bahasa rakitannyanya dengan aplikasi pengolah kata tersebut. 5. Compilasi dengan TASM

6. Jadikan EXE atau COM dengan TLINK.

Setelah selesai aplikasi EXE / COM dapat dengan mudah dijalankan dari prompt DOS. Struktur dasar pengetikan Source Code untuk pembuatan aplikasi COM adalah seperti berikut ini :

.MODEL SMALL .CODE

ORG 100H

Label1 : JMP Label2 +---+ | TEMPAT DATA PROGRAM | +---+

Label2 : +---+ | TEMPAT PROGRAM |

+---+

INT 20H

END Label1

Bila menggunakan Macro maka struktur programnya adalah seperti berikut ini : NamaM MACRO [P1,P2,,]

+---+ | Program | +---+

ENDM

.MODEL SMALL .CODE

ORG 100H

(11)

Label2 : +---+ | TEMPAT PROGRAM |

+---+

INT 20H

END Label1

Bila anda menggunakan Procedure, maka struktur penulisannya adalah seperti berikut ini :

.MODEL SMALL .CODE

ORG 100H

Label1 : JMP Label2

+---+ | TEMPAT DATA PROGRAM | +---+

Label2 : +---+ | TEMPAT PROGRAM |

+---+

INT 20H

NamaP PROC NEAR/FAR

+---+ | Program | +---+

RET

NamaP ENDP

END Label1

Contoh penulisan aplikasi dengan tidak menggunakan Macro atau Procedure adalah seperti berikut ini :

;/=========================================================\; ; Program : INKAL.ASM ;

; Author : S’to ;

; Fungsi : Input Kalimat dari ; ; keyboard. ; ; INTERUPSI 21h ;

;===========================================================; ;===========================================================; ; Input: ;

; AH = 0Ah ;

; DS:DX = Penampung dengan spesifikasi: ;

; Byte 1 = Maksimum karakter yang dapat dimasukkan ; ; Byte 2 = Akan dijadikan Indikator banyaknya ; ; karakter yang dimasukkan ;

; Byte 3 keatas = Tempat hasil masukan ditampung ; ; ;

; ;

;\=========================================================/; .MODEL SMALL

.CODE ORG 100h

TData : JMP Proses T_Enter EQU 0Dh

(12)

Kal1 DB 13,10,'Kalimat pada buffer : $' Buffer DB 23,?,23 DUP(?)

Proses : MOV AH,09 LEA DX,Kal0

INT 21h ; Cetak kalimat Kal0 MOV AH,0Ah ; Servis Input kalimat

LEA DX,Buffer ; DX menunjuk pada offset Buffer INT 21h ; Input kalimat !

MOV AH,09 LEA DX,Kal1

INT 21h ; Cetak kalimat Kal1

LEA BX,Buffer+2 ; BX menunjuk byte ke 3 Buffer Ulang:

CMP BYTE PTR [BX],T_Enter ; Apakah karakter Enter? JE EXIT ; Ya! Lompat ke Exit

MOV DL,[BX] ; Masukkan karakter pada DL MOV AH,02 ; Servis cetak karakter

INT 21h ; Cetak karakter INC BX ; BX := BX+1

JMP Ulang ; Lompat ke Ulang EXIT: INT 20h ; Kembali ke DOS ! END TData

Contoh penulisan aplikasi yang menggunakan Procedure seperti berikut ini :

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~; ; PROGRAM : PROC_KAR.ASM ;

; FUNGSI : MENCETAK KARATER ; ; DENGAN PROCEDURE ;

; ;

;==========================S’to=; .MODEL SMALL

.CODE ORG 100h

Proses : CALL Cetak_Kar ; Panggil Cetak_Kar INT 20h

Cetak_Kar PROC NEAR MOV AH,02h

MOV DL,'S'

INT 21h ; Cetak karakter

RET ; Kembali kepada si pemanggil Cetak_Kar ENDP ; END Procedures END Proses

Contoh penulisan aplikasi yang menggunakan Macro seperti berikut ini :

Cetak_Kar MACRO Kar MOV CX,3

MOV AH,02 MOV DL,Kar Ulang :

INT 21h ; Cetak Karakter LOOP Ulang

ENDM ; End Macro

;---; ; Program : MAC1.ASM ;

(13)

; Untuk mencetak ; ; huruf 'UMB' ;

;---; .MODEL SMALL

.CODE ORG 100h Proses:

Cetak_Kar 'U' ; Cetak Huruf U Cetak_Kar 'M' ; Cetak Huruf M Cetak_Kar 'B' ; Cetak Huruf B INT 20h

END Proses

Selanjutnya setelah anda mengetik dan menyimpan tiga file tadi, maka sekarang kita kompilasi dengan cara sebagai berikut :

TASM INKAL.ASM TLINK /t INKAL

TASM PROC_KAR.asm TLINK /t proc_kar TASM mac1.asm TLINK /t mac1.asm

(14)

Referensi

Dokumen terkait

Barelang Sejahtera Prima Pekanbaru agar menjadikan presepsi pelanggan outlet menjadi lebih baik dengan memperhatikan standar waktu penyaluran produk yang telah ditetapkan

Nanang Fatah, Konsep Manajemen Berbasis Sekolah dan Dewan Sekolah , Bandung: Pustaka Bai Quraisy, 2007, h.. Perencanaan yang dilakukan kepala Madrasah dan para wakilnya

Bagaimana perbandingan hasil pengujian konsumsi bahan bakar antara bahan bakar bensin dan LPG dengan menempuh jarak 1,4 km, kondisi jalan yang rata dan juga dengan kecepatan

Sedangkan penentuan karakter morfologi dan pewarnaan gram bakteri simbion, dilakukan berdasarkan Microbiology Laboratory Manual dan menunjukkan bahwa morfologi sel bakteri

Laju penyematan nitrogen dinyatakan dengan aktivitas reduksi asetilin (ARA) seperti pada Tabel 1. Cara pengairan tidak merubah kemampuan penyematan nitrogen. Dengan genangan

Dari latar belakang historis dan karakteristik ilmu ekonomi pertanian di atas, maka ilmu ekonomi pertanian dapat didefinisikan sebagai salah satu cabang ilmu sosial yang

dalam Wilayah Propinsi Daerah Tingkat I Jawa Barat pada umumnya dan Wilayah Kecamatan Tangerang, Wilayah Kecamatan Batuceper, sebagian Wilayah Kecamatan Curug,

Berdasarkan latar belakang penelitian yang telah diuraikan di atas mengidentifikasi bahwa konseling kognitif perilaku yang merupakan wilayah kajian dalam bimbingan dan