Translate

Jumat, 14 Juni 2013

Program Sederhana Dengan Bahasa Assembler ( Bahasa mesin )

Banyak sekali bahasa pemograman yang digunakan oleh seorang programer untuk menciptakan sebuah program diantara nya bahasa pemograman Visual Basic  , Php , Java , Turbo pascal , C++ dan banyak lagi bahasa pemograman .  Salah satunya bahasa mesin yang disebut ( assembler ) . Program ini biasanya  dibuat dengan menggunakan aplikasi seperti Flat Assembler atau langsung dari CMD yang memang sudah ada dalam sistem operasi Windows kali ini saya akan mencoba membuat sebuah program sederhana dengan menggunakan command yang disediakan oleh windows.

Baiklah langsung saja kita coba langkah –langkah dalam pembuatan program sederhana menggunakan bahasa assembly atau yang sering disebut bahasa mesin.

Langkah 1

Klik tombol START pada windows kemudian cari Run lalu ketikan pada kolom pengisian yang ada pada Run seperti gambar dibawah ini ,  kemudian klik OKE atau takan Enter pada keyboard.

Langkah 2

Setelah muncul tampilan seperti dibawah , langsung saja ketikan debug.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
org         100h
 
jmp        mulai
 
tampilan              db '', 13,10
 
db '                                                   _________________ ', 13,10
 
db '                                                   by:SURIADI     ', 13,10
 
db '         Oo===================== MENU UTAMA =======================oO', 13,10
 
db '         ||                                                        ||', 13,10
 
db '         ||   1) Menghapus Layar                                   ||', 13,10
 
db '         ||   2) Menampilkan Urutan Abjad AAABBC                   ||', 13,10
 
db '         ||   3) Mengalikan Bilangan 2 dan 2                       ||', 13,10
 
db '         ||   4) Menampilkan Biodata Anda                          ||', 13,10
 
db '         ||   5) Selesai                                           ||', 13,10
 
db '         ||                                                        ||', 13,10
 
db '         ||                                                        ||', 13,10
 
db '         ||                                                        ||', 13,10
 
db '         Oo========================================================oO', 13,10
 
db '                         Pilihan Anda [1...5]:$'
 
mulai:                    mov       ah, 09h        ; service number 09h untuk mencetak string
 
mov       dx, tampilan   ; mengisi data string
 
int           21h                ; menampilkan di monitor
 
;aksi input pilihan menu oleh user
 
pilih:                      mov       ah,07h         ; service number 07h untuk input karakter
 
int           21h                ; menampilkan
 
cmp       al,'1'              ; bandingkan input dengan karakter '1'
 
je            hapuslayar     ; jika sama lompat ke prosedur hapuslayar
 
cmp       al,'2'              ; bandingkan input dengan karakter '2'
 
je            urutanabjad    ; jika sama lompat ke prosedur urutanabjad
 
cmp       al,'3'              ; bandingkan input dengan karakter '3'
 
je            perkalian42    ; jika sama lompat ke prosedur perkalian42
 
cmp       al,'4'              ; bandingkan input dengan karakter '4'
 
je            tampilbiodata  ; jika sama lompat ke prosedur tampilbiodata
 
cmp       al,'5'              ; bandingkan input dengan karakter '7'
 
je            keluar          ; jika sama lompat ke prosedur keluar
 
call          kembali        ; panggil prosedur kembali
 
;Untuk mengosongkan layar
 
kosonglayar:      mov       ah,07h         ; service number 07h untuk menghapus layar ke bawah
 
mov       al,00h           ; hapus semua baris
 
mov       bh,71h         ; tampilkan warna background putih tulisan biru
 
mov       ch,00h          ; Baris batas atas 0
 
mov       cl,00h           ; Kolom batas atas 0
 
mov       dh,0ffh        ; baris batas bawah off
 
mov       dl,0ffh        ; kolom batas bawah off
 
int           10h                ; Menjalankan interupt 10h
 
