Sumber : http://rizkycheaterstar.blogspot.com/2012/02/cara-memasang-background-bergerak-pada.html#ixzz1qWI43PJR POLI TEKNIK NEGERI PADANG '10: 03/01/2012 - 04/01/2012

Minggu, 25 Maret 2012

PRAKTEK MICROPROSESOR

Oleh Kelompok 11:
Sholeh Nov Putra (1001083024)
Rudi Andriano (1001083011)

Dasar Teori
1.2.1 Bahasa Assambler




Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic opcode), operan 1 dan operan2 serta komentar (jika diperlukan)
Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.
CJNE R0,#22H, Tasmi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RR A ;1 buah operand
NOP ; tidak memerlukan operand
Semua instruksi tersebut dapat dibagi menjadi lima kelompok menurut fungsinya, yaitu:
Instruksi Pemindahan Data
*      Instruksi Aritmatika
*      Instruksi Logika dan Manipulasi Bit
*      Instruksi Percabangan
*      Instruksi Stack, I/O, dan Kontrol




1.2.2 Debug dan Interupt
A. Debug
Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
Perintah-perintah debug antara lain :
1.      Q (Quit)
Mengembalikan ke dos prompt
C> Debug
-Q
A>
2.      H (Hexa)
Melaksanakan perintah penambahan dan pengurangan terhadap dua bilangan hexa
C>Debug
-H 2204 2012
4216 01F2
3.      A (assambler)
Perintah untuk menulis program assambler
C>Debug
-a
17C0:0100 mov ax,12
4.      R(Register)
Digunakan untuk mengetahui isi masing-masing register
C>debug
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000 SI=0000  DI=0000
DS=17C0  ES=17C0  SS=17C0  CS=17C0  IP=0100  NV UP EI PL NZ NA PO NC
17C00:0100 B81200 mov ax,12
Perintah ini juga bisa untuk mengetahui atau memperbaharui isi register tertentu
C>Debug
rCX
CX 0000
:0100
C>Debug
rCX
CX 0100
:
5.      N(Name)
Perintah untuk membuat atau merubah nama file
C>Debug
-N D:Coba.com
6.      W(Writing)
Menulis program dan data ke dalam disc
C>Debug
-w
writing 0008 bytes
7.      G (Go)
Menjalankan program (misal program cetak huruf A)
C>Debug
-G
A
Program terminated normally
8.      T(Trace)
Menjalankan program perbaris dengan menampilkan register dipakai
C>Debug
-T
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000 SI=0000  DI=0000
DS=17C0  ES=17C0  SS=17C0  CS=17C0  IP=0100  NV UP EI PL NZ NA PO NC
17C00:0100 B81200 mov ax,12
9.      U (Unsamble)
Menampilkan list dari program yang sedang berjalan
U[tempat awal program yang diinginkan]L[panjang program/1 byte akhir dari alamat akhir program]

B. Interupt (Int)
Perintah ini merupakan pemanggilan subroutin yang sudah tersedia di memori komputer
Subroutine yang dapat dipanggil menggunakan perintah int (Interup) terdiri dari dua jenis yaitu:
1.      Bios Interrupt, yaitu Int yang disediakan oleh BIOS(Basic Input Output System). Int yang termasuk dalam Interrupt Bios adalah Int 0 hingga 1F hexa
2.      DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operation System). Yang termasuk dalam Interrupt ini adalah Interrupt diatas 1F hexa
Interupt DOS yang sering digunakan adalah Int 20h dan Int 21h service 02h
a.       Int 20h
Int ini mempunyai tugas memberhentikan proses komputer terhadap suatu program COM.
b.      Int 21h service 21h
Int 21h mempunyai banyak tugas sehingga dibagi menjadi berbagai macam service number. Service 02h merupakan bagian tugas Int 21h yang sering dipakai yaitu untuk mencetak sebuah huruf ke monitor.
Untuk menjalankan fungsi Int 21h service 02h harus memenuh syarat sebagai berikut:
1.      Register AH harus berisi service number dari Int 21h yang akan dijalankan (02h)
2.      Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak.
C. Instruksi-Instruksi Dasar
1. Instruksi Pengalamatan
MOV tujuan,asal (tujuan: register/memori, asal:angka/register/memori)
Misal MOV AX,1234H (register AX diisi angka 1234 H)
2. Instruksi Penjumlahan
            INC tujuan
            Misal INC DX (DX = DX+1)
