ASSEMBLY (BAHASA RAKITAN)

Embed Size (px)

DESCRIPTION

Mencetak Karakter dengan atribut warna dan Mencetak karakter dengan operator Aritmatika "ADD"

Citation preview

TUGAS

ASSEMBLY

(BAHASA RAKITAN)

Dosen Pengampu : Pedruco Nunes, S. Kom.

DIANA ANANTASIA PIDI

NIM : 14110337

JURUSAN TEKNIK INFORMATIKA

SEKOLAH TINGGI ILMU KOMPUTER

ARTHA BUANA KUPANG

2015

PROGRAM I

Buka command promptPindah drive ke Drive D atau drive di mana tersimpan folder assembly . setelah berada pada drive D: pindah lagi ke directory / folder assembly.

Ketik dir untuk melihat isi directory/folder assembly. Hal ini perlu dilakukan untuk memastikan apakah file tasm.exe, tlink.exe, ada atau tidak agar turbo assembly bisa dijalankan.

Setelah yakin semua file yang diperlukan ada dalam folder assembly, maka selanjutnya ketik edit untuk masuk ke turbo assembly (masih dalam di D:\assembly)

Mulai mengetik source code untuk warna atribut merah dan biru.

Penjelasan bahasa program :

.MODEL SMALL

.CODE

ORG 100h

Proses :

MOV AH,09h ; Nilaiservisuntukmencetakkarakter

MOV AL,Z' ; AL = Karakteryang akandicetak

MOV BH,00h ; NomorHalamanlayar

MOV BL,49h ; Warnaatauatributdarikarakter

MOV CX,3h ; Banyaknyakarakteryang ingindicetak

INT 10h ; Kerjakan!!!

INT 20h ; Selesai! kembalikeDOS

END Proses

Jika source code-nya sudah selesai, simpan program tersebut.

Ketik nama file. Terserah mau diberi nama apa. Dalam hal ini saya memberi nama file program yang saya kerjakan warna.asm (tanpa tanda petik).

Keluar dari turbo assembly untuk kembali ke comand prompt atau bisa juga dengan menjalankan command prompt yang baru untuk compiling program dan running program.

Source code ASCII yang telah diketikkan perlu di-compile ke bentuk file object dengan extensi .OBJ, dari file object inilah nantinya dapat dijadikan ke bentuk file .EXE atau .COM.

Compile program dengan perintah tasm nama file (tanpa tanda petik). Contoh : tasm Diana.

Jika tidak ada error maka di bagian pesan kesalahan / error message akan diberitahu none atau tidak ada kesalahan.

File object yang telah terbentuk dengan TASM, belum dapat dieksekusi secara langsung. Untuk membuat file object ke bentuk file yang dapat dieksekusi (ektensi .COM atau .EXE) .

Jadi, setelah di-compile ke dalam bentuk diana.OBJ, compile lagi file diana.OBJ tersebut ked alam bentuk Diana.COM dan Diana.EXE agar programnya bisa dijalankan, dengan perintah tlink diana untuk file diana.EXE dan tlink/t diana untuk diana.COM

Setelah di-compile ke dalam bentuk EXE dan Com barulah program bisa dijalankan. Jalankan program dengan mengetik nama file.

Dan yang ada pada gambar di bawah ini adalah hasil / output dari source code yang saya buat di atas tadi, yaitu menampilkan A sebanyak 3 kali dan berlatar warna merah dan warna huruf biru.

PROGRAM II

Langkah-langkah untuk memulai, menyimpan, meng-compile, dan menjalankan masih sama seperti di atas. Namun atribut yang akan dicetak adalah warna pink dan hijau

Berikut source code dan output-nya.

Source code

.MODEL SMALL

.CODE

ORG 100h

Proses :

MOV AH,09h ; Nilaiservisuntukmencetakkarakter

MOV AL,Z' ; AL = Karakteryang akandicetak

MOV BH,00h ; NomorHalamanlayar

MOV BL,55h ; Warnaatauatributdarikarakter

MOV CX,3h ; Banyaknyakarakteryang ingindicetak

INT 10h ; Kerjakan!!!

INT 20h ; Selesai! kembalikeDOS

END Proses

Output

PROGRAM III

Langkah-langkah untuk memulai, menyimpan, meng-compile, dan menjalankan masih sama seperti di atas. Namun atribut yang akan dicetak adalah warna kuning dan hitam

Berikut source code dan output-nya.

Source code

.MODEL SMALL

.CODE

ORG 100h

Proses :

MOV AH,09h ; Nilaiservisuntukmencetakkarakter

MOV AL,Z' ; AL = Karakteryang akandicetak

MOV BH,00h ; NomorHalamanlayar

MOV BL,55h ; Warnaatauatributdarikarakter

MOV CX,3h ; Banyaknyakarakteryang ingindicetak

INT 10h ; Kerjakan!!!

INT 20h ; Selesai! kembalikeDOS

END Proses

Output

PROGRAM IV

Langkah-langkah untuk memulai, menyimpan, meng-compile, dan menjalankan masih sama seperti di atas. Project ini akan mencetak karakter dengan operasi aritmatika +.

Berikut source code dan output-nya.

Source code

.MODEL SMALL

.CODE

ORG 100h

Proses :

