SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
TA.2008/2009 Semester-1
                        CE113 Computer System (3 credits)
                           Dosen: S.N.M.P. Simamora, ST., MT.
                           Program studi: Teknik Komputer
                             Jurusan Teknologi Informasi
                                  Bandung – 2008




               Tuntunan Praktis Bahasa Rakitan menggunakan
                          Turbo Assembler 2.0

Reference:
    Irvine, Kip R., ”Assembly Language for Intel-Based Computers Fifth Edition”, Florida
    International University, School of Computing and Information Sciences, Pearson
    Education, Inc., 2007.
    Simamora, S.N.M.P., ”Diktat Kuliah KOM244 Sistem Mikroprosesor (3 sks)”,
    Jurusan Ilmu Komputer, F-MIPA, UNAI, Bandung, 2006.
    Simamora, S.N.M.P., ”Diktat Kuliah SK-303 Organisasi dan Arsitektur Komputer (2
    sks)”, Departemen Teknik Elektro, Fak.Teknik, ITHB, Bandung, 2002.




                       Skema Register Data dalam prosesor x86

Arsitektur Keluarga Intel 8086:

      General-Purpose Register
AH/AL AX (EAX)    Accumulator
BH/BL BX (EBX)    Base
CH/CL CX (ECX)    Counter
DH/DL DX (EDX)    Data


                                                                                      1
Perbedaan register General-purpose Register:
AH/AL, memiliki panjang @ 8-bit
AX, memiliki panjang 16-bit
EAX, memiliki panjang 32-bit

           Segment     Register
AH/AL AX (EAX)         Code Segment
BH/BL BX (EBX)         Stack Segment
CH/CL CX (ECX)         Data Segment
DH/DL DX (EDX)         Extra Segment


     Pointer Register                  Stack Register
SI (ESI) Source Index             SP (ESP) Stack Pointer
DI (EDI) Destination Index        BP (EBP) Base Pointer
IP (Instruction Pointer)


  Status Register
FLAGS    Status Flags



Klasifikasi register (panjang 16 bit) pada mesin x86:
   register AX: dikenal juga sebagai Accumulator (Acc), dibagi atas dua bagian
   (masing-masing 8 bit), yaitu: AH dan AL.
   Misalkan: isi AH bernilai 0, lalu di-copy-kan ke AL; lalu selanjutnya isi AL ditambahkan
   dengan 1. Sehingga isi terbaru AX bernilai 1.
   MOV AH,0
   MOV AL,AH
   INC AL

   register BX: register ini terdiri dari dua bagian, yaitu BH dan BL. Register BX dapat
   mengakses langsung ke lokasi dari main-memory.
   Contoh:
   MOV AX,0
   MOV DS,AX
   MOV BX,9
   MOV AL,[BX]
   Keterangan mnemonic-instruction: pertama-tama AX diisi nilai 0, kemudian di-copy ke
   register DS; selanjutnya BX diisi nilai 9, dan isi lokasi memori 9 (bukan isi register BX)
   sekarang di-copy-kan ke AL. Ini artinya, register BX berlaku sebagai link ke alamat memori.

   register CX: register ini digunakan untuk pencacahan dan operasi string, dan
   menampung panjang program yang sedang aktif. Seperti halnya register AX dan BX,
   register ini terbagi dua, CH dan CL.




                                                                                            2
register DX: register ini dimanfaatkan untuk lalu-lintas (IN dan OUT) data pada port
   komputer. Biasanya juga boleh digunakan untuk menampung data yang akan
   ditampilkan ke output-devices, misalkan monitor atau printer, bahkan speaker.


   register SI: register yang digunakan sebagai pointer ke memori.
   Misalkan:
   mov   ax,o
   mov   ds,ax
   mov   si,10
   mov   al,[si]

   register BP: register yang dapat digunakan juga sebagai pointer ke memori, namun
   perbedaannya terletak pada tujuan peletakan pointer tersebut, yakni ke register
   stack yang disebut register SP.


   register SP: register yang digunakan untuk keperluan stack. Stack sendiri
   pengertiannya adalah area di memori yang digunakan untuk menyimpan nilai
   sebelum dan sesudah proses data terakhir.



Klasifikasi instruksi lompatan (Looping Instruction):
   JMP, instruksi lompatan tak bersyarat
   Contoh: JMP 0108 ⇒ langsung melompat ke alamat memori segment=0108
   CMP, instruksi lompatan dengan bersyarat
   Contoh: CMP [op-1],[op-2]
   Beberapa jenis instruksi Lompatan Bersyarat seperti:
   • JE (Jump if Equal)
   • JNE (Jump if Not Equal)
   • JG (Jump if Greater than)
   • JNG (Jump if Not Greater than)
   • JNGE (Jump if Not Greater than Equal)
   • JE (Jump if less than)
   • JLE (Jump if less or Equal than)
   • JNL (Jump if Not Less or Equal)
   • JNLE (Jump if Not Less or Equal)
   • JA (Jump if Above)
   • JNA (Jump if Not Above)
   • JNAE (Jump if Not Above or Equal)
   • JNS (Jump On Not Sign)
   • JC (Jump On Carry)
   • JNC (Jump On Not Carry)
   • JCXZ (Jump If CX=0)
   • JB (Jump If Below)
   • JBE (Jump If Below or Equal)
   • JNBE (Jump If Not Below or Equal)
   • JZ (Jump On Zero)


                                                                                     3
•   JNZ (Jump On Not Zero)
•   JS (Jump On Sign)




                Skema Relasi Komponen Utama dalam Komputer




Struktur Program dalam Turbo Assembler
Diformulasikan sebagai berikut:
label instruksi/directive operand                 ;komentar

label : nama simbolik yang boleh dipakai atau tidak bergantung kebutuhan.
      Instruksi tentu saja mutlak, operand dapat saja tidak ada, atau satu buah
      atau dua buah, tergantung instruksi yang digunakan.

komentar: yang diawali dengan titik koma boleh optional digunakan. Ini biasanya
     digunakan untuk memberi keterangan/maksud sebuah baris kode yang
     dituliskan.

Dengan demikian, yang terpenting adalah instruksi (mnemonic-instruction) dan
operand-nya.

Nilai numerik yang dimasukkan ke dalam operand, dapat berupa decimal atau
hexadecimal, namun umumnya dalam hexadecimal.

Contoh:
karakter.asm
.MODEL SMALL
.CODE
ORG 100h
iniLoh :
 MOV AH,02h ;Nilai servis untuk mencetak karakter
 MOV DL,'S' ;DL diisi Karakter 'S' yang akan dicetak
 INT 21h ;menampilkan ke monitor
 INT 20h ;kendali dikembalikan ke sistem operasi