ret
 
kursor: mov       ah,02h         ; Service number 02h (untuk menentukan posisi kursor)
 
mov       dh,00h         ; Nilai baris posisi kursor (baris 0)
 
mov       dl,00h           ; Nilai kolom posisi kursor (kolom 0)
 
mov       bh,00h         ; Nilai nomor halaman layar (halaman 0)
 
int           10h                ; Inisialisasi bentuk dan posisi kursor saat itu
 
ret
 
hapuslayar :        call          kosonglayar    ; kosongkan layar
 
call          kursor          ; letakkan kursor di awal
 
mov       ah,07h         ; servis input
 
int           21h                ; tampilkan
 
call          kembali        ; kembali ke menu
 
komenhuruf      db           '',13,10
 
db           '',13,10
 
db           'Pencetakan karakter membentuk string AAABBC menggunakan program looping .....',13,10
 
db           '',13,10
 
db           '$',13,10
 
urutanabjad:      call          kosonglayar    ; kosongkan layar
 
call          kursor          ; letakkan kursor di awal
 
mov       ah, 09h        ; servis 09h menampilkan string
 
mov       dx, komenhuruf ; ambil data string komenhuruf
 
int           21h                ; tampilkan
 
mov       cx,03h          ; pengulangan 3 kali
 
mov       bl,04h           ; nilai awal bl = 04
 
mov       dl,40h           ; masukkan nilai 40 ke reg dl
 
ulang1:                 dec         bl                   ; kurangi dl dengan 1
 
push      bx                  ; simpan bx ke stack
 
inc          dl                   ; tambah dl dengan 1
 
ulang2:                 dec         bl                   ; kurangi bl dengan 1
 
mov       ah,02h         ; beri nilai ah dengan service 02h - pencetakan karakter
 
int           21h                ; tampilkan
 
jne         ulang2          ; lompat ke ulang2
 
pop        bx                  ; ambil nilai bx dari stack
 
loop       ulang1          ; kebali ke baris ulang1
 
mov       ah,07h         ; servis input
 
int           21h                ; tampilkan
 
call          kembali        ; kembali ke menu
 
komenkali           db           '',13,10
 
db           '',13,10
 
db           'Perkalian antara bilangan 2 dan 2 menggunakan Assembler.',13,10
 
db           'Hasilnya adalah ....',13,10
 
db           '',13,10
 
db           '$',13,10
 
perkalian42: call kosonglayar    ; kosongkan layar
 
call kursor ; panggil kursor ke awal halaman
 
mov ah, 09h  ; servis pencerakan string
 
mov dx, komenkali  ; ambil data string di komenkali
 
int 21h ; tampilkan
 
mov bl,02h ; nilai bl = 04
 
mov al,02h ; nilai al = 02
 
mul bl ; kalikan nilai bl dengan al
 
mov dl,al ; masukkan nilai al ke dl untuk dicetak
 
add dl,30h ; tambahkan nilai dl dengan 30
 
mov       ah,02h         ; servis pencetakan karakter
 
int           21h                ; tampilkan
 
mov       ah,07h         ; servis input
 
int           21h                ; tampilkan
 
call          kembali        ; kembali ke menu
 
komengenap     db           '',13,10
 
db '',13,10
 
db 'Bilangan genap antara 0 sampai dengan 8 adalah.....',13,10
 
db ',13,10
 
db '$',13,10
 
bilgenap08:
 
call          kosonglayar    ; kosongkan layar
 
call          kursor          ; letakkan kursor di awal halaman
 
mov       ah, 09h        ; servis 09h pencetakan string
 
mov       dx, komengenap ; ambil data string dari komengenap
 
int           21h                ; tampilkan
 
mov       cx,05h          ; pengulangan 5 kali
 
mov       ah,02h         ; servis pencetakan karakter
 
mov       dl,30h           ; masukkan nilai 30h ke dl
 
a: int 21h                ; tampilkan
 