MOV AH,15h ; AH:=15h

MOV AL,4 ; AL:=4

ADD AH,AL ; AH:=AH+AL, jadi AH=19h

MOV AX,1234h ; NIlai AX:=1234h dan carry=0

MOV BX,0F221h ; Nilai BX:=F221h dan carry=0

ADD AX,BX ; AX:=AX+BX, jadi nilai AX=0455h

MOV AX,1234h ; AX = 1234h CF = 0

MOV BX,9ABCh ; BX = 9ABCh CF = 0

MOV CX,5678h ; BX = 5678h CF = 0

MOV DX,0DEF0h ; DX = DEF0h CF = 0

ADD CX,DX ; CX = 3568h CF = 1

ADC AX,BX ; AX = AX+BX+CF = ACF1

INC AL ; AL:=AL+1, nilai pada AL ditambah 1

INT 20h

END Proses

Output

Setelah project di-compile ke file OBJECT, cobalah untuk melihat kebenaran dari apa yang sudah diberikan dengan menggunakan debug. Pertama-tama ketikkanlah :

C:\>debug Tambah.com

-r < tekan enter >

AX=0000 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0100 NV UP EI PL NZ NA PO NC

3597:0100 B415 MOV AH,15

-t < tekan enter >

Penekanan "r" pada saat pertama kali digunakan untuk melihat nilai pada semua register. Pada baris pertama dapat anda lihat register yang dinamakan sebagai general purpose(AX,BX,CX dan DX). Register SP yang digunakan pada operasi stack menunjukkan nilai FFFE(akhir dari Segment), jadi operasi stack nantinya akan ditaruh pada posisi tersebut. Pada baris kedua dapat anda lihat keempat register segment, yaitu DS,ES,SS dan CS. Keempat register segment menunjukkan nilai yang sama yaitu 3597(mungkin berbeda pada komputer anda). Hal ini dikarenakan program kita adalah program com yang hanya menggunakan 1 segment. Pada baris kedua dapat juga anda lihat register IP bernilai 100h. Register IP menunjukkan bahwa kita sekarang sedang berada pada offset ke 100h dari segment aktif(CS:IP atau 3597:100).

Pada baris ketiga dapat anda lihat 3597:0100, nilai ini menunjukkan pasangan dari CS:IP. Setelah itu dapat anda lihat nilai B415 yang menujukkan isi dari alamat 3597:0100 adalah B4 sedangkan isi dari alamat 3597:1001 adalah 15. Nilai B415 ini sebenarnya merupakan suatu bahasa mesin untuk instruksi MOV AH,15. Jadi bahasa mesin untuk perintah "MOV AH,nilai" adalah B4 disertai nilai tersebut. Dari nilai B415 ini dapat diketahui bahwa perintah MOV akan menggunakan 2 byte di memory.

Setelah itu tekanlah 't' untuk mengeksekusi intruksi yang terdapat pada alamat yang ditunjukkan CS:IP(MOV AH,15). Setelah anda menekan 't' maka akan ditampilkan hasil setelah intruksi "MOV AH,15" dieksekusi :

AX=1500 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0102 NV UP EI PL NZ NA PO NC

3597:0102 B004 MOV AL,04

-t < enter >

Terlihat bahwa nilai AX berubah dari 0000 menjadi 1500 setelah mendapat perintah MOV AH,15. Tekanlah 't' disertai enter untuk melihat perubahan nilai pada register-register yang bersangkutan.

AX=1504 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0104 NV UP EI PL NZ NA PO NC

3597:0104 02E0 ADD AH,AL

-t < enter >

AX=1904 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0106 NV UP EI PL NZ NA PO NC

3597:0106 B83412 MOV AX,1234

-t < enter >

AX=1234 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0109 NV UP EI PL NZ NA PO NC

3597:0109 BB21F2 MOV BX,F221

-t < enter >

AX=1234 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=010C NV UP EI PL NZ NA PO NC

3597:010C 03C3 ADD AX,BX

-t < enter >

AX=0455 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=010E NV UP EI PL NZ NA PE CY

3597:010E B83412 MOV AX,1234

-t < enter >

AX=1234 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0111 NV UP EI PL NZ NA PE CY

3597:0111 BBBC9A MOV BX,9ABC

-t < enter >

AX=1234 BX=9ABC CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0114 NV UP EI PL NZ NA PE CY

3597:0114 B97856 MOV CX,5678

-t < enter >

AX=1234 BX=9ABC CX=5678 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0117 NV UP EI PL NZ NA PE CY

3597:0117 BAF0DE MOV DX,DEF0

-t < enter >

AX=1234 BX=9ABC CX=5678 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011A NV UP EI PL NZ NA PE CY

3597:011A 03CA ADD CX,DX

-t < enter >

AX=1234 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011C NV UP EI PL NZ NA PO CY

3597:011C 13C3 ADC AX,BX

-t < enter >

AX=ACF1 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011E NV UP EI NG NZ AC PO NC

3597:011E FEC0 INC AL

-t < enter >

AX=ACF2 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0120 NV UP EI NG NZ NA PO NC

3597:0120 CD20 INT 20

-Q < enter >

Pengetikan "Q" menandakan bahwa kita ingin keluar dari lingkungan debug

dan akan kembali ke a:\>.