END iniLoh




                                                                             4
Tampilan proses penerjemahan dan eksekusi program:




Proses linking di atas menggunakan instruksi:
tlink /t nama_object_file

Dan keluarannya akan men-set program aplikasi tersebut ke dalam platform DOS,
dengan catatan blok inisialisasi program dituliskan sebagai berikut:
.MODEL SMALL
.CODE
ORG 100h

Bedakan dengan source-program berikut, dimana jika di-linking dengan instruksi ini
tlink /t nama_object_file

halo.asm
dosseg
.model small
.stack 100h
.data
 kalimat db 'Apakabar Indonesia..' ,13,10,'$'

.code
 mov ax,@data
 mov ds,ax
 mov ah,9
 mov dx,offset kalimat
 int 21h
 mov ah,4ch
 int 21h
end

akan menampilkan pesan error, sehingga proses linking digunakan instruksi berikut
ini:
tlink nama_object_file


                                                                                     5
Tampilan proses penerjemahan dan eksekusi aplikasi pemrograman:




Penjelasan: maksud bilangan 13,10,’$’ adalah instruksi untuk ganti baris baru (‘new-
line’) dengan demikian cursor akan diletakkan pada baris baru di bawahnya.

Contoh lain:
sandi.asm
DOSSEG
.MODEL SMALL
.CODE
ORG 100H
mulamula:
  JMP mulai
IniDia DB 'Selamat dan Sukses..',13,10,'$'
ItuDia DB 'Password: ',13,10,'$'
mulai:
  MOV AH,09H
  MOV DX,OFFSET ItuDia
  INT 21H            ;mencetak ItuDia
awal:
  MOV AH,07H
  INT 21H
  CMP AL,'s'
  JE sini1
  CMP AL,'S'
  JNE awal
sini1:
  MOV AH,07H
  INT 21H
  CMP AL,'n'
  JE sini2
  CMP AL,'N'
  JNE awal
sini2:
  MOV AH,07H
  INT 21H
  CMP AL,'m'
  JE sini3


                                                                                  6
CMP AL,'M'
  JNE awal
sini3:
  MOV AH,07H
  INT 21H
  CMP AL,'p'
  JE sini4
  CMP AL,'P'
  JNE awal
sini4:
  MOV AH,09H
  MOV DX,OFFSET IniDia
  INT 21H
  INT 20H
END mulamula



Proses penerjemahan dilakukan dengan perintah sbb:
Proses kompilasi:
tasm sandi.asm

Proses linking:
tlink /t sandi

apabila proses linking digunakan perintah:
tlink sandi
maka, akan muncul pesan: No Stack, ini disebabkan, proses linking akan
mengubah object-file menjadi file executed-program dalam tipe file .EXE, sedangkan
source-code di-create menggunakan model agar ukuran file dalam ukuran 64KB,
dengan kata lain dalam tipe file: .COM; oleh sebab itu proses linking menggunakan
instruksi: tlink /t nama_file.

Program di atas akan menanyakan password yang diketikkan user tanpa
menampilkannya ke layar komputer, tanpa menekan tombol ENTER (↵). Jika salah,
maka tetap akan meminta password sampai kata sandi yang diisikan benar. Password
berdasar isi blok program adalah: snmp.

Tampilan proses penerjemahan dan hasil eksekusi program:




                                                                                7
Agar lebih jelasnya, perlu diketahui beberapa hal sebagai berikut:
   Stack: secara sederhananya, dalam pemrograman bahasa rakitan, stack
   merupakan tempat menampung isi register. Stack pada tipe file: .COM terdapat di
   akhir segment, dan saat pertama sekali program dijalankan Stack Pointer akan
   langsung menuju byte terakhir dari segment. Sedangkan pada tipe file: .EXE, user
   harus me-create stack sendiri dan mengalihkan pointer stack ke tempat yang
   diinginkan.
   Perbedaan aplikasi pemrograman untuk tipe file .COM dengan .EXE adalah
   ukuran (size) file tersebut. Untuk tipe file .COM, maksimal membutuhkan satu
   segment dengan luas sebesar 64KB. Sedangkan untuk tipe file .EXE tidak
   dibatasi berapa segment, oleh sebab itu ukuran filenya di atas 64KB (karena bisa
   lebih dari satu segment).



Segment Directive
Segment Directive yang paling sederhana adalah: DOSSEG, MODEL, STACK, DATA dan
CODE.
DOSSEG: menyebabkan segmen dalam program sebuah bahasa rakitan
          dikelompokkan sesuai dengan pembagian segment oleh DOS (Disk
          Operating System). Biasanya sebuah program dengan bahasa rakitan
          akan berjalan baik jika dimulai dengan kata DOSSEG. Dan patut diingat
          bahwa segment directive ini tidak diperlukan saat program bergabung
          dengan bahasa pemrograman tingkat tinggi.

.MODEL: menunjukkan model memori untuk bahasa rakitan yang menggunakan
         segment directive yang sederhana. Model yang tersedia adalah:
         • tiny: baik program maupun data harus masuk dalam segment yang
            sama yaitu 64KB. Tipe kode dan data adalah near.
         • small: program harus masuk dalam segment tunggal 64KB, dan data
            harus masuk dalam segment tunggal lainnya sebesar 64KB. Tipe kode
            dan data adalah near.
         • medium: program dapat lebih besar dari 64KB, tetapi data harus
            masuk dalam segment tunggal sebesar 64KB. Kode program ber-tipe
            far, sedangkan data adalah near.
         • compact: program harus tepat tertampung dalam segmentasi 64KB,
            sebaliknya data-nya dapat lebih besar dari 64KB. Tipe kode adalah
            near, sedangkan data adalah far. Disamping itu, data array tidak boleh
            melebihi 64KB.
         • large: baik program maupun data dapat lebih besar dari 64KB, tetapi
            array data tidak dapat melebihi 64KB. Tipe kode program dan data
            adalah far.
         • huge: kode program dan data sangat besar sekali melebihi 64KB,
            dan array untuk data dapat melebihi 64KB. Tipe kode program dan
            data adalah far, dan pointer untuk array juga harus far.

.STACK: berguna untuk mengontrol stack. Contohnya adalah sebagai berikut,
misalkan dituliskan:

                                                                                 8
.STACK 200h
 Ini artinya, didefinisikan stack sebesar 200heksadesimal (atau ini senilai dengan
 DEC512) byte panjangnya. Umumnya ini sudah cukup bagi sebuah aplikasi
 program, namun jika menginginkan ukuran stack lebih besar lagi, maka tinggal
 mengganti nilai 200h.