add        dl,02h           ; tambah dl dengan 2
 
loop       a                     ; lompat ke baris a sebanyak pengulangan
 
mov       ah,07h         ; servis input
 
int           21h                ; tampilkan
 
call          kembali        ; kembali ke menu
 
; berikut adalah data yang akan ditampilkan pada menu Biodata
 
biodata:               db           '      ___________________________________________________________________',13,10
 
db '      //=========================== BIODATA ============================\\',13,10
 
db '      ||                                                                ||',13,10
 
db           '      ||    Nama       : suriadi                                        ||',13,10
 
db           '      ||    Alamat     : Jl. KH. Ahmad Dahlan No.81 Pekanbaru           ||',13,10
 
db           '      ||    Umur       : 20 tahun                                       ||',13,10
 
db           '      ||    Pekerjaan  : mahasiswa                                      ||',13,10
 
db           '      ||    Hobi       : berenang                                       ||',13,10
 
db           '      ||    email      : adie putra 11@gmail.com                        ||',13,10
 
db           '      ||    Website    : maz adie.blogspot.com                          ||',13,10
 
db           '      ||                                                                ||',13,10
 
db           '      Oo================================================================oO$',13,10
 
tampilbiodata:   call          kosonglayar    ; kosongkan layar
 
call kursor ; letakkan kursor di awal
 
mov dx,biodata  ; ambil data string dari biodata
 
mov  ah,09h ; servis 09h untuk pencetakan string
 
int 21h ; tampilkan
 
mov  ah,07h ; servis input
 
int 21h ; tampilkan
 
call kembali  ; kembali ke menu
 
keluar: int 20h ; program selesai
 
kembali : call kosonglayar    ; kosongkan layar
 
call  kursor  ; letakkan kursor di awal
 
jmp mulai ; lompat ke prosedur mulai (menampilkan menu)
Setelah kode diatas dimasukan kedalam Cmd maka bila dijalankan akan muncul tampilan seperti dibawah ini
Tampilan program setelah dieksekusi:
Jika di tekan angka 1 (satu ) pada keyboard maka program akan merespon dan menghapus layar atau menghapus layar pada Cmd seperti tampilan dibawah ini  .

Langkah 3

Untuk kembali kemenu semula tekan angka 1 (satu ) maka program akan menu awal kemudian jika anda ingin mengeksekusi perintah yang kedua yankni menampilkan percetakan karakter membentuk string AAABBC menggunakan program looping atau pengulangan maka tekan angka 2 (Dua )pada keyboard dan akan muncul tampilan seperti dibawah ini.
Untuk kembali kemenu awal tekan satu pada keyboard setelah itu lakukan eksekusi berikutnya dengan menekan angka  3 ( tiga ) pada keyboard maka program akan merespon seperti tampilan dibawah ini yakni perkalian antara bilangan 2 dan 2.

Langkah 4

Setelah itu seperti biasa jika kita akan kembali ke menu awal maka kita tekan angka 1 (satu ) pada keyboard dan untuk menampilkan biodata kita seperti dibawah ini maa kita harus menekan tombol 4 (empat ) pada keyboard maka program akan langsung mengeksekusi dengan menampilkan tampilan seperti dibawah ini.
Dari program ini maka kita harus tekan tombol 5 ( lima ) pada keyboard maka program langsung keluar atau logout.
Sekian tutorial dari saya semoga dapat bermanfaat!. Mungkin dari tutorial diatas yang tadi nya hanya ingin belajar pemograman yang berbasiskan visual maka dengan adanya tutorial di atas maka anda ingin mencoba bahasa pemograman yang berbasiskan bahasa mesin atau assembler dan saya harap anda dapat  mengembangkannya lebih dari tutorial diatas .

Tidak ada komentar:

MAKALAH INTERNET

BAB I PENDAHULUAN   1.1       Larat Belakang Pada awalnya Internet merupakan jaringan komputer yang dibentuk oleh Departemen Pertahana...

COMMENT