ADD tujuan,asal
Misal ADD AX,1234 (AX=AX+1234H)
3. Instruksi Pengurangan
            DEC tujuan
            Misal DEC AX (AX=AX-1)
SUB tujuan,asal         
            Misal SUB AX,1200H (AX = AX-1200H)  

Langkah Kerja:
1.      Klik start, dari tampilan menu pilih Run. Ditampilan menu Run, ketik command dan selanjutnya pilih OK.
2.      Selanjutnya ketik huruf A/a, lalu tekan Enter, maka akan keluar tampilan -> 0C1E:0100.
0C1E : adalah alamat segmen.
0100 : adalah alamat offset

3.      Lalu ketikan perintah seperti di bawah ini:
MOV AH, 02  ( merupakan fungsi 2 dari INT 21)
MOV DL, 41  (41 merupakan kode ASCII dari huruf A)
INT 21            (Interupt 21 fungsi 2)
INT 20            (merupakan perintah untuk memberhentikan program)
v  Lalu setelah itu ketikkan huruf G, maka hasilnya adalah huruf A.
v  Program Terminated Normally, dengan cara mengetikkan U 0100 L 08.
Keterangan : 0100  : adalah alamat awal.
                                 08      : adalah alamat akhir yang terdiri dari 8 larik.
            Dengan menggunakan program ini kita bias melihat Segmen Ofset, Opcode dan Instruksi.
v  Kemudian ketikkan huruf T : yang berfungsi untuk melihat eksekusi setiap instruksi.
v  Selanjutnya ketikkan huruf Q : yang berfungsi untuk keluar dari debug.
4.      Perintah selanjutnya:
MOV CX, 05
MOV AH, 02
MOV DL, 41
INT 21
LOOP 0103
INT 20
v  Lalu setelah itu ketikkan huruf G, maka hasilnya adalah huruf AAAA.
5.      Perintah selanjutnya (percobaan kelompok):
MOV CX, 02
MOV AH, 02
MOV DL, 05
INT 21
LOOP 0107
INT 20
v  Hasilnya adalah gambar wajik.
v  Lalu ketikkan U 0100 L 0D



ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0C1E
0103
0000
0000
0002
0000
FFEE
0103
0C1E
0105
0200
0000
0002
0000
FFEE
0105
0C1E
0107
0200
0000
0002
0005
FFEE
0107

ALAMAT

SEGMEN
OFFSET
INSTRUKSI
OPCODE
KETERANGAN
0C1E
0100
MOV CX, 0002
B90200
1.    02 = 2 kali perulangan.

0C1E
0103
MOV AH, 02
B402
0C1E
0105
MOV DL, 05
B205
0C1E
0107
INT 21
CD21
0C1E
0109
LOOP 0107
E2FC
0C1E
010B
INT 20
CD20
6.      Perintah selanjutnya :
MOV CX, 1A
MOV DL, 41
MOV AH, 02
INT 21
INC DL
LOOP 0105
INT 20
v  Hasilnya adalah ABCDEFGHIJKLMNOPQRSTUVWXYZ.
v  Lalu ketikkan U 0100 L 0F








ALAMAT

SEGMEN
OFFSET
INSTRUKSI
OPCODE
KETERANGAN
0C1E
0100
MOV CX, 001A
B91A
1.    1A = 1 * 16 +10 *16
      = 16 + 10
      = 26
Ket: 26 kali perulangan.
2.    41 = “A”
3.    INC DL= 41+1=42
                 42+1=43
s/d stop

0C1E
0103
MOV DL, 41
B241
0C1E
0105
MOV AH, 02
B402
0C1E
0107
INT 21
CD21
0C1E
0109
INC DL
FEC2
0C1E
010B
LOOP 0105
E2F8
0C1E
010D
INT 20
CD20

ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0C1E
0103
0000
0000
001A
0000
FFEE
0103
0C1E
0105
0000
0000
001A
0041
FFEE
0105
0C1E
0107
0200
0000
001A
0041
FFEE
0107