.DATA: ini adalah bagian sebagai tempat untuk medefinisikan data yang akan
          dipakai dalam blok program.
          Misalkan:
          .DATA
             Nilai   dw 100
             Counter dw?
             Pesan   db 0dh,0ah,’Hello apakabar...’,odh,0ah,’$’

.CODE: ini adalah bagian inti dari sebuah program bahasa rakitan; dimana semua
           kode/sintaks ditulis pada blok ini.



Mekanisme dalam Pendeklarasian Data

Pada Bahasa Rakitan, setiap data dikelompokkan dalam blok .DATA, dengan
mendefinisikannya sebagai berikut beserta panjang data di memori yang dibutuhkan:
DB    : 1 byte
DW    : 2 byte = 1 word
DD    : 4 byte = 1 double word
DF, DP: 6 byte = 1 far pointer word
DQ    : 8 byte = 1 quardword
DT    : 10 byte
1 byte identik 1 karakter, direpresentasikan 8 bit, karena menggunakan sistem
pengkode ASCII 8-bit.

Dengan catatan, untuk penulisan tersebut, tidak ada perbedaan antara penulisan
menggunakan capital-case maupun lower-case.

Kadangkala, seorang pemrograman perlu mensiasati setiap tipe data yang
digunakannya untuk efisiensi alokasi memori saat program dieksekusi.

   Algoritma Perpindahan Data dalam Bahasa Rakitan
   Yang dimaksud dengan algoritma adalah langkah-langkah atau tahapan-tahapan
   yang dilakukan dalam pemecahan suatu persoalan dan dapat diimplementasikan
   dalam sebuah blok pemrograman.
   Misalkan dalam perintah mnemonic-instruction berikut ini:
   MOV AX,0      ;copy-kan numerik 0 ke isi register AX
   MOV BX,5      ;copy-kan numerik 5 ke isi register BX
   MOV AX,BX     ;copy-kan isi register BX ke isi register AX

   Dengan demikian, dapat disimpulkan setiap perintah MOV bukan menandakan
   suatu nilai berpindah tempat, namun yang sebenarnya adalah nilai tersebut di-
   duplikasikan.


                                                                                9
Skemanya agar lebih jelas, dapat diuraikan sebagai berikut:




   Pertukaran nilai antara dua operand
   Misalkan: isi dua register akan dipertukarkan, maka mnemonic-struction-nya
   dituliskan sebagai berikut,
   XCHG AX,DX

   Instruksi ini dapat juga digantikan menggunakan instruksi lain seperti berikut ini:
   PUSH AX
   MOV AX,DX
   POP DX

   Instruksi PUSH, artinya menampungkan isi dari sebuah register ke puncak stack,
   sedangkan instruksi POP, artinya menampungkan isi dari puncak stack ke sebuah
   register.

   Keadaan ini sering juga disebut dengan swaping, yakni mempertukarkan isi dari
   kedua operand atau register.


Contoh Program:

   Menampilkan karakter ke layar komputer.
   Misalkan, sebelumnya ditampilkan karakter ‘S’, maka isi register DL digantikan
   dengan heksa 53 atau 0x53.
   karakt3r.asm
   .MODEL SMALL
   .CODE
   ORG 100h
   iniLah :
    MOV AH,02h ;Nilai servis untuk mencetak karakter
    MOV DL,53h ;DL diisi Karakter 'S' yang akan dicetak
    INT 21h ;menampilkan ke monitor
    INT 20h ;kendali dikembalikan ke sistem operasi
   END iniLah



                                                                                     10
Tampilan skema penerjemahan & eksekusi program:




Menampilkan string ke layar komputer
halo.asm
dosseg
.model small
.stack 100h
.data
 kalimat db 'Apakabar Indonesia..' ,13,10,'$'

.code
 mov ax,@data
 mov ds,ax
 mov ah,9
 mov dx,offset kalimat
 int 21h
 mov ah,4ch
 int 21h
end




Menampilkan karakter/string dari user
Program berikut akan menampilkan setiap yang diketikkan oleh user ke layar
komputer; untuk mengakhirinya, cukup tekan ENTER dua kali.
isilah.asm
dosseg
.model small
.stack 100h
.code
lagi:
        mov ah,1
        int 21h
        cmp al,13
        jz selesai
        mov dl,al


                                                                       11
int 21h
           jmp lagi
selesai:
           mov ah,4ch
           int 21h
end

Untuk melakukan proses linking, gunakan instruksi:
tlink isilah

Tampilan proses penerjemahan dan eksekusi program:




Kesimpulan, proses linking untuk instruksi ’tlink /t’ digunakan atau tidak,
dilihat dari sintaks berikut ini:
.stack 100h


Menanyakan jumlah dari sebuah statement ’2+3’
ijumlah.asm
DOSSEG
.MODEL SMALL
.CODE
ORG 100H
mulamula:
  JMP mulai
IniDia DB 'Anda benar..',13,10,'$'
ItuDia DB '2 + 3 = ',13,10,'$'
mulai:
  MOV AH,09H
  MOV DX,OFFSET ItuDia
  INT 21H             ;mencetak ItuDia
awal:
  MOV AH,07H
  INT 21H
  CMP AL,'5'
  JE sini4
  CMP AL,'P'


                                                                        12
JNE awal
sini4:
  MOV AH,09H
  MOV DX,OFFSET IniDia
  INT 21H
  INT 20H
END mulamula

Perhatikan, karena sintak mnemonic-instruction memunculkan ’ORG 100h’, maka
proses linking menggunakan: ’tlink /t nama_object_file’.

Tampilan proses penerjemahan dan eksekusi program:




Program akan terus meminta hasil yang benar, sepanjang user belum memberi
input ’5’.



Menampilkan alternatif pilihan jawaban dari user.
pilihlah.asm
dosseg
.model small
.stack 100h
.data
 hari db 'Jam menunjukkan pk14.30 (y/t)? $'
 sudah db 13,10,'Segera berkemas-kemas untuk kuliah Pak SNS..',13,10,'$'
 belum db 13,10,'Selesaikan tugas yang akan dikumpulkan!',13,10,'$'
.code
        mov ax,@data
        mov ds,ax
        mov dx,OFFSET hari
        mov ah,09h
        int 21h
        mov ah,1h
        int 21h
        cmp al,'y'
        jz oke

                                                                           13
cmp al,'Y'
      jnz nehi
oke:
  mov dx,OFFSET sudah
  jmp selesai
nehi:
  mov dx,OFFSET belum
selesai:
         mov ah,9h
         int 21h
         mov ah,4ch
         int 21h
end



Tampilan proses penerjemahan dan eksekusi program:




Perhatikan, jika sintak berikut
..
 sudah db 13,10,'Segera berkemas-kemas untuk kuliah Pak SNS..',13,10,'$'
 belum db 13,10,'Selesaikan tugas yang akan dikumpulkan!',13,10,'$'
..
Dihilangkan ekspresi:
.. 13,10, ..
Maka, pada saat pilihlah.exe dijalankan, maka string yang dihasilkan tidak
ditempatkan pada baris baru, melainkan langsung digandengkan dengan akhir
dari jawaban yang diketikkan.
Apabila pilihlah.asm di-edit pada baris terakhir:
..
selesai:
        mov ah,9h
        int 21h
        mov ah,4ch
        int 21h
end

                                                                       14
Digantikan dengan sintaks berikut:
        ..
        selesai:
                mov ah,9h
                int 21h
                int 20h
        end
        Lalu disimpankan dengan nama siiplah.asm, maka saat siiplah.exe
        dijalankan dan user memberi input, akan tertampil pesan error:




        Ini menandakan, bahwa instruksi:
        ..
               int 21h
               int 20h
        ..
        Tidak tepat digunakan mengingat initial-state menggunakan ukuran file .EXE
        bukan .COM.


Interrupt (INT)
Instruksi interrupt, artinya kendali dari Control Unit (CU), saat sebuah program sedang
berjalan, akan diambil alih oleh sistem operasi.
Klasifikasi interrupt dibagi atas dua yaitu:
        BIOS Interrupt (mengambil alih isi dari ROM), yaitu interrupt yang disediakan oleh
        Basic Input Output System (BIOS). Yang tergolong dalam interrupt ini adalah int
        0h s.d int 1fh.
        DOS Interrupt (mengambil alih isi dari RAM), yaitu interrupt yang disediakan oleh
        DOS (Disk Operating System), yaitu nomot interrupt di atas int 1fh, termasuk int
        20h dan int 21h.




        ..


   ..




                                                                                       15

Mais conteúdo relacionado

Mais procurados

Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
ratna46
 
Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)
rdbmn
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman c
adhifatra agussalim
 

Mais procurados (19)

Pascal buku
Pascal bukuPascal buku
Pascal buku
 
Makalah karakteristk set instruksi
Makalah karakteristk set instruksiMakalah karakteristk set instruksi
Makalah karakteristk set instruksi
 
Tugas Pemograman Berbasis Komputer
Tugas Pemograman Berbasis KomputerTugas Pemograman Berbasis Komputer
Tugas Pemograman Berbasis Komputer
 
Arsitektur dan desain set
Arsitektur dan desain setArsitektur dan desain set
Arsitektur dan desain set
 
Algoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/OutputAlgoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/Output
 
Set instruksi
Set instruksiSet instruksi
Set instruksi
 
Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
 
Mode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain PengalamatanMode Pengalamatan & Permasalahan Desain Pengalamatan
Mode Pengalamatan & Permasalahan Desain Pengalamatan
 
SET INSTRUKSI
SET INSTRUKSISET INSTRUKSI
SET INSTRUKSI
 
Algoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - PendahuluanAlgoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - Pendahuluan
 
Analisis Semantik - P6
Analisis Semantik - P6Analisis Semantik - P6
Analisis Semantik - P6
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasi
 
Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)Set intruksi (posting di slideshare)
Set intruksi (posting di slideshare)
 
Kumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik KompilasiKumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik Kompilasi
 
Set instruksi organisasi dan arsitektur
Set instruksi organisasi dan arsitekturSet instruksi organisasi dan arsitektur
Set instruksi organisasi dan arsitektur
 
Modul Pemrograman Bahasa Assembly
Modul Pemrograman Bahasa AssemblyModul Pemrograman Bahasa Assembly
Modul Pemrograman Bahasa Assembly
 
Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2
 
Handout rakitan
Handout rakitanHandout rakitan
Handout rakitan
 
Teknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman cTeknik kompilasi dalam bahasa pemograman c
Teknik kompilasi dalam bahasa pemograman c
 

Destaque

Destaque (14)

Graph theory
Graph theoryGraph theory
Graph theory
 
Manajemen Teknologi-1
Manajemen Teknologi-1Manajemen Teknologi-1
Manajemen Teknologi-1
 
Teori himpunan
Teori himpunanTeori himpunan
Teori himpunan
 
introduction about computer systems
introduction about computer systemsintroduction about computer systems
introduction about computer systems
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 
Resistor dan Kapasitor
Resistor dan KapasitorResistor dan Kapasitor
Resistor dan Kapasitor
 
Addressing dan subnetting on IPv4 with Class C
Addressing dan subnetting on IPv4 with Class CAddressing dan subnetting on IPv4 with Class C
Addressing dan subnetting on IPv4 with Class C
 
Silabus konsep teknologi
Silabus konsep teknologiSilabus konsep teknologi
Silabus konsep teknologi
 
Model Eksponensial dan Logaritma
Model Eksponensial dan LogaritmaModel Eksponensial dan Logaritma
Model Eksponensial dan Logaritma
 
Number Systems in Computer Systems
Number Systems in Computer SystemsNumber Systems in Computer Systems
Number Systems in Computer Systems
 
about Pulse Code Modulation
about Pulse Code Modulationabout Pulse Code Modulation
about Pulse Code Modulation
 
konsep mnemonic-instruction
konsep mnemonic-instructionkonsep mnemonic-instruction
konsep mnemonic-instruction
 
Exercise Course
Exercise CourseExercise Course
Exercise Course
 
Importance du contenu redactionnel pour le referencement : par AxeNet
Importance du contenu redactionnel pour le referencement : par AxeNetImportance du contenu redactionnel pour le referencement : par AxeNet
Importance du contenu redactionnel pour le referencement : par AxeNet
 

Semelhante a Tutor Tasm2

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdfMODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
Lalu Delsi Samsumar
 
2ka04 Kelompok 7
2ka04 Kelompok 72ka04 Kelompok 7
2ka04 Kelompok 7
Nugroho W
 
Kelompok 7 2ka04
Kelompok 7 2ka04Kelompok 7 2ka04
Kelompok 7 2ka04
Nugroho W
 
Mari belajar assembly
Mari belajar assemblyMari belajar assembly
Mari belajar assembly
Titin Martini
 

Semelhante a Tutor Tasm2 (20)