7.      Perintah selanjutnya :
MOV CX, 1A
MOV DL, 5A
MOV AH, 02
INT 21
DEC DL
LOOP 0105
INT 20
v  Hasilnya adalah ZYXWVUTSRQPONMLKJIHGFEDCBA
v  Lalu ketikkan U 0100 L 0F

8.      Perintah selanjutnya :
MOV BX, 0000                                               
MOV DL, 41
MOV CX 0003
MOV AH, 02
INT 21
LOOP  0108
INC DL
CMP DL, SB
JNE 0105
MOV DL, OP
MOV AH, O2
INT 21
MOV DL, 0A
INT 21
INC BX
CMP BX,000B
JLE 0103
INT 20


BX                         0          (menentukan larik atau baris)
DL                         41        (cetak huruf A)
CX                         03        (cetak huruf A sebanyak 3x)
AH                         02        (cetak huruf B sebanyak 3x sampai huruf Z)
               INT 21
       DL                      DLFDL + 1     
                            DL = SB
                            Y




          T            DL = SB




                             Y
               DL                  0D    (enter)
                      CETAK
               DL                 OA     (enter)
                      CETAK
                BX                   BX + 1




      Y                       BX <= 11                        (baris ke-11)
                                       T                   (ket: apabila belum sampai baris 11,maka cetak dari A)
                                  STOP

9.      OPERASI STACK
Perintah selanjutnya :
MOV AH, 02
MOV CX, 1A
MOV DL, 41
INT 21
MOV BL, DL
MOV DL, 20
INT 21
MOV DL, BL
INC DL
LOOP 0107
INT 20
v  Hasilnya adalah A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
v  Lalu ketikkan U 0100 L 17












SEGMEN
OFFSET
INSTRUKSI
OPCODE
KETERANGAN
0C1E
0100
MOV AH, 02
B402
1.    MOV BL, DL = BL(spasi) berfungsi untuk menyimpan fungsi DL.
2.    MOV DL, BL = berfungsi untuk mengembalikan fungsi dari DL.
0C1E
0103
MOV CX, 001A
B91A00
0C1E
0105
MOV DL, 41
B241
0C1E
0107
INT 21
CD21
0C1E
0109
MOV BL, DL
88B3
0C1E
010B
MOV DL, 20
B220
0C1E
010D
INT 21
CD21
0C1E
010F
MOV DL, BL
88DA
0C1E
0111
INC DL
FEC2
0C1E
0113
LOOP 0107
E2F2
0C1E
0115
INT 20
CD20

ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0C1E
0103
0000
0000
0000
0000
FFEE
0103
0C1E
0105
0200
0000
001A
0000
FFEE
0105
0C1E
0107
0200
0000
001A
0041
FFEE
0107



10.  Perintah selanjutnya :
MOV AH, 02
MOV CX, 1A
MOV DL, 41
INT 21
PUSH DX
MOV DL, 20
INT 21
POP DX
INC DL
LOOP 0107
INT 20
v  Hasilnya adalah A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
v  Lalu ketikkan U 0100 L 15

SEGMEN
OFFSET
INSTRUKSI
OPCODE
KETERANGAN
0C1E
0100
MOV AH, 02
B402

0C1E
0102
MOV CX, 001A
B91A00
0C1E
0105
MOV DL, 41
B241
0C1E
0107
INT 21
CD21
0C1E
0109
PUSH DX
52
0C1E
010A
MOV DL, 20
B220
0C1E
010C
INT 21
CD21
0C1E
010E
POP DX
5A
0C1E
010F
INC DL
FEC2
0C1E
0111
LOOP 0107
E2F2
0C1E
0113
INT 21
CD20

ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0C1E
0103
0200
0000
0000
0000
FFEE
0103
0C1E
0105
0200
0000
001A
0000
FFEE
0105
0C1E
0107
0200
0000
001A
0041
FFEE
0107