Arsitektur mikroprosesor
Arsitektur mikroprosesorArsitektur mikroprosesor
Arsitektur mikroprosesor
 
Bahasa rakitan 2
Bahasa rakitan 2Bahasa rakitan 2
Bahasa rakitan 2
 
Set intruksi ppt
Set intruksi pptSet intruksi ppt
Set intruksi ppt
 
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdfMODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1.pdf
 
Jeni slides intro1-bab01-pengenalan
Jeni slides intro1-bab01-pengenalanJeni slides intro1-bab01-pengenalan
Jeni slides intro1-bab01-pengenalan
 
Pert 9
Pert 9Pert 9
Pert 9
 
Arsitektur Set Instruksi dan CPU
Arsitektur Set Instruksi dan CPUArsitektur Set Instruksi dan CPU
Arsitektur Set Instruksi dan CPU
 
Arsitektur Set Instruksi dan CPU
Arsitektur Set Instruksi dan CPUArsitektur Set Instruksi dan CPU
Arsitektur Set Instruksi dan CPU
 
Pert.2 instruksi mesin dan program
Pert.2 instruksi mesin dan programPert.2 instruksi mesin dan program
Pert.2 instruksi mesin dan program
 
2ka04 Kelompok 7
2ka04 Kelompok 72ka04 Kelompok 7
2ka04 Kelompok 7
 
Kelompok 7 2ka04
Kelompok 7 2ka04Kelompok 7 2ka04
Kelompok 7 2ka04
 
Mari belajar assembly
Mari belajar assemblyMari belajar assembly
Mari belajar assembly
 
Assembly
AssemblyAssembly
Assembly
 
Mp 4 mode-pengalamatan
Mp 4 mode-pengalamatanMp 4 mode-pengalamatan
Mp 4 mode-pengalamatan
 
Modul praktikum instruksi dasar
Modul praktikum instruksi dasarModul praktikum instruksi dasar
Modul praktikum instruksi dasar
 
Mikroprosesor 08
Mikroprosesor 08Mikroprosesor 08
Mikroprosesor 08
 
Mikroprosesor 08
Mikroprosesor 08Mikroprosesor 08
Mikroprosesor 08
 
Mikroprosesor
MikroprosesorMikroprosesor
Mikroprosesor
 
Softskill tugas 3
Softskill tugas 3Softskill tugas 3
Softskill tugas 3
 
Set intruksi
Set intruksiSet intruksi
Set intruksi
 

Mais de S N M P Simamora

Mais de S N M P Simamora (20)

Power over-ethernet
Power over-ethernetPower over-ethernet
Power over-ethernet
 
Algoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statementAlgoritma dan Pemrograman-I_konsep_statement
Algoritma dan Pemrograman-I_konsep_statement
 
Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1Organisasi Komputer bhn kuliah m10 r1
Organisasi Komputer bhn kuliah m10 r1
 
sns_paper complement_r010110
sns_paper complement_r010110sns_paper complement_r010110
sns_paper complement_r010110
 
Cover paper Algoritma Symboolon
Cover paper Algoritma SymboolonCover paper Algoritma Symboolon
Cover paper Algoritma Symboolon
 
Algoritma Symboolon
Algoritma SymboolonAlgoritma Symboolon
Algoritma Symboolon
 
Silabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi KomputerSilabus TIK-2303 Arsitektur & Organisasi Komputer
Silabus TIK-2303 Arsitektur & Organisasi Komputer
 
Wireless Sensor Network
Wireless Sensor NetworkWireless Sensor Network
Wireless Sensor Network
 
Konsep Process dalam Sistem Komputer
Konsep Process dalam Sistem KomputerKonsep Process dalam Sistem Komputer
Konsep Process dalam Sistem Komputer
 
ADICT 2012 Presentation
ADICT 2012 PresentationADICT 2012 Presentation
ADICT 2012 Presentation
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Silabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem OperasiSilabus TIK-3601 Sistem Operasi
Silabus TIK-3601 Sistem Operasi
 
Teknologi Wireless dan Karakteristiknya
Teknologi Wireless dan KarakteristiknyaTeknologi Wireless dan Karakteristiknya
Teknologi Wireless dan Karakteristiknya
 
Formula Matematika
Formula MatematikaFormula Matematika
Formula Matematika
 
Konsep dan Terapan Matriks
Konsep dan Terapan MatriksKonsep dan Terapan Matriks
Konsep dan Terapan Matriks
 
Telekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi InformasiTelekomunikasi dan Teknologi Informasi
Telekomunikasi dan Teknologi Informasi
 
Bahasa Pemrograman dan Script
Bahasa Pemrograman dan ScriptBahasa Pemrograman dan Script
Bahasa Pemrograman dan Script
 
UBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi InformasiUBB105 Pengantar Teknologi Informasi
UBB105 Pengantar Teknologi Informasi
 
KOM356 Jaringan Komputer
KOM356 Jaringan KomputerKOM356 Jaringan Komputer
KOM356 Jaringan Komputer
 
Modul Mikroelektronika
Modul Mikroelektronika Modul Mikroelektronika
Modul Mikroelektronika
 

Último

HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
nabilafarahdiba95
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
RIMA685626
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
novibernadina
 

Último (20)

TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
 
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat  UI 2024
Tim Yang Lolos Pendanaan Hibah Kepedulian pada Masyarakat UI 2024
 
Regresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptxRegresi Linear Kelompok 1 XI-10 revisi (1).pptx
Regresi Linear Kelompok 1 XI-10 revisi (1).pptx
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
DAFTAR PPPK GURU KABUPATEN PURWOREJO TAHUN 2024
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
 
SOAL PUBLIC SPEAKING UNTUK PEMULA PG & ESSAY
SOAL PUBLIC SPEAKING UNTUK PEMULA PG & ESSAYSOAL PUBLIC SPEAKING UNTUK PEMULA PG & ESSAY
SOAL PUBLIC SPEAKING UNTUK PEMULA PG & ESSAY
 
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMKAksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
Aksi Nyata Disiplin Positif Keyakinan Kelas untuk SMK
 
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptxPendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
Pendidikan-Bahasa-Indonesia-di-SD MODUL 3 .pptx
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
Membaca dengan Metode Fonik - Membuat Rancangan Pembelajaran dengan Metode Fo...
 
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
 
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
Intellectual Discourse Business in Islamic Perspective - Mej Dr Mohd Adib Abd...
 
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfProv.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - Perencanaan
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 

Tutor Tasm2

  • 1. TA.2008/2009 Semester-1 CE113 Computer System (3 credits) Dosen: S.N.M.P. Simamora, ST., MT. Program studi: Teknik Komputer Jurusan Teknologi Informasi Bandung – 2008 Tuntunan Praktis Bahasa Rakitan menggunakan Turbo Assembler 2.0 Reference: Irvine, Kip R., ”Assembly Language for Intel-Based Computers Fifth Edition”, Florida International University, School of Computing and Information Sciences, Pearson Education, Inc., 2007. Simamora, S.N.M.P., ”Diktat Kuliah KOM244 Sistem Mikroprosesor (3 sks)”, Jurusan Ilmu Komputer, F-MIPA, UNAI, Bandung, 2006. Simamora, S.N.M.P., ”Diktat Kuliah SK-303 Organisasi dan Arsitektur Komputer (2 sks)”, Departemen Teknik Elektro, Fak.Teknik, ITHB, Bandung, 2002. Skema Register Data dalam prosesor x86 Arsitektur Keluarga Intel 8086: General-Purpose Register AH/AL AX (EAX) Accumulator BH/BL BX (EBX) Base CH/CL CX (ECX) Counter DH/DL DX (EDX) Data 1
  • 2. Perbedaan register General-purpose Register: AH/AL, memiliki panjang @ 8-bit AX, memiliki panjang 16-bit EAX, memiliki panjang 32-bit Segment Register AH/AL AX (EAX) Code Segment BH/BL BX (EBX) Stack Segment CH/CL CX (ECX) Data Segment DH/DL DX (EDX) Extra Segment Pointer Register Stack Register SI (ESI) Source Index SP (ESP) Stack Pointer DI (EDI) Destination Index BP (EBP) Base Pointer IP (Instruction Pointer) Status Register FLAGS Status Flags Klasifikasi register (panjang 16 bit) pada mesin x86: register AX: dikenal juga sebagai Accumulator (Acc), dibagi atas dua bagian (masing-masing 8 bit), yaitu: AH dan AL. Misalkan: isi AH bernilai 0, lalu di-copy-kan ke AL; lalu selanjutnya isi AL ditambahkan dengan 1. Sehingga isi terbaru AX bernilai 1. MOV AH,0 MOV AL,AH INC AL register BX: register ini terdiri dari dua bagian, yaitu BH dan BL. Register BX dapat mengakses langsung ke lokasi dari main-memory. Contoh: MOV AX,0 MOV DS,AX MOV BX,9 MOV AL,[BX] Keterangan mnemonic-instruction: pertama-tama AX diisi nilai 0, kemudian di-copy ke register DS; selanjutnya BX diisi nilai 9, dan isi lokasi memori 9 (bukan isi register BX) sekarang di-copy-kan ke AL. Ini artinya, register BX berlaku sebagai link ke alamat memori. register CX: register ini digunakan untuk pencacahan dan operasi string, dan menampung panjang program yang sedang aktif. Seperti halnya register AX dan BX, register ini terbagi dua, CH dan CL. 2
  • 3. register DX: register ini dimanfaatkan untuk lalu-lintas (IN dan OUT) data pada port komputer. Biasanya juga boleh digunakan untuk menampung data yang akan ditampilkan ke output-devices, misalkan monitor atau printer, bahkan speaker. register SI: register yang digunakan sebagai pointer ke memori. Misalkan: mov ax,o mov ds,ax mov si,10 mov al,[si] register BP: register yang dapat digunakan juga sebagai pointer ke memori, namun perbedaannya terletak pada tujuan peletakan pointer tersebut, yakni ke register stack yang disebut register SP. register SP: register yang digunakan untuk keperluan stack. Stack sendiri pengertiannya adalah area di memori yang digunakan untuk menyimpan nilai sebelum dan sesudah proses data terakhir. Klasifikasi instruksi lompatan (Looping Instruction): JMP, instruksi lompatan tak bersyarat Contoh: JMP 0108 ⇒ langsung melompat ke alamat memori segment=0108 CMP, instruksi lompatan dengan bersyarat Contoh: CMP [op-1],[op-2] Beberapa jenis instruksi Lompatan Bersyarat seperti: • JE (Jump if Equal) • JNE (Jump if Not Equal) • JG (Jump if Greater than) • JNG (Jump if Not Greater than) • JNGE (Jump if Not Greater than Equal) • JE (Jump if less than) • JLE (Jump if less or Equal than) • JNL (Jump if Not Less or Equal) • JNLE (Jump if Not Less or Equal) • JA (Jump if Above) • JNA (Jump if Not Above) • JNAE (Jump if Not Above or Equal) • JNS (Jump On Not Sign) • JC (Jump On Carry) • JNC (Jump On Not Carry) • JCXZ (Jump If CX=0) • JB (Jump If Below) • JBE (Jump If Below or Equal) • JNBE (Jump If Not Below or Equal) • JZ (Jump On Zero) 3
  • 4. JNZ (Jump On Not Zero) • JS (Jump On Sign) Skema Relasi Komponen Utama dalam Komputer Struktur Program dalam Turbo Assembler Diformulasikan sebagai berikut: label instruksi/directive operand ;komentar label : nama simbolik yang boleh dipakai atau tidak bergantung kebutuhan. Instruksi tentu saja mutlak, operand dapat saja tidak ada, atau satu buah atau dua buah, tergantung instruksi yang digunakan. komentar: yang diawali dengan titik koma boleh optional digunakan. Ini biasanya digunakan untuk memberi keterangan/maksud sebuah baris kode yang dituliskan. Dengan demikian, yang terpenting adalah instruksi (mnemonic-instruction) dan operand-nya. Nilai numerik yang dimasukkan ke dalam operand, dapat berupa decimal atau hexadecimal, namun umumnya dalam hexadecimal. Contoh: karakter.asm .MODEL SMALL .CODE ORG 100h iniLoh : MOV AH,02h ;Nilai servis untuk mencetak karakter MOV DL,'S' ;DL diisi Karakter 'S' yang akan dicetak INT 21h ;menampilkan ke monitor INT 20h ;kendali dikembalikan ke sistem operasi END iniLoh 4
  • 5. Tampilan proses penerjemahan dan eksekusi program: Proses linking di atas menggunakan instruksi: tlink /t nama_object_file Dan keluarannya akan men-set program aplikasi tersebut ke dalam platform DOS, dengan catatan blok inisialisasi program dituliskan sebagai berikut: .MODEL SMALL .CODE ORG 100h Bedakan dengan source-program berikut, dimana jika di-linking dengan instruksi ini tlink /t nama_object_file halo.asm dosseg .model small .stack 100h .data kalimat db 'Apakabar Indonesia..' ,13,10,'$' .code mov ax,@data mov ds,ax mov ah,9 mov dx,offset kalimat int 21h mov ah,4ch int 21h end akan menampilkan pesan error, sehingga proses linking digunakan instruksi berikut ini: tlink nama_object_file 5
  • 6. Tampilan proses penerjemahan dan eksekusi aplikasi pemrograman: Penjelasan: maksud bilangan 13,10,’$’ adalah instruksi untuk ganti baris baru (‘new- line’) dengan demikian cursor akan diletakkan pada baris baru di bawahnya. Contoh lain: sandi.asm DOSSEG .MODEL SMALL .CODE ORG 100H mulamula: JMP mulai IniDia DB 'Selamat dan Sukses..',13,10,'$' ItuDia DB 'Password: ',13,10,'$' mulai: MOV AH,09H MOV DX,OFFSET ItuDia INT 21H ;mencetak ItuDia awal: MOV AH,07H INT 21H CMP AL,'s' JE sini1 CMP AL,'S' JNE awal sini1: MOV AH,07H INT 21H CMP AL,'n' JE sini2 CMP AL,'N' JNE awal sini2: MOV AH,07H INT 21H CMP AL,'m' JE sini3 6
  • 7. CMP AL,'M' JNE awal sini3: MOV AH,07H INT 21H CMP AL,'p' JE sini4 CMP AL,'P' JNE awal sini4: MOV AH,09H MOV DX,OFFSET IniDia INT 21H INT 20H END mulamula Proses penerjemahan dilakukan dengan perintah sbb: Proses kompilasi: tasm sandi.asm Proses linking: tlink /t sandi apabila proses linking digunakan perintah: tlink sandi maka, akan muncul pesan: No Stack, ini disebabkan, proses linking akan mengubah object-file menjadi file executed-program dalam tipe file .EXE, sedangkan source-code di-create menggunakan model agar ukuran file dalam ukuran 64KB, dengan kata lain dalam tipe file: .COM; oleh sebab itu proses linking menggunakan instruksi: tlink /t nama_file. Program di atas akan menanyakan password yang diketikkan user tanpa menampilkannya ke layar komputer, tanpa menekan tombol ENTER (↵). Jika salah, maka tetap akan meminta password sampai kata sandi yang diisikan benar. Password berdasar isi blok program adalah: snmp. Tampilan proses penerjemahan dan hasil eksekusi program: 7
  • 8. Agar lebih jelasnya, perlu diketahui beberapa hal sebagai berikut: Stack: secara sederhananya, dalam pemrograman bahasa rakitan, stack merupakan tempat menampung isi register. Stack pada tipe file: .COM terdapat di akhir segment, dan saat pertama sekali program dijalankan Stack Pointer akan langsung menuju byte terakhir dari segment. Sedangkan pada tipe file: .EXE, user harus me-create stack sendiri dan mengalihkan pointer stack ke tempat yang diinginkan. Perbedaan aplikasi pemrograman untuk tipe file .COM dengan .EXE adalah ukuran (size) file tersebut. Untuk tipe file .COM, maksimal membutuhkan satu segment dengan luas sebesar 64KB. Sedangkan untuk tipe file .EXE tidak dibatasi berapa segment, oleh sebab itu ukuran filenya di atas 64KB (karena bisa lebih dari satu segment). Segment Directive Segment Directive yang paling sederhana adalah: DOSSEG, MODEL, STACK, DATA dan CODE. DOSSEG: menyebabkan segmen dalam program sebuah bahasa rakitan dikelompokkan sesuai dengan pembagian segment oleh DOS (Disk Operating System). Biasanya sebuah program dengan bahasa rakitan akan berjalan baik jika dimulai dengan kata DOSSEG. Dan patut diingat bahwa segment directive ini tidak diperlukan saat program bergabung dengan bahasa pemrograman tingkat tinggi. .MODEL: menunjukkan model memori untuk bahasa rakitan yang menggunakan segment directive yang sederhana. Model yang tersedia adalah: • tiny: baik program maupun data harus masuk dalam segment yang sama yaitu 64KB. Tipe kode dan data adalah near. • small: program harus masuk dalam segment tunggal 64KB, dan data harus masuk dalam segment tunggal lainnya sebesar 64KB. Tipe kode dan data adalah near. • medium: program dapat lebih besar dari 64KB, tetapi data harus masuk dalam segment tunggal sebesar 64KB. Kode program ber-tipe far, sedangkan data adalah near. • compact: program harus tepat tertampung dalam segmentasi 64KB, sebaliknya data-nya dapat lebih besar dari 64KB. Tipe kode adalah near, sedangkan data adalah far. Disamping itu, data array tidak boleh melebihi 64KB. • large: baik program maupun data dapat lebih besar dari 64KB, tetapi array data tidak dapat melebihi 64KB. Tipe kode program dan data adalah far. • huge: kode program dan data sangat besar sekali melebihi 64KB, dan array untuk data dapat melebihi 64KB. Tipe kode program dan data adalah far, dan pointer untuk array juga harus far. .STACK: berguna untuk mengontrol stack. Contohnya adalah sebagai berikut, misalkan dituliskan: 8
  • 9. .STACK 200h Ini artinya, didefinisikan stack sebesar 200heksadesimal (atau ini senilai dengan DEC512) byte panjangnya. Umumnya ini sudah cukup bagi sebuah aplikasi program, namun jika menginginkan ukuran stack lebih besar lagi, maka tinggal mengganti nilai 200h. .DATA: ini adalah bagian sebagai tempat untuk medefinisikan data yang akan dipakai dalam blok program. Misalkan: .DATA Nilai dw 100 Counter dw? Pesan db 0dh,0ah,’Hello apakabar...’,odh,0ah,’$’ .CODE: ini adalah bagian inti dari sebuah program bahasa rakitan; dimana semua kode/sintaks ditulis pada blok ini. Mekanisme dalam Pendeklarasian Data Pada Bahasa Rakitan, setiap data dikelompokkan dalam blok .DATA, dengan mendefinisikannya sebagai berikut beserta panjang data di memori yang dibutuhkan: DB : 1 byte DW : 2 byte = 1 word DD : 4 byte = 1 double word DF, DP: 6 byte = 1 far pointer word DQ : 8 byte = 1 quardword DT : 10 byte 1 byte identik 1 karakter, direpresentasikan 8 bit, karena menggunakan sistem pengkode ASCII 8-bit. Dengan catatan, untuk penulisan tersebut, tidak ada perbedaan antara penulisan menggunakan capital-case maupun lower-case. Kadangkala, seorang pemrograman perlu mensiasati setiap tipe data yang digunakannya untuk efisiensi alokasi memori saat program dieksekusi. Algoritma Perpindahan Data dalam Bahasa Rakitan Yang dimaksud dengan algoritma adalah langkah-langkah atau tahapan-tahapan yang dilakukan dalam pemecahan suatu persoalan dan dapat diimplementasikan dalam sebuah blok pemrograman. Misalkan dalam perintah mnemonic-instruction berikut ini: MOV AX,0 ;copy-kan numerik 0 ke isi register AX MOV BX,5 ;copy-kan numerik 5 ke isi register BX MOV AX,BX ;copy-kan isi register BX ke isi register AX Dengan demikian, dapat disimpulkan setiap perintah MOV bukan menandakan suatu nilai berpindah tempat, namun yang sebenarnya adalah nilai tersebut di- duplikasikan. 9
  • 10. Skemanya agar lebih jelas, dapat diuraikan sebagai berikut: Pertukaran nilai antara dua operand Misalkan: isi dua register akan dipertukarkan, maka mnemonic-struction-nya dituliskan sebagai berikut, XCHG AX,DX Instruksi ini dapat juga digantikan menggunakan instruksi lain seperti berikut ini: PUSH AX MOV AX,DX POP DX Instruksi PUSH, artinya menampungkan isi dari sebuah register ke puncak stack, sedangkan instruksi POP, artinya menampungkan isi dari puncak stack ke sebuah register. Keadaan ini sering juga disebut dengan swaping, yakni mempertukarkan isi dari kedua operand atau register. Contoh Program: Menampilkan karakter ke layar komputer. Misalkan, sebelumnya ditampilkan karakter ‘S’, maka isi register DL digantikan dengan heksa 53 atau 0x53. karakt3r.asm .MODEL SMALL .CODE ORG 100h iniLah : MOV AH,02h ;Nilai servis untuk mencetak karakter MOV DL,53h ;DL diisi Karakter 'S' yang akan dicetak INT 21h ;menampilkan ke monitor INT 20h ;kendali dikembalikan ke sistem operasi END iniLah 10
  • 11. Tampilan skema penerjemahan & eksekusi program: Menampilkan string ke layar komputer halo.asm dosseg .model small .stack 100h .data kalimat db 'Apakabar Indonesia..' ,13,10,'$' .code mov ax,@data mov ds,ax mov ah,9 mov dx,offset kalimat int 21h mov ah,4ch int 21h end Menampilkan karakter/string dari user Program berikut akan menampilkan setiap yang diketikkan oleh user ke layar komputer; untuk mengakhirinya, cukup tekan ENTER dua kali. isilah.asm dosseg .model small .stack 100h .code lagi: mov ah,1 int 21h cmp al,13 jz selesai mov dl,al 11
  • 12. int 21h jmp lagi selesai: mov ah,4ch int 21h end Untuk melakukan proses linking, gunakan instruksi: tlink isilah Tampilan proses penerjemahan dan eksekusi program: Kesimpulan, proses linking untuk instruksi ’tlink /t’ digunakan atau tidak, dilihat dari sintaks berikut ini: .stack 100h Menanyakan jumlah dari sebuah statement ’2+3’ ijumlah.asm DOSSEG .MODEL SMALL .CODE ORG 100H mulamula: JMP mulai IniDia DB 'Anda benar..',13,10,'$' ItuDia DB '2 + 3 = ',13,10,'$' mulai: MOV AH,09H MOV DX,OFFSET ItuDia INT 21H ;mencetak ItuDia awal: MOV AH,07H INT 21H CMP AL,'5' JE sini4 CMP AL,'P' 12
  • 13. JNE awal sini4: MOV AH,09H MOV DX,OFFSET IniDia INT 21H INT 20H END mulamula Perhatikan, karena sintak mnemonic-instruction memunculkan ’ORG 100h’, maka proses linking menggunakan: ’tlink /t nama_object_file’. Tampilan proses penerjemahan dan eksekusi program: Program akan terus meminta hasil yang benar, sepanjang user belum memberi input ’5’. Menampilkan alternatif pilihan jawaban dari user. pilihlah.asm dosseg .model small .stack 100h .data hari db 'Jam menunjukkan pk14.30 (y/t)? $' sudah db 13,10,'Segera berkemas-kemas untuk kuliah Pak SNS..',13,10,'$' belum db 13,10,'Selesaikan tugas yang akan dikumpulkan!',13,10,'$' .code mov ax,@data mov ds,ax mov dx,OFFSET hari mov ah,09h int 21h mov ah,1h int 21h cmp al,'y' jz oke 13
  • 14. cmp al,'Y' jnz nehi oke: mov dx,OFFSET sudah jmp selesai nehi: mov dx,OFFSET belum selesai: mov ah,9h int 21h mov ah,4ch int 21h end Tampilan proses penerjemahan dan eksekusi program: Perhatikan, jika sintak berikut .. sudah db 13,10,'Segera berkemas-kemas untuk kuliah Pak SNS..',13,10,'$' belum db 13,10,'Selesaikan tugas yang akan dikumpulkan!',13,10,'$' .. Dihilangkan ekspresi: .. 13,10, .. Maka, pada saat pilihlah.exe dijalankan, maka string yang dihasilkan tidak ditempatkan pada baris baru, melainkan langsung digandengkan dengan akhir dari jawaban yang diketikkan. Apabila pilihlah.asm di-edit pada baris terakhir: .. selesai: mov ah,9h int 21h mov ah,4ch int 21h end 14
  • 15. Digantikan dengan sintaks berikut: .. selesai: mov ah,9h int 21h int 20h end Lalu disimpankan dengan nama siiplah.asm, maka saat siiplah.exe dijalankan dan user memberi input, akan tertampil pesan error: Ini menandakan, bahwa instruksi: .. int 21h int 20h .. Tidak tepat digunakan mengingat initial-state menggunakan ukuran file .EXE bukan .COM. Interrupt (INT) Instruksi interrupt, artinya kendali dari Control Unit (CU), saat sebuah program sedang berjalan, akan diambil alih oleh sistem operasi. Klasifikasi interrupt dibagi atas dua yaitu: BIOS Interrupt (mengambil alih isi dari ROM), yaitu interrupt yang disediakan oleh Basic Input Output System (BIOS). Yang tergolong dalam interrupt ini adalah int 0h s.d int 1fh. DOS Interrupt (mengambil alih isi dari RAM), yaitu interrupt yang disediakan oleh DOS (Disk Operating System), yaitu nomot interrupt di atas int 1fh, termasuk int 20h dan int 21h. .. .. 15