Selasa, 27 Juli 2010

Tata Kelola IT


BAB I
PENDAHULUAN


Tata kelola teknologi informasi (Bahasa inggris: IT governance)adalah suatu cabang dari tata kelola perusahaan yang terfokus pada system teknologi informasi(TI)serta manajemen kinerja dan resikonya.Meningkatnya minat pada tata kelola TI sebagian muncul karena adanya prakarsa kepatuhan(seperti Sarbanes-Oxley di Amerika serikat dan Basel II di Eropa)serta semakin diakuinya kemudahan proyek TIO untuk lepas kendali yang dapat berakibat besar terhadap kinerja suatu organisasi.
Tema utama diskusi tata kelola TI adalah bahwa teknologi informasi tidak bias lagi menjadi suatu kotak hitam.Secara tradisional,penanganan pengambilan keputusan kunci di bidanfg teknologi informasi diberikan kepada para professional TI karena keterbatasan pengalaman teknis eksekutif lain di tingkat direksi perusahaan serta karena kompleksitas system TI itu sendiri.Tata kelola TI membangun suatu system yang semua pemangku kepentingan,termasuk direksi dan komisaris serta pengguna internal dan bagian terkait seperti keuangan,dapat memberikan masukan yang diperlukan untuk proses pengambilan keputusan.Hal ini mencegah satu pihak tertentu,biasanya TI,disalahkan untuk suatu keputusan yang salah.Hal ini juga mencegah munculnya keluhan dari pengguna di belakang hari mengenai system yang tak memberikan hasil atau kinerja sesuai yang diharapkan.


Latar Belakang
IT Governance/Tata kelola IT
Perkembangan teknologi yang cepat menuntut para pembuat keputusan seperti dewan direksi dan pihak eksekutif perusahaan untuk selalu terbuka dan memahami setiap potensi dan kemungkinan-kemungkinan yang mungkin ditimbulkan oleh penggunaan teknologi informasi.Tentunya hal tersebut mutlak diperlukan agar tujuan dan strategi perusahaan/institusinya tercapai.
Hasil survey yang dilakukan oleh IT Governance Institute(ITGI)yang tertuang dalam IT Governance Global Status Report yang diterbitkan tahun 2008 antara lain menyebutkan bahwa 63% responden menyatakan teknologi informasi sangat penting bagi organisasinya,termasuk organisasi yang berada di Indonesia,karena survey dilakukan juga terhadap para CIO dan CEO yang ada di Indonesia.
Penggunaan teknologi informasi kadang tidak sesuai dengan harapan,dimana investasi IT yang semakin besar ternyata tidak diikuti dengan dukungan yang semakin besar pula terhadap pencapaian tujuan dan strategi perusahaan/institusi.Inilah yang disebut dengan “Produktivity Paradox”.
Untuk memecahkan masalah tersebut diperlukan tata kelola terhadap penggunaan teknologi informasi yang biasa disebut dengan IT Governance.IT Governance dipercaya sabagai solusi untuk memastikan bahwa IT dapat mendukung pencapaian tujuan organisasi.Salah satu standard/framework untuk IT Governance yaitu COBIT(Control Objectives for Information and related Technology)yang dikeluarkan oleh ITGI mendefenisikan IT Governace sebagai:Sebuah tanggung jawab pihak eksekutif dan dewan direksi Terdiri dari kepemimpinan,struktur organisasi dan proses Bertujuan untuk memastikan bahwa IT mendukung dan memungkinkan pencapaian tercapainya strategi dan tujuan institusi Selain COBIT terdapatbeberapa standard/framework lain yang sering diginakan untuk membangun tat kelola TI disebuah organisasi.
Hasil survey ITGI diatas misalnya,juga menyebutkan framework/tandard yang sering dijadikan acuan oleh institusi yang disurvei untuk membangun tata kelola IT-nya.Beberapa diantaranya adalah IT Infrastructure Library,ISO 17799/ISO 27000 serta yang berifat local/nasional.Belakangan standard ini juga yang menjadi dasar bagi standard internasional untuk tata kelola TI yang diterbitkan pada Tahun 2008 yaitu ISO/IEC 38500.Isinya pun hamper sama yaitu terdiri dari sebuah model dan 6(enam prinsip).
Lantas mana yang paling baik untuk dijadikan acuan?Apakah COBIT,ITIL,ISO17799/27000 ataukah AS 8015? Dan bagaimana penyusunan IT Governace yang tepat sehingga hasil yang didapat dapat benar-benar memberikan solusi bagi permasalahan tat kelola IT di institusi/perusahaan anda?
Dunia bisnis mengutamakan kepuasan pelanggan,kesetiaan pelanggan,pendapatan,dan keuntungan.Sedangkan organisasi pemerintahan lebih tertuju pada tersedianya layanan yang mudah bagi masyarakat.Untuk mencapai hal tersebut dibutuhkan IT governance(Tata Kelola TIK) yang baik.
Berdasarkan hasil riset IT Policy Compliance Group,kematangan dari tata kelola TIK berhubungan langsung dengan perfoma organisasi yang berimbas langsung bagi customer.Penerapan standard-standard internasional seperti COBIT,ISO17799,ITIL merupakan contoh olusi untuk mencapai tata kelola TIK yang lebih matang.
Tata kelola TIK memastikan penggunaan TIK dapat diukur dan dihitung (accountable)keberhasilanya.Tata kelola TIK mendefenisikan tanggung jawab dan aturan dalam penerbitan kebijakan dan membuat keputusan ketika beberapa pihak terkait dalam suaturelasi bisnis.Fokus tata kelola TIK pada strtegi,peningkatan perfoma.segi-segi ekonomi dan resolusi konflik.

Lingkup dari tata kelola TIK adalah:
• Performance measurement
• Strategic aligment
• Value delivery
• Risk management
• Resource management
Tata kelola IT yang menjadi domain Teknoglobal adalah:
• IT Master Planning
• IT Project Management
• IT Outsourcing
• IT Infrastructure System Design
• IT Audit
• IT Security
• IT Service Management (ITSM)/IT Infrastruture Library(ITIL)



BAB II
PEMBAHASAN
IT governance diartikan sebagai struktur dari hubungan dan proses yang mengarahkan dan mengatur organisasi dalam rangka mencapai tujuannya dengan memberikannilai tambah dari pemanfaatan teknologi informasi sambil menyeimbangkan resiko dibandingkan dengan hasil yang diberikan oleh teknologi informasi dan prosesnya.
IT governance merupakansatu kesatuan bengan sukses dari enterprise governance melalui peningkatan dalamefektivitas dan efesiensi dalam proses perusahaanyang berhubungan.IT governance menyediakan struktur yang menghubungkan proses TI,sumber daya TI dan informasi bagi strategi dan tujuan perusahaan.lebihlagi TI governance menggabungkan good(best)practice dari perencanaan dan perorganisasian TI,pembangunan dan pengimplementasian,delivery dan support,serta memonitor kinerja TI untuk memastikan kalau informasi perusahaan dan teknologi yang berhubungan mendukung tujuan bisnis perusahaan.
IT governance memungkinkan perusahaan untuk memperoleh keuntungan penuh dari informasinya,dengan memaksimalkan keuntungan dari peluang dan keuntungan kompetitif yang dimiliki.
Menurut hasil penelitian CSIR MIT,terdapat lima kunci keputusan tatakelola,sehimgga teknologi informasi adalah sebuah asset yang strategis sebagai berikut:
Pertama,IT principles.Keputusan teknologi informasi ini adalah kumpulan dari pernyataan-pernyataan level eksekutif tinggi tentang bagaimana teknologi informasi dapat digunakan organisasi.Sekali pernyataan diartikulasikan,prinsip TI menjadi bagian dari management organisasi,yang terus didiskusikan dan dilaksanakan demi perbaikan organisasi,baik sector pemasaran,keuangan,pabrik dan lain-lain.
Kedua IT architecture decisions.Dengan mengklarifikasikan teknologi sebagai pendukung bisnis organisasi yang telah dikembangkan melalui IT princplies baik secara eksplisit,selanjutnya memerlukan proses standardisasi dan integrasi di dalam suatu organisasi.
Arsitektur TI adalah pengorganisasian logika dari data,aplikasi dan infrastruktur yang dikemas dalam suatu kebijakan,hubungan dan pemilihan teknologi untuk mendapatkan integrasi dan standardisasi teknis dan bisnis yang diharapkan.
Dalam banyak kasus diindonesia saat ini banyak persoalan masalah integrasi dan koordinasi,kepentingan sektoral masih menjadi problem,sehingga sering gagalnya proyek IT diperusahaan yang menghabiskan banyak biaya.
Ketiga IT infrastructure. Prasarana dan sarana teknologi informasi yang menyangkut jaringan, computer, perangkat keras dan lunak lainnya adalah suatu kumpulan komponen yang diharapkan bias mempercepat proses perhitungan, pengiriman dalam berbagai media informasi (data,informasi,gambar,video,teks) dalam waktu yang singkat dan proses penyimpanan yang efektif.
Suatu sarana yang bias dikontrol dari pusat kekuasaan dan dipakai bersama menjadi hal yang penting.Perencanaan kapasitas,baik dipenyimpanan,pengiriman(bandwidth) maupun pelayan,menjadi penting.Tanpa ada perencanaan yang baik,maka akan menyebabkan buruknya image dan kinerja IT diperusahaan.
Keempat,business applications needs.Dalam pengembangan teknologi informasi keperluan bisnis yang spesipik sehingga kehadiran teknologi informasi memberikan suatu nilai baru bagi organisasi.Dua hal penting dalam identifikasi keperluan bisnis yang terkait dengan teknologi informasi yaitu kreativitas dan disiplin.Kreatifitas diperlukan untuk mengidentifikasi suatu cara atau proses baru dari perusahaan/organisasi sehingga ada nilai yang bermakna.Sedangkan disiplin menyangkut hal yang berkaitan dengan integrasi arsitektur sehingga meyakinkan bahwa aplikasi yang dibangun memang sesuai dengan arsitektur perusahaan yang terintegrasi dan terinovasi.
Kelima,IT investment and prioritization.Investasi teknologi informasi sering menjadi bahan yang sulit dimengerti oleh top manajeman dari suatu organisasi,hal ini dikarenakan nilai baru yang ditimbulkan tidak langsung terasa oleh organisasi.
Lain dengan membeli mesin baru atau investasi jas transportasi.Pemahaman eksekutif maupun komosaris menjadi penting.Berapa biaya yangdikeluarkan?Untuk apa dan bagaimana merekonsialisasi dari berbagai kepentingan dan keinginan dari sector lain.
Kelima dasar yang dikembangkan oleh MIT Sloan ini sangat penting dipahami oleh petinggi-petinggi organisasi agar dapat menjadi dari good corporate governance.
Tatakelola pemerintahan dengan memanfaatkan teknologi informasi atau sering sebagai e-government perlu melihat ini.Proyek e-government diberbgai daerah masih sering terjadi pemborosan dan tidak berguna,hal ini karena belum dipahami tentang pengembangan teknologi informasi dan belum adanya alat kendali baik eksekutif maupun inspektorat jendral.
Contoh
Tahap pertama,Bank Mandiri mesti memilih satu core banking system.Berdasarkan hasil evaluasi,core banking system Bank Exim-lah yang dianggap paling memungkinkan untuk diimplementasikan.Sistem ini disebut dengan MASTER(Mandiri Sistem Terpadu).MASTER hanya solusi sementara agar Bank Mandiri dapat secepatnya beroperasi dalam satu platform.MASTER tak dapat mendukung kebutuhan bisnis Bank Mandiri untuk masa mendatang,karena dibuat hanya untuk segmen korporasi.Padahal,Bank Mandiri ingin melebarkan segmenya ke consumer banking(retail banking),commercial banking,corporate banking,syariah banking,dan bahkan juga investment banking.
Tahap kedua,Bank Mandiri membuat pedoman pengembangan TI yang disusun sesuai visi Bank Mandiri.Pengembangan TI tersebut dituangkan dalam TI Strategic Plan(ISP).ISP tahun 2001-2003 dikembangkan untuk mendukung visi jangka pendek Bank Mandiri menjadi Universal Bank.Berdasarkan ISP 2001-2003,mulai Agustus 2001 Bank Mandiri menggunakan Program Emas(Enterprise Mandiri Advanced System).Pada periode ini,Bank Mandiri memperkaya dan memperbaharui delivery channel,membangun core banking system baru yang terintegrasi,membangun management information system(MIS)yang didukung teknologi data-warehouse terkini,memperkuat da memperbaharui system infrastrukturnya.Dengan investasi sebesar US$173juta,implementasi program ini memnjadi pondasi yang kokoh bagi aplikasi,informasi,dan infrastruktur yang mampu menunjang kebutuhan bisnis saat ini serta mengantisipasi pertumbuhan kedepan.
Setelah selesai ISP 2001-2003,focus pengembangan TI dituangkan pada ISP 2004-2007 yang bertujuan menempatkan Bank Mandiri sebagai Dominant &Preferred Supply Chain &Payment Bank.Investasinya US$81 juta.Pada tahap ini,Bank Mandiri melakukan optimalisas9i core banking system,pengembangan system untuk peningkatan produktivitas,manajemen risiko,serta meningkatkan pengolahan information & knowledge untuk pemahaman yang lebih baik terhadap nasabah.
Selanjutnya,untuk memenuhi kebutuhan bisnis sampai 2010,Bank Mandiri menyusun ISP 2008-2010 yang focus kepada pengembangan system dalam memenuhi lonjakan pertumbuhan bisnis dan inisiatif pertumbuhan non-organik.Misalnya,mampu memproses 5 juta transaksi per hari,6000 ATM,15 juta rekening,dan 3 juta kartu krdit.Pada periode ini juga,seluruh data center cabang luar negri telah dioperasikan di Jakarta.
Pada 2008 lalu Bank Mandiri menganggarkan dana US$65 juta untuk investasi TI,yang digunakan untuk mendukung penambahan 1.000 unit ATM,300 microbusiness,70 cabang baru,75 small business branch,8 priority banking,dan 5000 EDC.Investasi itu juga digunakan untuk meningkatkan stabilitas dan ketersediaan system dengan melakukan peremajaan infrastruktur cabang,mengoptimalkan utilisasi infrasturktur Service Orientend Architecture(SOA),melanjutkan peningkatan IT security,dan upgrade infrastruktur hast.
Pada 2009,ditengah kondisi pengetatan likuiditas,tim TI Bank Mandiri tetap melanjutkan investasi dan pengembangan system TI-nya.Menurut Sasmita,direktur teknologi dan operasional Bank Mandiri,dengan investasi US&50 juta,mereka ingin meningkatkan layanan kepada nasabah dan mengembangkan fee based income.Selain itu,Bank Mandiri melihat peluang dari program mengurangi penggunaan uang tunai(less cash society)dari Bank Indonesia.”Oleh karena itu,pada 2009 kami akan meluncurkan unit pembayaran jalan tol yang non-tunai,”ujar Sasmita.
Tuntutan tata kelola yang baik,benar dan transparan pada suatu organisasi baik di korporasi,pemerintahan bahkan di LSM semakin meningkat.Sebenarnya keinginan untuk mengembangkan tatakelola suatu organisasi bukan hal baru,tapi hal ini mencuat sejak awal 2000-an dengan menculnya beberapa skandal dibeberapa perusahaan yang menyebabkan tidak sehatnya suatu usaha.
Tata kelola organisasi seperti di pemda,universitas dan perusahaan sangat penting bagi pemegang saham,investor,wakil pengemban amanah (MWA untuk universitas BHMN),pegawai,kreditor dan pelanggan sebagai pengguna jasa.Beberapa organisasi telah mencoba mengeluarkan suatu pedoman tentang tata kelola korporasi yang baik.OECD mendefenisikan tatakelola korporasi dengan penyediaan suatu struktur untuk mendapatkan suatu tujuan dari organisasi dan pemantauan kinerja untuk menyakinkan bahwa tujuan telah tercapai.Pedoman tata kelola organisasi tidak tunggal,bisa dikembangkan sesuai dengan macam atau bentuk organisasi.

Proses Organisasi
Beberapa kasus informasi yang salah sering kita tmui,misalnya beberapa waktu lalu ada informasi tentang TKI di irak yang disandera,ternyata informasi yang dikeluarkan oleh lembaga-lembaga yang terkait salah dan berbeda.Informasi didapat melalui capturing(menulis,merekam),kemudian diproses,dikirim dan disimpan oleh beberapa mesin atau orang yang berbeda-beda.
Disetiap titik ada kemungkinan disalahgunakan untuk kepentingan tertentu baik yang disengaja ataupun karena kesalahan manusia.Kesalahan ini bias terjadi,walaupun mengkin sudah menggunakan sebagian besar teknologi informasi.
Contoh,dalam system perpajakan,untuk mendapatkan data wajib pajak,pengisian bahkan penyetoran walaupun sudah menggunakan e-filling/e-payment yang secara perhitungan bias,real time dan online,tetapi masih banyak lubang kebocoran,mulai dari pengisian sampai kepelaporan.Dengan demikian maka proses tatakelola teknologi informasi menjadi sangat penting disuatu organisasi.

Kesimpulan
Melalui makalah yang saya buat ini dapat disimpulkan bahwa IT(Imformtion Teknologi)itu sangat diperlukan,Khususnya pada bagian informasi.Apalagi pada pekembangan teknologi sekarang ini.Setiap Perusahaan dituntut agar dapat menguasai IT,baik itu didalam pengelolaan,maupun didalam pemasarannya.Karena pada kenyataanya perusahaan yang lebih menguasai IT akan lebih maju dibandingkan dengan perusahaan yang tidak menguasai IT.
Demikianlah makalah ini saya perbuat,atas perhatiannya saya uacapkan terima kasih.

Program Java

1.Menghitung luas Bujur Sangkar rumus: SISI * SISI
Program java :
import javax.swing.JOptionPane;
public class bujursangkar1
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Bujur sangkar:");
number1=Integer.parseInt(first);
sum=number1*number1;
JOptionPane.showMessageDialog(null,"Luas bujur sangkar adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}

2. Menghitung Volume KUBUS rumus: SISI * SISI * SISI
Program java :
import javax.swing.JOptionPane;
public class kubus
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Kubus :");
number1=Integer.parseInt(first);
sum=number1*number1*number1;
JOptionPane.showMessageDialog(null,"Volume Kubus adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


3.Menghitung Keliling bujur sangkar rumus: 4 * SISI
Program java :
import javax.swing.JOptionPane;
public class kell_bujursangkar
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Bujur sangkar:");
number1=Integer.parseInt(first);
sum=4*number1;
JOptionPane.showMessageDialog(null,"Keliling bujur sangkar adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


4.Menghitung Luas persegi panjang rumus: panjang * lebar
Program java :
import javax.swing.JOptionPane;
public class persegipanjang
{
public static void main(String args[])
{
String first;String second;String three;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=number1*number2;
JOptionPane.showMessageDialog(null,"Luas persegi panjang adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


5.Menghitung Keliling persegi panjang rumus: (2 * panjang) * (2 * lebar)
Program java :
import javax.swing.JOptionPane;
public class kell_persegipanjang
{
public static void main(String args[])
{
String first;String second;String three;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=(2*number1)+(2*number2);
JOptionPane.showMessageDialog(null,"Keliling persegi panjang adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


6.Menghitung Luas Lingkaran rumus: 3,14 * (jari-jari)
Program java :
import javax.swing.JOptionPane;
public class luaslingkaran
{
public static void main(String args[])
{
String first;int number1;int sum;
first=JOptionPane.showInputDialog("Masukkan jari-jari lingkaran");
number1=Integer.parseInt(first);
sum=22/7*number1*number1;
JOptionPane.showMessageDialog(null,"Luas lingkaran adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


7. Menghitung Keliling Lingkaran rumus: 2 * (3,14 * jari-jari)
Program java :
import javax.swing.JOptionPane;
public class kellingkaran
{
public static void main(String args[])
{
String first;int number1;int sum;
first=JOptionPane.showInputDialog("Masukkan jari-jari lingkaran");
number1=Integer.parseInt(first);
sum=2*22/7*number1;
JOptionPane.showMessageDialog(null,"keliling lingkaran adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


8.Menghitung Luas Segitiga rumus: alas * tinggi / 2
Program java :
import javax.swing.JOptionPane;
public class luassegitiga
{
public static void main(String args[])
{
String first;String second;int number1;int number2;int sum;
first=JOptionPane.showInputDialog("Masukkan alas");
second=JOptionPane.showInputDialog("Masukkan tinggi");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=number1*number2/2;
JOptionPane.showMessageDialog(null,"Luas segitiga adalah"+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}



9. Menghitung Volume Balok rumus: panjang * lebar * tinggi
Program java :
import javax.swing.JOptionPane;
public class balok
{
public static void main(String args[])
{
String first;String second;String third;String fourth;int number1;int number2;int number3;int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
third=JOptionPane.showInputDialog("Masukkan tinggi :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
number3=Integer.parseInt(third);
sum=number1*number2*number3;
JOptionPane.showMessageDialog(null,"Volume balok adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


package com.pbo.java;
import java.util.*;
public class HitungLuas
{
public static void main(String args[]){
final double PHI=3.14;
double sisi;
double panjang;
double lebar;
double alas;
double tinggi;
double jari2;
double luas;
Scanner in = new Scanner(System.in);
System.out.println("Menghitung Luas Geometri");
System.out.println("========================");
System.out.println("1.Bujur Sangkar");
System.out.println("2.Persegi Panjang");
System.out.println("3.Segitiga");
System.out.println("4.Lingkaran");
System.out.println("");
System.out.print("Masukan Pilihan Anda :");
int input=in.nextInt();
switch(input)
{
case 1 :
System.out.println("");
System.out.println("Menghitung Luas Bujur Sangkar ...");
System.out.print("Masukan Sisi :");
sisi=in.nextDouble();
luas=sisi*sisi;
System.out.println("Luas = " + luas);
break;
case 2:
System.out.println("");
System.out.println("Menghitung Luas Persegi Panjang ...");
System.out.print("Masukan Panjang :");
panjang=in.nextDouble();
System.out.print("Masukan Lebar :");
lebar=in.nextDouble();
luas=panjang*lebar;
System.out.println("Luas = " + luas);
break;
case 3 :
System.out.println("");
System.out.println("Menghitung Luas Segitiga ...");
System.out.print("Masukan Alas :");
alas=in.nextDouble();
System.out.print("Masukan Tinggi :");
tinggi=in.nextDouble();
luas=0.5*alas*tinggi;
System.out.println("Luas = " + luas);
break;
case 4 :
System.out.println("");
System.out.println("Menghitung Luas Lingkaran ...");
System.out.print("Masukan jari-jari :");
jari2=in.nextDouble();
luas=PHI*jari2*jari2;
System.out.println("Luas = " + luas);
break;
}
}
}

Program Assembly

Studi kasus Modul 1:

1.Program mencetak 0123456789 ( Gunakan INC )
.model small
.code
org 100h
Proses:
MOV AH,2
MOV DL,30h
MOV CX,0Ah
Ulang:
INT 21h
INC DL
loop Ulang
INT 20h
END Proses

2.Program Mencetak ABCDEFGHIJKLMNOPQRSTUVWXYZ ( Warna Tulisan Merah Dan Warna Dasar Hijau Gunakan DEC )
.Model Small
.code
org 100h
proses :
mov ah, 09h
mov al ,'Z'
mov bh,00
mov bl,00100100b
mov cx,26
ulang :
int 10h
Dec al
Loop ulang
int 20h
end proses


Studi Kasus Modul 2 :

1. Dikekatuhi Register AX=2125h,BX=E573h.Jumlahkan dengan ADD,AX+BX,Simpan hasilnya pada register AX
Diketahui register CX=8756h,DX=ADE1,Jumlahkan Dengan ADD,CX+DX,simpan hasilnya pada register CX,jumlahkan Dengan ADC,BX+DX+CF,Simpan hasilnya pada register BX

.model small
.code
org 100h
Proses:
mov ax,2125h
mov bx,0E573h
add ax,bx
mov cx,8756h
mov dx,0ADE1h
add cx,dx
adc bx,dx
inc al
int 20h
end Proses

2 Diketahui register AX=ABBAh,BX=BAC0h Kurangkan dengan SUB,simpan hasilnya di AX,Diketahui register CX=0123h,DX=00Bah,Kurangkan dengan SBB,CX-DX-CF,Simpan hasilnya pada register CX

.model small
.code
org 100h
TData:
JMP Proses
ALo EQU 0ABBAh
AHi EQU 123h
BLo EQU 0BACh
BHi EQU 00Bah
HslLo DW ?
HslHi DW ?
Proses:
mov ax,ALo
mov bx,BLo
sub ax,BLo
mov HslLo,ax
mov cx,AHi
mov dx,BHi
SBB cx,BHi
mov HslHi,cx
int 20h
end TData


3 Buat Program untuk mengurangkan 0123ABBAh-00BABAC0h

.model small
.code
org 100h
TData:
JMP Proses
ALo EQU 0ABBAh
AHi EQU 0123h
BLo EQU 0BAC0h
BHi EQU 00BAh
HslLo DW ?
HslHi DW ?
Proses:
mov ax,ALo
sub ax,BLo
mov HslLo,ax
mov ax,Ahi
sbb ax,Bhi
mov HslHi,ax
int 20h
end TData


4 Buat Program Perkalian:123h*321h hasil Pada DX,AX

.model small
.code
org 100h
TData:
JMP Proses
A DW 123h
B DW 321h
HslLo DW ?
HslHi DW ?
Proses:
mov ax,A
mul B
mov HslLo,ax
mov HslHi,dx
int 20h
end TData

5 Buat program pembagian 4444h/2

.model small
.code
org 100h
TData:
JMP Proses
A DW 4444h
B Dw 2
Hsl DW ?
Sisa DW ?
Proses:
sub dx,dx
mov ax,A
div B
mov Hsl,ax
mov sisa,dx
int 20h
end TData


Studi Kasus Modul 3 :

1. Membuat program memindahkan data sebagai berikut: A DD EFh , B DD FEh kedalam C DW FEEEh

.model small
.code
org 100h
tdata:
jmp proses
a dd 0EFh
b dd 0FEh
c dw 0FEEEh

Proses:
int 20h
end tdata

Studi Kasus Modul 4 :

1. Membuat program untuk mencetak kalimat: ‘Selamat Datang Di lab computer UNIKA-Medan

.model small
.code
org 100h
TData:
JMP Proses
kalimat DB'SELAMAT DATANG DI LAP KOMPUTER UNIKA-MEDAN'
Proses:
XOR BX,BX
MOV CX,41
Ulang:
MOV DL,kalimat[BX]
MOV AH,02h
int 21h
inc bx
loop Ulang
int 20h
end TData



2. Membuat program dengan output,pada baris 10 kolom 5 tercetak tulisan: ‘ Belajar Assembler sangatlah mudah’(warna tulisan merah,warna dasar hijau)

.model small
.code
org 100h
TData:
JMP Proses
kalo db'Belajar Assembly Sangatlah Mudah'

Proses:
mov ax,1300h
mov bl,00100100b
mov bh,00
mov dl,10
mov dh,5
mov cx,32
lea bp,kalo
int 10h
int 20h
end TData


3. Sama seperti soal 2 tetapi dengan tambahan ‘Belajar Assembler sangatlah mudah’

.model small
.code
org 100h
TData:
JMP Proses
kalo db'Belajar Assembler Sangatlah Mudah'
db' Belajar Assembler Sangatlah Mudah '
Proses:
mov ax,1300h
mov bl,00100100b
mov bh,00
mov dl,10
mov dh,5
mov cx,69
lea bp,kalo
int 10h
int 20h
end TData

4. Membuat program dengan output sbb:

Menu Pilihan Informasi
1.Menampilkan Tanggal Sistem
2.Menampilkan Jam Dos
3. Menampilkan Jam Dos
4. Menampilkan Besar Memori
5. Selesai

.model small
.code
org 100h
data : jmp proses
tabel DB '===============================',13,10,7,7,7,'$'
menu db ' Menu Pilihan Informasi ',13,10,'$'
satu db '1 . Menampilkan Tangal Sistem ',13,10,'$'
dua db '2 . Menampilkan Jam DOS ',13,10,'$'
tiga db '3 . Menampilkan Versi DOS ',13,10,'$'
empat db '4 . Menampilkan Besar Memori ',13,10,'$'
lima db '5 . Selesai ',13,10,'$'
proses : mov ah, 13h
mov bl, 10010110b
mov bh,00
mov cx, 240
lea bp, tabel
int 10h
lea bp, menu
int 10h
lea bp, tabel
int 10h
lea bp, satu
int 10h
lea bp, dua
int 10h
lea bp , tiga
int 10h
lea bp , empat
int 10h
lea bp , lima
int 10h
lea bp, tabel
int 10h
int 20h
end data

Studi Kasus Modul 5 :

1. Membuat program penggunaan stack dengan output:
Merdeka !
Merdeka !
Merdeka !

.model small
.code
org 100h
tdata:
jmp proses
kal db'Merdeka!'
ganti db 13,10,'$'
Proses:
lea dx,kal
push dx
push dx
mov ah,09h
int 21h
lea dx,ganti
pop dx
int 21h
pop dx
int 21h
exit:int 20h
end tdata

Listing Program Untuk Input Bilangan N

unit Uinput;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tfrminput = class(TForm)
Label1: TLabel;
einput: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
lb1: TListBox;
lb2: TListBox;
lb3: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frminput: Tfrminput;
implementation
{$R *.dfm}
procedure Tfrminput.Button1Click(Sender: TObject);
var
i:integer;
n:integer;
begin
n:=strtoint(einput.text);
lb1.Items.Clear;
lb2.Items.Clear;
lb3.Items.Clear;
for i:=1 to n do
begin
lb1.Items.add(inttostr(i));
if i mod 2 =0 then
lb2.items.add(inttostr(i))
else
if i mod 2 =1 then
lb3.items.add(inttostr(i))
end;
end;
procedure Tfrminput.Button3Click(Sender: TObject);
begin
close;
end;
procedure Tfrminput.Button2Click(Sender: TObject);
begin
lb1.Items.Clear;
lb2.Items.Clear;
lb3.Items.Clear;
einput.text:='';
einput.SetFocus;
end;
end.

Program Enkripsi-Dekripsi

Program Enkripsi-Dekripsi File Teks Menggunakan bahasa Assembly

Tutorial kali ini berasal dari tugas saat aku ngambil mata kuliah bahasa assembly. Sengaja ditampilkan di situs ini untuk disharing bagi yg sedang belajar assembly, khususnya for Linux, karena yang digunakan adalah kompiler NASM.
Yaitu tentang pembuatan program yang kegunaannya untuk mengenkripsi sekaligus juga mendekripsi file teks.. pengacakan dilakukan berdasarkan sandi/kata kunci tertentu.
Pertanyaannya kenapa dibikin pake assembly?, toh pake C kan lebih mudah.. alasannya karena emang tugas bwat mata kuliah assembly.. dan juga konon program hasil bahasa assembly pastinya berjalan lebih cepat. hal ini emang terbukti..
Tidak seluruh program dalam artikel ini dibikin pake assembly, melainkan hanya sub program nya saja. Yaitu pada fungsi enkripsi-dekripsinya saja. Sedangkan sisanya, termasuk program utama dibikin pake C dengan interface Linux-style yang khas.. yaitu command line mode..
Sebelum meneruskan setidaknya anda harus membaca referensi berikut, sebagai pengetahuan dasar dan referensi utama:
• E-book PC Assembly Language karya Paul A. Carter. Format pdf bisa didownload gratis, cari aja di google (aku lupa situsnya). buku ini bagus banget. bagi yg belajar PC assembly, must have deh..
• tutorial mengenai dasar bahasa C di Linux dan kompiler GCC. Lalu baca juga referensi fungsi getopt, ketik man getopt
Listing program disini bersifat open source (GPL lah..) and mengandung banyak keterangan & komentar yg mudah2an membantu memahaminya..
Program Enkripsi Dekripsi
Program enkripsi file teks berfungsi untuk mengenkripsi (mengacak) suatu file teks sehingga informasi di dalamnya tidak bisa dibaca. Pengacakan dilakukan berdasarkan kata kunci (key) tertentu yang diisikan oleh pengguna.
Program juga sekaligus berfungsi untuk meng dekripsi (enkripsi balik) file hasil enkripsi. Agar file dapat didekripsi dengan benar, kata kunci (kode) yang digunakan harus sama dengan kata kunci enkripsi. Jadi disini hanya terdapat 1 key (kunci) untuk melakukan enkripsi dan dekripsi (symmetric encription).
Cara kerja enkripsi dilakukan dengan menambahkan kode karakter teks sumber dengan teks kunci. Kunci yan lebih pendek dari teks sumber akan berulang-ulang sampai panjangnya sama dengan teks sumber. Misalnya panjang teks sumber 20 karakter, sedangkan kunci = “abcde” (5 karakter), maka faktor penambahan enkripsi adalah abcdeabcdeabcdeabcde.
Contoh:
; sumber : "Kucing"
; kunci : "kode"
maka:
; sumber : 75 117 99 105 110 103
; kunci : 107 111 100 101 107 111
; hasil : 182 228 199 206 217 214
Demikian pula dengan proses dekripsi, yaitu dengan melakukan operasi pengurangan teks sumber dengan kunci. Tentunya kunci harus sama dengan kunci enkripsi untuk menghasilkan teks hasil yang benar. Jika kunci tidak cocok, informasi dalam teks tidak akan terbaca..
Seperti dikatakan sebelumnya, proram ini terdiri dari 2 bagian. Terdapat 2 listing program:
• enkripsi.asm, berupa kode assembly yang berisi fungsi enkripsi
• enkripsi_main.c, berupa kode C yang berisi program utama yang memanfaatkan enkripsi.asm
listing enkripsi.asm
;
; file ini berisi fungsi enkripsi_dekripsi yang akan digunakan oleh enkripsi_main.c
;
; tugas besar mata kuliah bahasa assembly
; oleh :
; Mahantan Sinaga
;
;
; dites menggunakan Mandrake Linux 10.0
; dengan nasm 0.98.38-1mdk, gcc 3.3.2-6mdk
; teks editor Kate
;
; kompilasi & linking:
; nasm -f elf enkripsi.asm
; gcc -o enkripsiku enkripsi_main.c enkripsi.o
;
segment .data
format db "x = %d\n",0

global asm_enkripsi_dekripsi

segment .text

; fungsi asm_enkripsi_dekripsi
; void asm_enkripsi_dekripsi( char * dest, const char * src, char * kunci, int flag_enkripsi);
; parameters:
; dest - pointer ke string hasil enkripsi (pass by reference)
; src - pointer ke string yang akan dienkripsi (pass by reference)
; kunci - string untuk kode enkripsi (pass by reference)
; flag_enkripsi - <>1 -> enkripsi (pass by value)
; =1 -> dekripsi
;
; aturan:
; dengan menambahkan tiap2 karakter dari teks yang dienkripsi dengan
; karakter dari kunci yang diulang-ulang
; contoh: kunci="abcde" -> 97 98 99 100 101
;
; misal : src : "Kucing"
; kunci : "kode"
; maka:
; dest : 75 117 99 105 110 103
; kunci : 107 111 100 101 107 111
; src : 182 228 199 206 217 214
;
%define dest [ebp + 8]
%define src [ebp + 12]
%define kunci [ebp + 16]
%define flag_enkripsi [ebp + 20]
asm_enkripsi_dekripsi:
enter 0,0
push esi
push edi

mov edi, dest ; output dari enkripsi
mov esi, src ; source dari enkripsi

mov edx, kunci ; edx buat menyimpan esi dari kunci

cld

cari_loop:

; blok pemroses kunci
; memperoleh karakter kunci ke n (kunci saat ini) dari string kunci,
; hasilnya taruh di cx

push esi ; simpan dulu, karena esi akan dipakai untuk pemrosesan string kunci,
push edi

mov esi, edx ; esi = edx, edx awal = kunci (alamat elemen ke 1 dari kunci)
lodsb ; load al, inc si (al = kunci saat ini, lanjutkan pencarian)

mov cx, ax ; cx menyimpan karakter kunci saat ini (kunci ke n)

mov edx,esi ; simpan nilai esi ke edx untuk karakter kunci selanjutnya

or al, al ; set condition flags
jnz tidaknol ; jika 0 (akhir dari string kunci),
mov edx, kunci ; set edx kembali ke alamat awal kunci (looping)

tidaknol: ; kunci tidak nol (bukan akhir kunci)

; keluar pemrosesan kunci
; kunci ke n sudah didapat (dalam cl), sekarang lakukan enkripsi
; jumlahkan karakter ke n dengan kunci ke n

pop edi ; kembalikan esi, edi
pop esi

lodsb ; load AL & inc si, al = karakter ke n dari src

or al, al ; set condition flags
jz copy

cmp flag_enkripsi, word 1 ; jika flag_enkripsi = 1 -> dekripsi
je dekripsi
add al, cl ; (ENKRIPSI) jumlahkan karakter ke n dengan kunci ke n
jmp endif
dekripsi:
sub al, cl ; (DEKRIPSI) kurangkan karakter ke n dengan kunci ke n
endif:

copy:

stosb ; store AL & inc di, copy al ke dest

or al, al ; set condition flags
jnz cari_loop ; jika bukan nol (end of string), lanjutkan looping

pop edi
pop esi
leave
ret
Penjelasan :
Pada file ini, terdapat 1 fungsi yang bersifat global yaitu fungsi asm_enkripsi_dekripsi.Fungsi ini akan melakukan enkripsi sekaligus dekripsi (tergantung parameternya) Penulisan fungsi ini dibuat sesuai standar konvensi fungsi di bahasa C khususnya GCC (GNU C Compiler) di Linux.
%define dest [ebp + 8]
%define src [ebp + 12]
%define kunci [ebp + 16]
%define flag_enkripsi [ebp + 20]
Jika dalam C, fungsi tersebut akan memiliki bentuk seperti berikut :
void asm_enkripsi_dekripsi( char * dest, const char * src, char * kunci, int flag_enkripsi);
Ada 4 parameter dari fungsi, yang akan dipush ke dalam stack, yaitu
• dest, sebagai parameter pertama [ebp+8]. dest. merupakan parameter yang di pass by reference, karena ia akan berisi string. (berisi alamat awal dari string) dan nantinya akan menampung string hasil enkripsi/dekripsi.
• src, [ebp+12]. Berisi string sumber, yaitu teks yang akan dienkripsi/didekripsi. Parameter pass by reference.
• kunci, [ebp+16]. Berisi string kunci/kode, yaitu string yang akan dimanipulasi dengan src untuk proses enkripsi/dekripsi.
• flag_enkripsi, [ebp+20]. Berisi variabel untuk menandai apakah akan melakukan enkripsi atau melakukan dekripsi (bersifat boolean). Jika nilai <> 1, misalnya 0, maka fungsi akan melakukan enkripsi. Jika flag_enkripsi = 1, maka fungsi akan melakukan dekripsi.Parameter ini merupakan pass by value.
Cara kerja.
Source code enkripsi.asm dilengkapi dengan komentar program untuk memahami detail cara kerja per instruksi. Secara umum cara kerjanya adalah:
• memproses string kunci, yaitu memperoleh karakter kunci ke n, dimulai dari 0. Pertama-tama nilai edi (milik dest) dan esi (milik src) akan dipush. alamat kunci akan disimpan dalam esi yang merupakan register untuk memanipulasi string. Karakter ke n disimpan dalam cx. Kemudian index n ditambah (increment) lalu disimpan dalam edx. Index ke n perlu disimpan karena selanjutnya nilai esi akan dimanfaatkan untuk hal lain (string_input), sehingga menjaga agar index kunci berikutnya tidak hilang. Jika index ke n merupakan akhir string (kode 0), maka nilai index akan mengulang dari awal, yaitu nilai kunci ([ebp+16]) Setelah karakter ke n didapat, register esi dan edi dipop kembali sehingga sekarang berisi index dari src dan dest.
• berikutnya program akan memproses src. Src berada dalam esi dan dest berada dalam edi. Perintah lodsb akan meload alamat yang ditunjuk esi ke dalam register al kemudian menambah (increment) si. Sekarang esi menunjuk ke alamat berikutnya (n+1).
• Langkah selanjutnya melakukan manipulasi terhadap 2 karakter, yaitu karakter ke n dari kunci dan karakter ke n dari esi, yang berada dalam al. Dilakukan pengecekan flag_enkripsi. Jika 1, maka lakukan dekripsi yaitu src[n]-kunci[n]. Jika tidak 1, maka lakukan enkripsi, yaitu src[n]+kunci[n]. Setelah itu melalui perintah stosb, maka nilai al akan disimpan ke alamat yang ditunjuk edi, kemudian nilai di akan ditambah.
• Program akan berulang sampai ditemukan kode karakter end of string (0).
listing enkripsi_main.c
// enkripsi_main.c
//
// file berisi fungsi enkripsi_dekripsi yang akan digunakan oleh enkripsi_main.c
//
// tugas besar mata kuliah bahasa assembly
// oleh :
// Bayu Rizaldhan rayes

// dites menggunakan Mandrake Linux 10.0
// dengan nasm 0.98.38-1mdk, gcc 3.3.2-6mdk
// teks editor Kate
//
// kompilasi & linking:
// nasm -f elf enkripsi.asm
// gcc -o enkripsiku enkripsi_main.c enkripsi.o
//
#include
#include

#define SIZE_MAX 1024

// prototype untuk fungsi assembly
// standard C calling convention untuk GCC (GNU C Compiler)
void asm_enkripsi_dekripsi( char *, const char * , char *, int) __attribute__ ((cdecl));

////////////////////
char teks[SIZE_MAX]; // teks sumber, diambil dari file
char teks_output[SIZE_MAX]; // teks hasil pemrosesan

FILE *filenya;
FILE *fileout;
char *nama_filenya;
char *nama_fileout;

// variabel2 flag untuk option dari getopt
int ada_d = 0;
int ada_e = 0;
int ada_c = 0;
int ada_v = 0;
int ada_r = 0;
int ada_w = 0;
// variabel parameter dari getopt
char param_code[SIZE_MAX]; // argumen option -c
char param_read[100]; // argumen option -r
char param_write[100]; // argumen option -w

int i;
int proses_sukses = 0; // flag proses sukses

//
// reset teks, dengan mode r=read, w=write
//
int reset_teks(char *namafilenya, char modenya[4])
{
if ((filenya = fopen(namafilenya,modenya)) == NULL) {
printf("filenya nggak ada tuh, bikin baru ya..");
return 0;
} else return 1;
}

//
// load teks dari file
//
void load_from_file(char *nama_filenya) {
char c; // karakter satuan
int i = 0;

if (reset_teks(nama_filenya,"r")) {
while ((c= fgetc(filenya))!=EOF) {
teks[i] = c;
i++;
}
fclose(filenya);
}
}

//
// save teks_output ke file
//
void save_to_file(char *nama_filenya) {
char c; // karakter satuan
int i = 0;

if (reset_teks(nama_filenya,"w")) {
for (i=0;i
fputc(teks_output[i],filenya);
fclose(filenya);
}
}

//
// mencetak cara penggunaan program
//
void cetak_usage() {
printf("Usage: enkripsiku [-dev] [-r nama_file] [-w nama_file] [-c kode_enkripsi]\n\n");
printf("daftar_parameter\n-e -> enkripsi\n-d -> dekripsi\n-v -> tampilkan hasil proses\n\n");
printf("option e dan d tdk boleh sekaligus, boleh tidak ada keduanya\n\n");
printf("contoh penggunaan:\nenkripsiku -r teksku.txt -c kunciku -v -e -w tekshasil.txt");
printf("\nenkripsiku -r teksku.txt -d kunciku -v -e -w tekshasil.txt\n");
}
////////////////////

int main (int argc, char *argv[]) {
int ret, opt_index = 0;

struct option long_options[] = {
{ "decrypt", 0, NULL, 'd' },
{ "encrypt", 0, NULL, 'e' },
{ "code", 1, NULL, 'c' }, // parameter
{ "view", 0, NULL, 'v' },
{ "read", 1, NULL, 'r' }, // parameter
{ "write", 1, NULL, 'w' }, // parameter
{ 0, 0, 0, 0}
};

// memroses argumen program
while ((ret = getopt_long(argc, argv, "dec:vr:w:", long_options,&opt_index)) != -1) {
switch (ret) {
case 'd':
printf("melakukan dekripsi......\n");
ada_d = 1;
break;
case 'e':
printf("melakukan enkripsi......\n");
ada_e = 1;
break;
case 'c':
ada_c = 1;
strcpy(param_code,optarg);
break;
case 'v':
ada_v = 1;
break;
case 'r':
ada_r = 1;
strcpy(param_read,optarg);
printf("file input = %s\n",param_read);
break;
case 'w':
ada_w = 1;
strcpy(param_write,optarg);
printf("file output = %s\n",param_write);
break;
default:
//tampilkan tata cara (usage)
cetak_usage();
exit (1);
}
}

if (ada_r) {
//load_from_file("email2.txt");
load_from_file(param_read);
if (ada_c) {
// lakukan enkripsi dekripsi
if (ada_e == 1 && ada_d == 0) {
asm_enkripsi_dekripsi( teks_output, teks,param_code,0); // enkripsi
proses_sukses = 1;
}
else if (ada_d == 1 && ada_e == 0) {
asm_enkripsi_dekripsi( teks_output, teks,param_code,1); // dekripsi
proses_sukses = 1;
}
else if (ada_d == 1 && ada_e == 1)
printf("tidak bisa melakukan enkripsi dan dekripsi sekaligus");
else {
asm_enkripsi_dekripsi( teks_output, teks,"",0); // tidak ada -e dan -d, cukup copy teks ke teks_output
proses_sukses = 1;
}
}
else {
printf("parameter belum lengkap, minimal -r (read file) dan -c (code)");
}

}
else
cetak_usage();

if (proses_sukses && ada_v) {
// cetak hasil proses
printf("\nHasil proses : \n\n%s\n", teks_output);
}

if (proses_sukses && ada_w) {
// simpan ke file
save_to_file(param_write);
}

printf("\n-----------------------------------------------\n");
exit(0);
}
Penjelasan:
file enkripsi_main berisi fungsi utama yang memanfaatkan fungsi asm_enkripsi_dekripsi yang ada di file enkripsi.asm. Karena itu kedua file ini harus dilinking agar berjalan.
Pada file ini digunakan library getopt untuk memanfaatkan fungsi getopt_long. getopt_long berfungsi untuk memparse parameter dari argumen program sesuai dengan standar di Linux.
Ada 6 argumen option, yaitu
• -r : untuk membaca file input, option ini harus ada dan memiliki value.
• -w : untuk menulis hasil proses ke file.
• -e : untuk melakukan enkripsi
• -d : untuk melakukan dekrips
• -v : untuk mencetak hasil proses ke layar
• -c : argumen value berisi kode enkrips
option -d dan -c tidak boleh ada dalam waktu bersamaan. Tetapi boleh tidak ada keduanya.
Pada dasarnya program enkripsi_main ini adalah sebagai antarmuka untuk proses enkripsi/dekripsi yang dilakukan oleh fungsi asm_enkripsi_dekripsi pada file enkripsi.asm.
Untuk itu perlu disertakan prototype untuk fungsi assembly sesuai dengan standard c calling convention. Pada listing ini, digunakan standar kompiler GCC.
void asm_enkripsi_dekripsi( char *, const char * , char *, int) __attribute__ ((cdecl));
Penjelasan program bisa dilihat pada komentar baris pada listing program. Contoh penggunaan fungsi asm_enkripsi_dekripsi sebagai berikut:
asm_enkripsi_dekripsi( teks_output, teks,param_code,0);
artinya melakukan enkripsi (flag_enkripsi =0), pada string teks. Dan hasilnya dicopy ke teks_output.
Kompilasi dan Linking
Perintah berikut kan mengkompilasi file enkripsi.asm menjadi enkripsi.o.
$ nasm -f elf enkripsi.asm
Sedangkan mengkompilasi enkripsi_main.c sekaligus melinking dengan enkripsi.o digunakan sintaks berikut:
$ gcc -o enkripsiku enkripsi_main.c enkripsi.o
Sehingga didapatkan file executable bernama enkripsiku
Contoh pengguaan
Melakukan enkripsi file teksku.txt, dengan kode “abcde”, kemudian hasilnya ditampilkan ke layar dan disimpan pada file tekshasil.txt
$ ./enkripsiku -r teksku.txt -c abcde -v -e -w tekshasil.txt
Melakukan dekripsi file tekshasil.txt, hasilditampilkan ke layar dan disimpan pada file tekshasil.txt
$ ./enkripsiku -r tekshasil.txt -c abcde -v -d -w tekshasil.txt

CARA MEMBUAT TWITTER

Cara Membuat Twitter – Bagi teman-teman yang masih pemula di dunia maya dan ingin mencoba membuat account di twitter salah satu situs mikro blogging yang paling terkenal saat ini, maka pada artikel ini akan kita bahas cara membuat twitter atau tepatnya cara membuat account di twitter secara gratis.
Seperti halnya situs jejaring sosial misalnya facebook, maka hal yang penting dimiliki saat membuat account twitter adalah anda harus memiliki email terlebih dahulu, dan apabila anda belum memilikinya maka silahkan mendaftar dulu di situs penyedia layanan email gratisan seperti halnya di www.gmail.com atau di www.yahoo.com
Setelah teman-teman memiliki email, maka langkah untuk membuat account twitter pun sudah dapat dilakukan, yaitu pertama dengan mengunjungi situs twitter di alamat www.twitter.com

Adapun langkah-langkah untuk melakukan registrasi di situs twitter adalah sebagai berikut:
1. Klik Tanda Sign up now pada halaman utama situs twitter, dan seketika anda akan dibawa ke halaman form pengisian data-data anda
2. Pada halaman Form
a. Isikan nama lengkap anda pada bagian Full Name
b. Isikan username anda pada bagian username, misalnya “cool_mantap″ dan username yang anda pilih nantinya akan selalu diminta ketika anda ingin login di twitter di kemudian hari.
c. Isikan password anda dibagian kolom password.
d. Isikan email anda pada bagian pengisian alamat email
e. Ketikkan tanpa verifikasi yang sudah disediakan secara acak oleh sistem twitter pada bagian “Type the words above”
f. Create My Account
3. Setelah anda melakukan langkah demi langkah diatas, maka hal terakhir yang harus anda lakukan agar pembuatan twitter anda sudah lengkap adalah dengan membuka email anda, karena twitter akan mengirimkan sebuah email verifikasi kepada anda ke email yang sebelumnya anda gunakan untuk registrasi twitter.

selamat mencoba.

Senin, 26 Juli 2010

Asal Nama Singapura

Ratusan tahun yang lalu hiduplah Sang Nila Utama, Raja Sriwijaya. Pada suatu hari, ditemani beberapa pengawal setianya, Raja pergi berlayar. Di perjalanan angin topan datang. Para pengawal mengusulkan agar Raja membatalkan niatnya.

“Paduka, sungguh berbahaya meneruskan perjalanan pada saat seperti ini. Lebih baik kita singgah dulu ke tempat yang aman. Kalau hamba tak keliru, tempat terdekat dari sini adalah Pulau Tumasik. Bagaimana kalau kita ke sana sambil menunggu keadaan tenang,” kata kapten kapal.

Raja setuju. Perahu mereka pun merapat ke Pulau Tumasik.

Setelah mendarat, Raja meninggalkan kapal dan berkeliling melihat-lihat pulau itu. Ketika berkeliling itulah tiba-tiba seekor binatang berkelebat tak jauh darinya. Raja terkejut dan terpukau. Binatang itu begitu besar, berwarna keemasan, dan tampak gagah.

“Mahluk apakah itu?”

“Kalau hamba tak salah, orang-orang menyebutnya singa, Yang Mulia,” jawab salah seorang pengawal.

“Apa?”

“Singa.”

Raja lalu minta keterangan lebh banyak tentang biantang yang baru pertama kali dilihatnya itu. Dengan penuh perhatian Raja mendengarkana penjelasan pengawalnya.

“Kalau begitu, kita beri nama tempat ini Singapura. Artinya: Kota Singa”.

Sejak itulah kota itu bernama Singapura.

Kamis, 22 Juli 2010

Program Assembly

;Program Pertama Aku
;Mahantan Sinaga
IDEAL
P386
JUMPS

SEGMENT CODE
ASSUME cs:code,ds:code

ORG 100h

START:

mov ax,0013h
int 10h

mov ax,cs
mov ds,ax
mov ax,0a000h
mov es,ax

lea si,[Palette]
mov dx,3c8h
xor al,al
out dx,al
mov dx,3c9h
mov cx,189*3
repz outsb

; === Set some variables ===
mov [DeltaX],1
mov [DeltaY],1
mov [DeltaZ],1

mov [Xoff],256
mov [Yoff],256
mov [Zoff],300

MainLoop:
call MainProgram

in al,60h
cmp al,1
jne MainLoop

; === Quit to DOS ===
mov ax,0003h
int 10h
lea dx,[Credits]
mov ah,9
int 21h
mov ax,4c00h
int 21h

; === Sub-routines ===

PROC WaitVrt
mov dx,3dah
Vrt:
in al,dx
test al,8
jnz Vrt
NoVrt:
in al,dx
test al,8
jz NoVrt
ret
ENDP WaitVrt

PROC UpdateAngles
; Calculates new x,y,z angles
; to rotate around
mov ax,[XAngle]
mov bx,[YAngle]
mov cx,[ZAngle]

add ax,[DeltaX]
and ax,11111111b
mov [XAngle],ax
add bx,[DeltaY]
and bx,11111111b
mov [YAngle],bx
add cx,[DeltaZ]
and cx,11111111b
mov [ZAngle],cx
ret
ENDP UpdateAngles

PROC GetSinCos
; Needed : bx=angle (0..255)
; Returns: ax=Sin bx=Cos
push bx
shl bx,1
mov ax,[SinCos + bx]
pop bx
push ax
add bx,64
and bx,11111111b
shl bx,1
mov ax,[SinCos + bx]
mov bx,ax
pop ax
ret
ENDP GetSinCos

PROC SetRotation
; Set sine & cosine of x,y,z
mov bx,[XAngle]
call GetSinCos
mov [Xsin],ax
mov [Xcos],bx

mov bx,[Yangle]
call GetSinCos
mov [Ysin],ax
mov [Ycos],bx

mov bx,[Zangle]
call GetSinCos
mov [Zsin],ax
mov [Zcos],bx
ret
ENDP SetRotation

PROC RotatePoint
; Gets original x,y,z values
; This can be done elsewhere
movsx ax,[Cube+si]
mov [X],ax
movsx ax,[Cube+si+1]
mov [Y],ax
movsx ax,[Cube+si+2]
mov [Z],ax

; Rotate around x-axis
; YT = Y * COS(xang) - Z * SIN(xang) / 256
; ZT = Y * SIN(xang) + Z * COS(xang) / 256
; Y = YT
; Z = ZT

mov ax,[Y]
mov bx,[XCos]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[XSin]
imul bx
sub bp,ax
sar bp,8
mov [Yt],bp

mov ax,[Y]
mov bx,[XSin]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[XCos]
imul bx
add bp,ax
sar bp,8
mov [Zt],bp

mov ax,[Yt]
mov [Y],ax
mov ax,[Zt]
mov [Z],ax

; Rotate around y-axis
; XT = X * COS(yang) - Z * SIN(yang) / 256
; ZT = X * SIN(yang) + Z * COS(yang) / 256
; X = XT
; Z = ZT

mov ax,[X]
mov bx,[YCos]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[YSin]
imul bx
sub bp,ax
sar bp,8
mov [Xt],bp

mov ax,[X]
mov bx,[YSin]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[YCos]
imul bx
add bp,ax
sar bp,8
mov [Zt],bp

mov ax,[Xt]
mov [X],ax
mov ax,[Zt]
mov [Z],ax

; Rotate around z-axis
; XT = X * COS(zang) - Y * SIN(zang) / 256
; YT = X * SIN(zang) + Y * COS(zang) / 256
; X = XT
; Y = YT

mov ax,[X]
mov bx,[ZCos]
imul bx
mov bp,ax
mov ax,[Y]
mov bx,[ZSin]
imul bx
sub bp,ax
sar bp,8
mov [Xt],bp

mov ax,[X]
mov bx,[ZSin]
imul bx
mov bp,ax
mov ax,[Y]
mov bx,[ZCos]
imul bx
add bp,ax
sar bp,8
mov [Yt],bp

mov ax,[Xt]
mov [X],ax
mov ax,[Yt]
mov [Y],ax

ret
ENDP RotatePoint

PROC ShowPoint
; Calculates screenposition and
; plots the point on the screen
mov ax,[Xoff]
mov bx,[X]
imul bx
mov bx,[Z]
add bx,[Zoff]
idiv bx
add ax,[Mx]
mov bp,ax

mov ax,[Yoff]
mov bx,[Y]
imul bx
mov bx,[Z]
add bx,[Zoff]
idiv bx
add ax,[My]

mov bx,320
imul bx
add ax,bp
mov di,ax

mov ax,[Z]
add ax,100d

mov [byte ptr es:di],al
mov [Erase+si],di
ret
ENDP ShowPoint

PROC MainProgram
call UpdateAngles
call SetRotation

xor si,si
mov cx,MaxPoints
ShowLoop:
call RotatePoint
call ShowPoint
add si,3
loop ShowLoop

call WaitVrt

xor si,si
xor al,al
mov cx,MaxPoints
Deletion:
mov di,[Erase+si]
mov [byte ptr es:di],al
add si,3
loop Deletion
ret
ENDP MainProgram

; === DATA ===

Credits DB 13,10,"Code by Vulture / Outlaw Triad",13,10,"$"

Label SinCos Word ; 256 values
dw 0,6,13,19,25,31,38,44,50,56
dw 62,68,74,80,86,92,98,104,109,115
dw 121,126,132,137,142,147,152,157,162,167
dw 172,177,181,185,190,194,198,202,206,209
dw 213,216,220,223,226,229,231,234,237,239
dw 241,243,245,247,248,250,251,252,253,254
dw 255,255,256,256,256,256,256,255,255,254
dw 253,252,251,250,248,247,245,243,241,239
dw 237,234,231,229,226,223,220,216,213,209
dw 206,202,198,194,190,185,181,177,172,167
dw 162,157,152,147,142,137,132,126,121,115
dw 109,104,98,92,86,80,74,68,62,56
dw 50,44,38,31,25,19,13,6,0,-6
dw -13,-19,-25,-31,-38,-44,-50,-56,-62,-68
dw -74,-80,-86,-92,-98,-104,-109,-115,-121,-126
dw -132,-137,-142,-147,-152,-157,-162,-167,-172,-177
dw -181,-185,-190,-194,-198,-202,-206,-209,-213,-216
dw -220,-223,-226,-229,-231,-234,-237,-239,-241,-243
dw -245,-247,-248,-250,-251,-252,-253,-254,-255,-255
dw -256,-256,-256,-256,-256,-255,-255,-254,-253,-252
dw -251,-250,-248,-247,-245,-243,-241,-239,-237,-234
dw -231,-229,-226,-223,-220,-216,-213,-209,-206,-202
dw -198,-194,-190,-185,-181,-177,-172,-167,-162,-157
dw -152,-147,-142,-137,-132,-126,-121,-115,-109,-104
dw -98,-92,-86,-80,-74,-68,-62,-56,-50,-44
dw -38,-31,-25,-19,-13,-6

Label Cube Byte
c = -35
rept 5
b = -35
rept 5
a = -35
rept 5
db a,b,c
a = a + 20
endm
b = b + 20
endm
c = c + 20
endm

Label Palette Byte
db 0,0,0
d = 63
rept 63
db d,d,d
db d,d,d
db d,d,d
d = d - 1
endm

X DW ?
Y DW ?
Z DW ?

Xt DW ?
Yt DW ?
Zt DW ?

XAngle DW 0
YAngle DW 0
ZAngle DW 0

DeltaX DW ?
DeltaY DW ?
DeltaZ DW ?

Xoff DW ?
Yoff DW ?
Zoff DW ?

XSin DW ?
XCos DW ?
YSin DW ?
YCos DW ?
ZSin DW ?
ZCos DW ?

Mx DW 160
My DW 100

MaxPoints EQU 125

Erase DW MaxPoints DUP (?)

ENDS CODE
END START

Rabu, 21 Juli 2010

Penyebab Kerusakan Komputer dan Cara Mengatasinya

Berikut Merupakan Rangkuman Masalah dan kendala Yang sering Pengguna Komputer Hadapi dan Bagaimana Cara Pencegahannya :

1. Komputer Tidak Mau Hidup
Cara Mengatasinya :
- Cek koneksi kabel (dari power outletnya ke tombol power pada PC)
- Cek apakah stabilizer berfungsi atau tdak (jika memakai stabilizer)
- Cek kabel power pada CPU
- Jika masih juga tidak mau hidup permasalahanya mungkin terletak pada power supply atau MB

2. Komputer Mau Hidup Tetapi Tidak Mau Booting
Cara Mengatasinya :
Kenali Terlebih dahulu Bunyi Beep :
Beep 1 kali saja Tanda bahwa kondisi komputer baik
Beep 1 kali, panjang Terdapat problem di memory
Beep 1 kali panjang dan 3 kali pendek Kerusakan di VGA card
Beep 1 kali panjang dan 2 kali pendek Kerusakan di DRAM parity
Beep terus menerus Kerusakan dimodul memory atau memory video
- Cek dengan menggunakan software dianosa seperti sisoft sandra, PC mark04, PC mark05 dll

3. Komputer Mau Booting Tetapi Selalu “Safe Mode “ (untuk masuk ke safe mode tekan F8)
Cara Mengatasinya :
- restart kembali komputer anda
- jika masih trouble intall ulang windows anda
- jika masih safe mode juga, berarti HD anda bermasalah
cek dengan : scan disk

4. Komputer Sering Hang

Cara Mengatasinya
- Disebabkan software mengalami crash
- tekan ctrl + alt + del >> klik End task pada program yang “Not Responding”
- tekan tombol restart pada CPU
- Disebabkan hardware mengalami konflik (adanya penambahan hardware baru)
- konflik antar hardware sering terjadi pada sistem operasi windows
- install ulang windows anda, tetapi yang perlu diingat sebelum reinstall windows anda, lepaskan dulu hardware baru anda
- alankan fasilitas “add new“ hardware yang terdapat pada control panel.


5. Keyboard Tidak Dikenali Oleh Komputer
Cara Mengatasinya
- cek apakah keyboard anda sudah terpasang dengan benar
- jika sudah tapi masih juga keyboard tidak terdeteksi maka kemungkinan keyboard anda bermasalah.
- coba ganti keyboard anda, jika sudah diganti tapi juga masih bermasalah maka kemungkinan besar yang rusak adalah di bagian port keyboard di MB anda.
- Jika memang Sudah di Ganti Keyboard Baru tapi tetap tidak terdeteksi Juga Coba Ganti dengan Keyboard USB dan apabila tidak terdeteksi Juga berarti ada yang salah Pada sitem Windows Sobat

6 Mouse Tidak Dikenali Oleh Komputer (sama denagn kasus keyboard)

7. Pointer Mouse Selalu Meloncat-Loncat
Cara Mengatasinya
- mouse kotor segera di Bersihkan (khususnya pada bola mouse)

8. Komputer Sering Crash
Cara Mengatasinya :
- cek semua posisi kabel, hardware, dan juga tegangan pada casing, cek suhu pada CPU dan jua cek ram, processor dan juga vga.

9. Bila Produsen MetherBoard(MB) Tidak Diketahui
Cara Mengatasinya :
- buka casing, dan cek CPU anda biasanya sebuah MB memiliki label produsen yang sekaligus berisi spesifikasi tipe Mbnya.
- Lihat pada manual book
- Cari data Mb lewat internet, cocokan ID yang tercetak pada sticker board denan daftar yang terdapat pada situs www.fcc.gov/oet/fccid, dan cari daftar nomor ID yang dikeluarkan oleh lembaga perijinan untuk perangkat elektonik di Amerika
- Gunakan software analisa, seperti sandra99 dll.

10. Lupa Password BIOS
Cara Mengatasinya :
- Cabut batterey cmos pada cpu
- Atau dengan cara emncoba menebak bberapa password default untuk beberapa produsen bios misalkan AMI dan AWARD (contoh : A.M.I, AMI, AMI_SW, ALLY, 589589 dll)

11. Jam dan setting tanggal BIOS Selalu Berubah-Rubah
Cara Mengatasinya :
- batteray cmos sudah tidak berfungsi (mati), ganti dengan batteray yang baru

12. Menambah Perangkat Hardware Baru, Tp Tidak Terdeteksi Oleh BIOS
Cara Mengatasinya :
- Kemungkinan besar bios anda sudah kuno sehingga tidak dapat mendeteksi hardware yang baru, maka segera update bios anda (bisa download melalui internet, mis : www.windrivers.com)

13. Melacak Kerusakan Card Pada MB
Cara Mengatasinya :
- cobalah denganmencabut dan menancapkan beberapa card pada MB anda
- jika booting berhasil maka card anda tidak bermasalah begitu jua sebaliknya

14. Pasang Processor Baru Tp Tidak Terdeteksi
Cara Mengatasinya :
- cek apakah anda sudah memasang processor denan benar
- cek apakah posisi jumper pada processor sudah benar (tentang jumper pada processor bisa anda priksa pada manual booknya)

15. Crash Setelah Memasang RAM Baru
Cara Mengatasinya :
- kemungkinan ram yang anda pasang tidak kompatibel dengan komputer anda (cabut ram tersebut)

16. Menambah RAM Tapi Tidak Terdeteksi
Cara Mengatasinya :
- Lakukan pengecekan seperti ketika kasus sebelumnya
- Pastikan slot yan dipakai sesuai, misalnya : SD RAM memiliki slot yang hampir sama dengan RD RAM tetapi RD RAM, tidak bisa terdeteksi meskipun bisa dipasang pada slot jenis SD RAM.

17. Setelah Menambah RAM Proses Komputer Manjadi Semakin Lambat
Cara Mengatasinya :
- perhatikan batas kapasitas ram anda, misalnya ram jenis EDO batas maksimalnya adalah 64 MB, maka ketika dipaksakan untuk ditambah maka komputer anda menjadi semakin lambat

18. Virtual Ram
Cara Mengatasinya :
- klik kanan icon My computer, pilih propertis, kemudian pilih tab performance dan klik VIRTUAL MEMORY
- pilih item let me specify my own virtual memory setting (pilih HD yang akan digunakan sebagai virtual memory)
- klok OK

19. Monitor Tidak Mau Nyala
Cara Mengatasinya :
- pastikan semua kabel power maupun konektor yang berhubungan dengan monitor ok
- pastikan juga pin yang ada pada port VGA masuk dengan sempuran tidak ada yang bengkok apalagi tidak masuk semua/salah satu pin ke port VGA
- pastikan juga VGA card anda ok

20. Monitor Menjadi Gelap Saat Loading Windows
Cara Mengatasinya :
- kemungkinan disebabkan karena setup driver untuk monitor tidak tepat(setting frekuensinya terlalu tinggi)
- masuk dulu ke dalam kondisi safe mode (tekan F8)
- install ulang driver VGAnya

21. Tampilan Tiba-Tiba Rusak Dan Komputer Manjadi Hang
Cara Mengatasinya :
- dikarenakan suhu (pada VA card) sangat panas

22. Ukuran Tampilan monitor Tidak Sesuai Keinginan
Cara Mengatasinya :
- masuk ke display propertis (klik kana semabrang tempat pilih propertis)
- Tekan tab setting dan dan atur ukuran tampilan sesuai dengan keinginan (pada screean area)

23. Monitor Seperti Berkedip Saat Digunakan
Cara Mengatasinya :
- masuk ke display propertis (klik kana semabrang tempat pilih propertis)
- Tekan tab setting dan klik advance, kemudian klik adapter, pada bagian ini ditampilkan refresh raet yang dininkan

24. Sound Card Baru Tidak Terdeteksi
Cara Mengatasinya :
- Crash dengan saounda card yang lama
- cek pada manual booknya, apakah soundcard on boardnya perlu dimatikan atau tidak jika hendak menginstall ulang soundcard yan baru (biasanya bisa dimatikan lewat jumper atau bios)

Tata Kelola IT


BAB I
PENDAHULUAN


Tata kelola teknologi informasi (Bahasa inggris: IT governance)adalah suatu cabang dari tata kelola perusahaan yang terfokus pada system teknologi informasi(TI)serta manajemen kinerja dan resikonya.Meningkatnya minat pada tata kelola TI sebagian muncul karena adanya prakarsa kepatuhan(seperti Sarbanes-Oxley di Amerika serikat dan Basel II di Eropa)serta semakin diakuinya kemudahan proyek TIO untuk lepas kendali yang dapat berakibat besar terhadap kinerja suatu organisasi.
Tema utama diskusi tata kelola TI adalah bahwa teknologi informasi tidak bias lagi menjadi suatu kotak hitam.Secara tradisional,penanganan pengambilan keputusan kunci di bidanfg teknologi informasi diberikan kepada para professional TI karena keterbatasan pengalaman teknis eksekutif lain di tingkat direksi perusahaan serta karena kompleksitas system TI itu sendiri.Tata kelola TI membangun suatu system yang semua pemangku kepentingan,termasuk direksi dan komisaris serta pengguna internal dan bagian terkait seperti keuangan,dapat memberikan masukan yang diperlukan untuk proses pengambilan keputusan.Hal ini mencegah satu pihak tertentu,biasanya TI,disalahkan untuk suatu keputusan yang salah.Hal ini juga mencegah munculnya keluhan dari pengguna di belakang hari mengenai system yang tak memberikan hasil atau kinerja sesuai yang diharapkan.


Latar Belakang
IT Governance/Tata kelola IT
Perkembangan teknologi yang cepat menuntut para pembuat keputusan seperti dewan direksi dan pihak eksekutif perusahaan untuk selalu terbuka dan memahami setiap potensi dan kemungkinan-kemungkinan yang mungkin ditimbulkan oleh penggunaan teknologi informasi.Tentunya hal tersebut mutlak diperlukan agar tujuan dan strategi perusahaan/institusinya tercapai.
Hasil survey yang dilakukan oleh IT Governance Institute(ITGI)yang tertuang dalam IT Governance Global Status Report yang diterbitkan tahun 2008 antara lain menyebutkan bahwa 63% responden menyatakan teknologi informasi sangat penting bagi organisasinya,termasuk organisasi yang berada di Indonesia,karena survey dilakukan juga terhadap para CIO dan CEO yang ada di Indonesia.
Penggunaan teknologi informasi kadang tidak sesuai dengan harapan,dimana investasi IT yang semakin besar ternyata tidak diikuti dengan dukungan yang semakin besar pula terhadap pencapaian tujuan dan strategi perusahaan/institusi.Inilah yang disebut dengan “Produktivity Paradox”.
Untuk memecahkan masalah tersebut diperlukan tata kelola terhadap penggunaan teknologi informasi yang biasa disebut dengan IT Governance.IT Governance dipercaya sabagai solusi untuk memastikan bahwa IT dapat mendukung pencapaian tujuan organisasi.Salah satu standard/framework untuk IT Governance yaitu COBIT(Control Objectives for Information and related Technology)yang dikeluarkan oleh ITGI mendefenisikan IT Governace sebagai:Sebuah tanggung jawab pihak eksekutif dan dewan direksi Terdiri dari kepemimpinan,struktur organisasi dan proses Bertujuan untuk memastikan bahwa IT mendukung dan memungkinkan pencapaian tercapainya strategi dan tujuan institusi Selain COBIT terdapatbeberapa standard/framework lain yang sering diginakan untuk membangun tat kelola TI disebuah organisasi.
Hasil survey ITGI diatas misalnya,juga menyebutkan framework/tandard yang sering dijadikan acuan oleh institusi yang disurvei untuk membangun tata kelola IT-nya.Beberapa diantaranya adalah IT Infrastructure Library,ISO 17799/ISO 27000 serta yang berifat local/nasional.Belakangan standard ini juga yang menjadi dasar bagi standard internasional untuk tata kelola TI yang diterbitkan pada Tahun 2008 yaitu ISO/IEC 38500.Isinya pun hamper sama yaitu terdiri dari sebuah model dan 6(enam prinsip).
Lantas mana yang paling baik untuk dijadikan acuan?Apakah COBIT,ITIL,ISO17799/27000 ataukah AS 8015? Dan bagaimana penyusunan IT Governace yang tepat sehingga hasil yang didapat dapat benar-benar memberikan solusi bagi permasalahan tat kelola IT di institusi/perusahaan anda?
Dunia bisnis mengutamakan kepuasan pelanggan,kesetiaan pelanggan,pendapatan,dan keuntungan.Sedangkan organisasi pemerintahan lebih tertuju pada tersedianya layanan yang mudah bagi masyarakat.Untuk mencapai hal tersebut dibutuhkan IT governance(Tata Kelola TIK) yang baik.
Berdasarkan hasil riset IT Policy Compliance Group,kematangan dari tata kelola TIK berhubungan langsung dengan perfoma organisasi yang berimbas langsung bagi customer.Penerapan standard-standard internasional seperti COBIT,ISO17799,ITIL merupakan contoh olusi untuk mencapai tata kelola TIK yang lebih matang.
Tata kelola TIK memastikan penggunaan TIK dapat diukur dan dihitung (accountable)keberhasilanya.Tata kelola TIK mendefenisikan tanggung jawab dan aturan dalam penerbitan kebijakan dan membuat keputusan ketika beberapa pihak terkait dalam suaturelasi bisnis.Fokus tata kelola TIK pada strtegi,peningkatan perfoma.segi-segi ekonomi dan resolusi konflik.

Lingkup dari tata kelola TIK adalah:
• Performance measurement
• Strategic aligment
• Value delivery
• Risk management
• Resource management
Tata kelola IT yang menjadi domain Teknoglobal adalah:
• IT Master Planning
• IT Project Management
• IT Outsourcing
• IT Infrastructure System Design
• IT Audit
• IT Security
• IT Service Management (ITSM)/IT Infrastruture Library(ITIL)



BAB II
PEMBAHASAN
IT governance diartikan sebagai struktur dari hubungan dan proses yang mengarahkan dan mengatur organisasi dalam rangka mencapai tujuannya dengan memberikannilai tambah dari pemanfaatan teknologi informasi sambil menyeimbangkan resiko dibandingkan dengan hasil yang diberikan oleh teknologi informasi dan prosesnya.
IT governance merupakansatu kesatuan bengan sukses dari enterprise governance melalui peningkatan dalamefektivitas dan efesiensi dalam proses perusahaanyang berhubungan.IT governance menyediakan struktur yang menghubungkan proses TI,sumber daya TI dan informasi bagi strategi dan tujuan perusahaan.lebihlagi TI governance menggabungkan good(best)practice dari perencanaan dan perorganisasian TI,pembangunan dan pengimplementasian,delivery dan support,serta memonitor kinerja TI untuk memastikan kalau informasi perusahaan dan teknologi yang berhubungan mendukung tujuan bisnis perusahaan.
IT governance memungkinkan perusahaan untuk memperoleh keuntungan penuh dari informasinya,dengan memaksimalkan keuntungan dari peluang dan keuntungan kompetitif yang dimiliki.
Menurut hasil penelitian CSIR MIT,terdapat lima kunci keputusan tatakelola,sehimgga teknologi informasi adalah sebuah asset yang strategis sebagai berikut:
Pertama,IT principles.Keputusan teknologi informasi ini adalah kumpulan dari pernyataan-pernyataan level eksekutif tinggi tentang bagaimana teknologi informasi dapat digunakan organisasi.Sekali pernyataan diartikulasikan,prinsip TI menjadi bagian dari management organisasi,yang terus didiskusikan dan dilaksanakan demi perbaikan organisasi,baik sector pemasaran,keuangan,pabrik dan lain-lain.
Kedua IT architecture decisions.Dengan mengklarifikasikan teknologi sebagai pendukung bisnis organisasi yang telah dikembangkan melalui IT princplies baik secara eksplisit,selanjutnya memerlukan proses standardisasi dan integrasi di dalam suatu organisasi.
Arsitektur TI adalah pengorganisasian logika dari data,aplikasi dan infrastruktur yang dikemas dalam suatu kebijakan,hubungan dan pemilihan teknologi untuk mendapatkan integrasi dan standardisasi teknis dan bisnis yang diharapkan.
Dalam banyak kasus diindonesia saat ini banyak persoalan masalah integrasi dan koordinasi,kepentingan sektoral masih menjadi problem,sehingga sering gagalnya proyek IT diperusahaan yang menghabiskan banyak biaya.
Ketiga IT infrastructure. Prasarana dan sarana teknologi informasi yang menyangkut jaringan, computer, perangkat keras dan lunak lainnya adalah suatu kumpulan komponen yang diharapkan bias mempercepat proses perhitungan, pengiriman dalam berbagai media informasi (data,informasi,gambar,video,teks) dalam waktu yang singkat dan proses penyimpanan yang efektif.
Suatu sarana yang bias dikontrol dari pusat kekuasaan dan dipakai bersama menjadi hal yang penting.Perencanaan kapasitas,baik dipenyimpanan,pengiriman(bandwidth) maupun pelayan,menjadi penting.Tanpa ada perencanaan yang baik,maka akan menyebabkan buruknya image dan kinerja IT diperusahaan.
Keempat,business applications needs.Dalam pengembangan teknologi informasi keperluan bisnis yang spesipik sehingga kehadiran teknologi informasi memberikan suatu nilai baru bagi organisasi.Dua hal penting dalam identifikasi keperluan bisnis yang terkait dengan teknologi informasi yaitu kreativitas dan disiplin.Kreatifitas diperlukan untuk mengidentifikasi suatu cara atau proses baru dari perusahaan/organisasi sehingga ada nilai yang bermakna.Sedangkan disiplin menyangkut hal yang berkaitan dengan integrasi arsitektur sehingga meyakinkan bahwa aplikasi yang dibangun memang sesuai dengan arsitektur perusahaan yang terintegrasi dan terinovasi.
Kelima,IT investment and prioritization.Investasi teknologi informasi sering menjadi bahan yang sulit dimengerti oleh top manajeman dari suatu organisasi,hal ini dikarenakan nilai baru yang ditimbulkan tidak langsung terasa oleh organisasi.
Lain dengan membeli mesin baru atau investasi jas transportasi.Pemahaman eksekutif maupun komosaris menjadi penting.Berapa biaya yangdikeluarkan?Untuk apa dan bagaimana merekonsialisasi dari berbagai kepentingan dan keinginan dari sector lain.
Kelima dasar yang dikembangkan oleh MIT Sloan ini sangat penting dipahami oleh petinggi-petinggi organisasi agar dapat menjadi dari good corporate governance.
Tatakelola pemerintahan dengan memanfaatkan teknologi informasi atau sering sebagai e-government perlu melihat ini.Proyek e-government diberbgai daerah masih sering terjadi pemborosan dan tidak berguna,hal ini karena belum dipahami tentang pengembangan teknologi informasi dan belum adanya alat kendali baik eksekutif maupun inspektorat jendral.
Contoh
Tahap pertama,Bank Mandiri mesti memilih satu core banking system.Berdasarkan hasil evaluasi,core banking system Bank Exim-lah yang dianggap paling memungkinkan untuk diimplementasikan.Sistem ini disebut dengan MASTER(Mandiri Sistem Terpadu).MASTER hanya solusi sementara agar Bank Mandiri dapat secepatnya beroperasi dalam satu platform.MASTER tak dapat mendukung kebutuhan bisnis Bank Mandiri untuk masa mendatang,karena dibuat hanya untuk segmen korporasi.Padahal,Bank Mandiri ingin melebarkan segmenya ke consumer banking(retail banking),commercial banking,corporate banking,syariah banking,dan bahkan juga investment banking.
Tahap kedua,Bank Mandiri membuat pedoman pengembangan TI yang disusun sesuai visi Bank Mandiri.Pengembangan TI tersebut dituangkan dalam TI Strategic Plan(ISP).ISP tahun 2001-2003 dikembangkan untuk mendukung visi jangka pendek Bank Mandiri menjadi Universal Bank.Berdasarkan ISP 2001-2003,mulai Agustus 2001 Bank Mandiri menggunakan Program Emas(Enterprise Mandiri Advanced System).Pada periode ini,Bank Mandiri memperkaya dan memperbaharui delivery channel,membangun core banking system baru yang terintegrasi,membangun management information system(MIS)yang didukung teknologi data-warehouse terkini,memperkuat da memperbaharui system infrastrukturnya.Dengan investasi sebesar US$173juta,implementasi program ini memnjadi pondasi yang kokoh bagi aplikasi,informasi,dan infrastruktur yang mampu menunjang kebutuhan bisnis saat ini serta mengantisipasi pertumbuhan kedepan.
Setelah selesai ISP 2001-2003,focus pengembangan TI dituangkan pada ISP 2004-2007 yang bertujuan menempatkan Bank Mandiri sebagai Dominant &Preferred Supply Chain &Payment Bank.Investasinya US$81 juta.Pada tahap ini,Bank Mandiri melakukan optimalisas9i core banking system,pengembangan system untuk peningkatan produktivitas,manajemen risiko,serta meningkatkan pengolahan information & knowledge untuk pemahaman yang lebih baik terhadap nasabah.
Selanjutnya,untuk memenuhi kebutuhan bisnis sampai 2010,Bank Mandiri menyusun ISP 2008-2010 yang focus kepada pengembangan system dalam memenuhi lonjakan pertumbuhan bisnis dan inisiatif pertumbuhan non-organik.Misalnya,mampu memproses 5 juta transaksi per hari,6000 ATM,15 juta rekening,dan 3 juta kartu krdit.Pada periode ini juga,seluruh data center cabang luar negri telah dioperasikan di Jakarta.
Pada 2008 lalu Bank Mandiri menganggarkan dana US$65 juta untuk investasi TI,yang digunakan untuk mendukung penambahan 1.000 unit ATM,300 microbusiness,70 cabang baru,75 small business branch,8 priority banking,dan 5000 EDC.Investasi itu juga digunakan untuk meningkatkan stabilitas dan ketersediaan system dengan melakukan peremajaan infrastruktur cabang,mengoptimalkan utilisasi infrasturktur Service Orientend Architecture(SOA),melanjutkan peningkatan IT security,dan upgrade infrastruktur hast.
Pada 2009,ditengah kondisi pengetatan likuiditas,tim TI Bank Mandiri tetap melanjutkan investasi dan pengembangan system TI-nya.Menurut Sasmita,direktur teknologi dan operasional Bank Mandiri,dengan investasi US&50 juta,mereka ingin meningkatkan layanan kepada nasabah dan mengembangkan fee based income.Selain itu,Bank Mandiri melihat peluang dari program mengurangi penggunaan uang tunai(less cash society)dari Bank Indonesia.”Oleh karena itu,pada 2009 kami akan meluncurkan unit pembayaran jalan tol yang non-tunai,”ujar Sasmita.
Tuntutan tata kelola yang baik,benar dan transparan pada suatu organisasi baik di korporasi,pemerintahan bahkan di LSM semakin meningkat.Sebenarnya keinginan untuk mengembangkan tatakelola suatu organisasi bukan hal baru,tapi hal ini mencuat sejak awal 2000-an dengan menculnya beberapa skandal dibeberapa perusahaan yang menyebabkan tidak sehatnya suatu usaha.
Tata kelola organisasi seperti di pemda,universitas dan perusahaan sangat penting bagi pemegang saham,investor,wakil pengemban amanah (MWA untuk universitas BHMN),pegawai,kreditor dan pelanggan sebagai pengguna jasa.Beberapa organisasi telah mencoba mengeluarkan suatu pedoman tentang tata kelola korporasi yang baik.OECD mendefenisikan tatakelola korporasi dengan penyediaan suatu struktur untuk mendapatkan suatu tujuan dari organisasi dan pemantauan kinerja untuk menyakinkan bahwa tujuan telah tercapai.Pedoman tata kelola organisasi tidak tunggal,bisa dikembangkan sesuai dengan macam atau bentuk organisasi.

Proses Organisasi
Beberapa kasus informasi yang salah sering kita tmui,misalnya beberapa waktu lalu ada informasi tentang TKI di irak yang disandera,ternyata informasi yang dikeluarkan oleh lembaga-lembaga yang terkait salah dan berbeda.Informasi didapat melalui capturing(menulis,merekam),kemudian diproses,dikirim dan disimpan oleh beberapa mesin atau orang yang berbeda-beda.
Disetiap titik ada kemungkinan disalahgunakan untuk kepentingan tertentu baik yang disengaja ataupun karena kesalahan manusia.Kesalahan ini bias terjadi,walaupun mengkin sudah menggunakan sebagian besar teknologi informasi.
Contoh,dalam system perpajakan,untuk mendapatkan data wajib pajak,pengisian bahkan penyetoran walaupun sudah menggunakan e-filling/e-payment yang secara perhitungan bias,real time dan online,tetapi masih banyak lubang kebocoran,mulai dari pengisian sampai kepelaporan.Dengan demikian maka proses tatakelola teknologi informasi menjadi sangat penting disuatu organisasi.

Kesimpulan
Melalui makalah yang saya buat ini dapat disimpulkan bahwa IT(Imformtion Teknologi)itu sangat diperlukan,Khususnya pada bagian informasi.Apalagi pada pekembangan teknologi sekarang ini.Setiap Perusahaan dituntut agar dapat menguasai IT,baik itu didalam pengelolaan,maupun didalam pemasarannya.Karena pada kenyataanya perusahaan yang lebih menguasai IT akan lebih maju dibandingkan dengan perusahaan yang tidak menguasai IT.
Demikianlah makalah ini saya perbuat,atas perhatiannya saya uacapkan terima kasih.

Program Java

1.Menghitung luas Bujur Sangkar rumus: SISI * SISI
Program java :
import javax.swing.JOptionPane;
public class bujursangkar1
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Bujur sangkar:");
number1=Integer.parseInt(first);
sum=number1*number1;
JOptionPane.showMessageDialog(null,"Luas bujur sangkar adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}

2. Menghitung Volume KUBUS rumus: SISI * SISI * SISI
Program java :
import javax.swing.JOptionPane;
public class kubus
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Kubus :");
number1=Integer.parseInt(first);
sum=number1*number1*number1;
JOptionPane.showMessageDialog(null,"Volume Kubus adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


3.Menghitung Keliling bujur sangkar rumus: 4 * SISI
Program java :
import javax.swing.JOptionPane;
public class kell_bujursangkar
{
public static void main(String args[])
{
String first;String second;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan sisi Bujur sangkar:");
number1=Integer.parseInt(first);
sum=4*number1;
JOptionPane.showMessageDialog(null,"Keliling bujur sangkar adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


4.Menghitung Luas persegi panjang rumus: panjang * lebar
Program java :
import javax.swing.JOptionPane;
public class persegipanjang
{
public static void main(String args[])
{
String first;String second;String three;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=number1*number2;
JOptionPane.showMessageDialog(null,"Luas persegi panjang adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


5.Menghitung Keliling persegi panjang rumus: (2 * panjang) * (2 * lebar)
Program java :
import javax.swing.JOptionPane;
public class kell_persegipanjang
{
public static void main(String args[])
{
String first;String second;String three;int number1;int number2; int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=(2*number1)+(2*number2);
JOptionPane.showMessageDialog(null,"Keliling persegi panjang adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


6.Menghitung Luas Lingkaran rumus: 3,14 * (jari-jari)
Program java :
import javax.swing.JOptionPane;
public class luaslingkaran
{
public static void main(String args[])
{
String first;int number1;int sum;
first=JOptionPane.showInputDialog("Masukkan jari-jari lingkaran");
number1=Integer.parseInt(first);
sum=22/7*number1*number1;
JOptionPane.showMessageDialog(null,"Luas lingkaran adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


7. Menghitung Keliling Lingkaran rumus: 2 * (3,14 * jari-jari)
Program java :
import javax.swing.JOptionPane;
public class kellingkaran
{
public static void main(String args[])
{
String first;int number1;int sum;
first=JOptionPane.showInputDialog("Masukkan jari-jari lingkaran");
number1=Integer.parseInt(first);
sum=2*22/7*number1;
JOptionPane.showMessageDialog(null,"keliling lingkaran adalah: "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


8.Menghitung Luas Segitiga rumus: alas * tinggi / 2
Program java :
import javax.swing.JOptionPane;
public class luassegitiga
{
public static void main(String args[])
{
String first;String second;int number1;int number2;int sum;
first=JOptionPane.showInputDialog("Masukkan alas");
second=JOptionPane.showInputDialog("Masukkan tinggi");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
sum=number1*number2/2;
JOptionPane.showMessageDialog(null,"Luas segitiga adalah"+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}



9. Menghitung Volume Balok rumus: panjang * lebar * tinggi
Program java :
import javax.swing.JOptionPane;
public class balok
{
public static void main(String args[])
{
String first;String second;String third;String fourth;int number1;int number2;int number3;int sum;
first=JOptionPane.showInputDialog("Masukkan panjang :");
second=JOptionPane.showInputDialog("Masukkan lebar :");
third=JOptionPane.showInputDialog("Masukkan tinggi :");
number1=Integer.parseInt(first);
number2=Integer.parseInt(second);
number3=Integer.parseInt(third);
sum=number1*number2*number3;
JOptionPane.showMessageDialog(null,"Volume balok adalah : "+sum,"Hasil",JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}


package com.pbo.java;
import java.util.*;
public class HitungLuas
{
public static void main(String args[]){
final double PHI=3.14;
double sisi;
double panjang;
double lebar;
double alas;
double tinggi;
double jari2;
double luas;
Scanner in = new Scanner(System.in);
System.out.println("Menghitung Luas Geometri");
System.out.println("========================");
System.out.println("1.Bujur Sangkar");
System.out.println("2.Persegi Panjang");
System.out.println("3.Segitiga");
System.out.println("4.Lingkaran");
System.out.println("");
System.out.print("Masukan Pilihan Anda :");
int input=in.nextInt();
switch(input)
{
case 1 :
System.out.println("");
System.out.println("Menghitung Luas Bujur Sangkar ...");
System.out.print("Masukan Sisi :");
sisi=in.nextDouble();
luas=sisi*sisi;
System.out.println("Luas = " + luas);
break;
case 2:
System.out.println("");
System.out.println("Menghitung Luas Persegi Panjang ...");
System.out.print("Masukan Panjang :");
panjang=in.nextDouble();
System.out.print("Masukan Lebar :");
lebar=in.nextDouble();
luas=panjang*lebar;
System.out.println("Luas = " + luas);
break;
case 3 :
System.out.println("");
System.out.println("Menghitung Luas Segitiga ...");
System.out.print("Masukan Alas :");
alas=in.nextDouble();
System.out.print("Masukan Tinggi :");
tinggi=in.nextDouble();
luas=0.5*alas*tinggi;
System.out.println("Luas = " + luas);
break;
case 4 :
System.out.println("");
System.out.println("Menghitung Luas Lingkaran ...");
System.out.print("Masukan jari-jari :");
jari2=in.nextDouble();
luas=PHI*jari2*jari2;
System.out.println("Luas = " + luas);
break;
}
}
}

Program Assembly

Studi kasus Modul 1:

1.Program mencetak 0123456789 ( Gunakan INC )
.model small
.code
org 100h
Proses:
MOV AH,2
MOV DL,30h
MOV CX,0Ah
Ulang:
INT 21h
INC DL
loop Ulang
INT 20h
END Proses

2.Program Mencetak ABCDEFGHIJKLMNOPQRSTUVWXYZ ( Warna Tulisan Merah Dan Warna Dasar Hijau Gunakan DEC )
.Model Small
.code
org 100h
proses :
mov ah, 09h
mov al ,'Z'
mov bh,00
mov bl,00100100b
mov cx,26
ulang :
int 10h
Dec al
Loop ulang
int 20h
end proses


Studi Kasus Modul 2 :

1. Dikekatuhi Register AX=2125h,BX=E573h.Jumlahkan dengan ADD,AX+BX,Simpan hasilnya pada register AX
Diketahui register CX=8756h,DX=ADE1,Jumlahkan Dengan ADD,CX+DX,simpan hasilnya pada register CX,jumlahkan Dengan ADC,BX+DX+CF,Simpan hasilnya pada register BX

.model small
.code
org 100h
Proses:
mov ax,2125h
mov bx,0E573h
add ax,bx
mov cx,8756h
mov dx,0ADE1h
add cx,dx
adc bx,dx
inc al
int 20h
end Proses

2 Diketahui register AX=ABBAh,BX=BAC0h Kurangkan dengan SUB,simpan hasilnya di AX,Diketahui register CX=0123h,DX=00Bah,Kurangkan dengan SBB,CX-DX-CF,Simpan hasilnya pada register CX

.model small
.code
org 100h
TData:
JMP Proses
ALo EQU 0ABBAh
AHi EQU 123h
BLo EQU 0BACh
BHi EQU 00Bah
HslLo DW ?
HslHi DW ?
Proses:
mov ax,ALo
mov bx,BLo
sub ax,BLo
mov HslLo,ax
mov cx,AHi
mov dx,BHi
SBB cx,BHi
mov HslHi,cx
int 20h
end TData


3 Buat Program untuk mengurangkan 0123ABBAh-00BABAC0h

.model small
.code
org 100h
TData:
JMP Proses
ALo EQU 0ABBAh
AHi EQU 0123h
BLo EQU 0BAC0h
BHi EQU 00BAh
HslLo DW ?
HslHi DW ?
Proses:
mov ax,ALo
sub ax,BLo
mov HslLo,ax
mov ax,Ahi
sbb ax,Bhi
mov HslHi,ax
int 20h
end TData


4 Buat Program Perkalian:123h*321h hasil Pada DX,AX

.model small
.code
org 100h
TData:
JMP Proses
A DW 123h
B DW 321h
HslLo DW ?
HslHi DW ?
Proses:
mov ax,A
mul B
mov HslLo,ax
mov HslHi,dx
int 20h
end TData

5 Buat program pembagian 4444h/2

.model small
.code
org 100h
TData:
JMP Proses
A DW 4444h
B Dw 2
Hsl DW ?
Sisa DW ?
Proses:
sub dx,dx
mov ax,A
div B
mov Hsl,ax
mov sisa,dx
int 20h
end TData


Studi Kasus Modul 3 :

1. Membuat program memindahkan data sebagai berikut: A DD EFh , B DD FEh kedalam C DW FEEEh

.model small
.code
org 100h
tdata:
jmp proses
a dd 0EFh
b dd 0FEh
c dw 0FEEEh

Proses:
int 20h
end tdata

Studi Kasus Modul 4 :

1. Membuat program untuk mencetak kalimat: ‘Selamat Datang Di lab computer UNIKA-Medan

.model small
.code
org 100h
TData:
JMP Proses
kalimat DB'SELAMAT DATANG DI LAP KOMPUTER UNIKA-MEDAN'
Proses:
XOR BX,BX
MOV CX,41
Ulang:
MOV DL,kalimat[BX]
MOV AH,02h
int 21h
inc bx
loop Ulang
int 20h
end TData



2. Membuat program dengan output,pada baris 10 kolom 5 tercetak tulisan: ‘ Belajar Assembler sangatlah mudah’(warna tulisan merah,warna dasar hijau)

.model small
.code
org 100h
TData:
JMP Proses
kalo db'Belajar Assembly Sangatlah Mudah'

Proses:
mov ax,1300h
mov bl,00100100b
mov bh,00
mov dl,10
mov dh,5
mov cx,32
lea bp,kalo
int 10h
int 20h
end TData


3. Sama seperti soal 2 tetapi dengan tambahan ‘Belajar Assembler sangatlah mudah’

.model small
.code
org 100h
TData:
JMP Proses
kalo db'Belajar Assembler Sangatlah Mudah'
db' Belajar Assembler Sangatlah Mudah '
Proses:
mov ax,1300h
mov bl,00100100b
mov bh,00
mov dl,10
mov dh,5
mov cx,69
lea bp,kalo
int 10h
int 20h
end TData

4. Membuat program dengan output sbb:

Menu Pilihan Informasi
1.Menampilkan Tanggal Sistem
2.Menampilkan Jam Dos
3. Menampilkan Jam Dos
4. Menampilkan Besar Memori
5. Selesai

.model small
.code
org 100h
data : jmp proses
tabel DB '===============================',13,10,7,7,7,'$'
menu db ' Menu Pilihan Informasi ',13,10,'$'
satu db '1 . Menampilkan Tangal Sistem ',13,10,'$'
dua db '2 . Menampilkan Jam DOS ',13,10,'$'
tiga db '3 . Menampilkan Versi DOS ',13,10,'$'
empat db '4 . Menampilkan Besar Memori ',13,10,'$'
lima db '5 . Selesai ',13,10,'$'
proses : mov ah, 13h
mov bl, 10010110b
mov bh,00
mov cx, 240
lea bp, tabel
int 10h
lea bp, menu
int 10h
lea bp, tabel
int 10h
lea bp, satu
int 10h
lea bp, dua
int 10h
lea bp , tiga
int 10h
lea bp , empat
int 10h
lea bp , lima
int 10h
lea bp, tabel
int 10h
int 20h
end data

Studi Kasus Modul 5 :

1. Membuat program penggunaan stack dengan output:
Merdeka !
Merdeka !
Merdeka !

.model small
.code
org 100h
tdata:
jmp proses
kal db'Merdeka!'
ganti db 13,10,'$'
Proses:
lea dx,kal
push dx
push dx
mov ah,09h
int 21h
lea dx,ganti
pop dx
int 21h
pop dx
int 21h
exit:int 20h
end tdata

Listing Program Untuk Input Bilangan N

unit Uinput;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tfrminput = class(TForm)
Label1: TLabel;
einput: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
lb1: TListBox;
lb2: TListBox;
lb3: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frminput: Tfrminput;
implementation
{$R *.dfm}
procedure Tfrminput.Button1Click(Sender: TObject);
var
i:integer;
n:integer;
begin
n:=strtoint(einput.text);
lb1.Items.Clear;
lb2.Items.Clear;
lb3.Items.Clear;
for i:=1 to n do
begin
lb1.Items.add(inttostr(i));
if i mod 2 =0 then
lb2.items.add(inttostr(i))
else
if i mod 2 =1 then
lb3.items.add(inttostr(i))
end;
end;
procedure Tfrminput.Button3Click(Sender: TObject);
begin
close;
end;
procedure Tfrminput.Button2Click(Sender: TObject);
begin
lb1.Items.Clear;
lb2.Items.Clear;
lb3.Items.Clear;
einput.text:='';
einput.SetFocus;
end;
end.

Program Enkripsi-Dekripsi

Program Enkripsi-Dekripsi File Teks Menggunakan bahasa Assembly

Tutorial kali ini berasal dari tugas saat aku ngambil mata kuliah bahasa assembly. Sengaja ditampilkan di situs ini untuk disharing bagi yg sedang belajar assembly, khususnya for Linux, karena yang digunakan adalah kompiler NASM.
Yaitu tentang pembuatan program yang kegunaannya untuk mengenkripsi sekaligus juga mendekripsi file teks.. pengacakan dilakukan berdasarkan sandi/kata kunci tertentu.
Pertanyaannya kenapa dibikin pake assembly?, toh pake C kan lebih mudah.. alasannya karena emang tugas bwat mata kuliah assembly.. dan juga konon program hasil bahasa assembly pastinya berjalan lebih cepat. hal ini emang terbukti..
Tidak seluruh program dalam artikel ini dibikin pake assembly, melainkan hanya sub program nya saja. Yaitu pada fungsi enkripsi-dekripsinya saja. Sedangkan sisanya, termasuk program utama dibikin pake C dengan interface Linux-style yang khas.. yaitu command line mode..
Sebelum meneruskan setidaknya anda harus membaca referensi berikut, sebagai pengetahuan dasar dan referensi utama:
• E-book PC Assembly Language karya Paul A. Carter. Format pdf bisa didownload gratis, cari aja di google (aku lupa situsnya). buku ini bagus banget. bagi yg belajar PC assembly, must have deh..
• tutorial mengenai dasar bahasa C di Linux dan kompiler GCC. Lalu baca juga referensi fungsi getopt, ketik man getopt
Listing program disini bersifat open source (GPL lah..) and mengandung banyak keterangan & komentar yg mudah2an membantu memahaminya..
Program Enkripsi Dekripsi
Program enkripsi file teks berfungsi untuk mengenkripsi (mengacak) suatu file teks sehingga informasi di dalamnya tidak bisa dibaca. Pengacakan dilakukan berdasarkan kata kunci (key) tertentu yang diisikan oleh pengguna.
Program juga sekaligus berfungsi untuk meng dekripsi (enkripsi balik) file hasil enkripsi. Agar file dapat didekripsi dengan benar, kata kunci (kode) yang digunakan harus sama dengan kata kunci enkripsi. Jadi disini hanya terdapat 1 key (kunci) untuk melakukan enkripsi dan dekripsi (symmetric encription).
Cara kerja enkripsi dilakukan dengan menambahkan kode karakter teks sumber dengan teks kunci. Kunci yan lebih pendek dari teks sumber akan berulang-ulang sampai panjangnya sama dengan teks sumber. Misalnya panjang teks sumber 20 karakter, sedangkan kunci = “abcde” (5 karakter), maka faktor penambahan enkripsi adalah abcdeabcdeabcdeabcde.
Contoh:
; sumber : "Kucing"
; kunci : "kode"
maka:
; sumber : 75 117 99 105 110 103
; kunci : 107 111 100 101 107 111
; hasil : 182 228 199 206 217 214
Demikian pula dengan proses dekripsi, yaitu dengan melakukan operasi pengurangan teks sumber dengan kunci. Tentunya kunci harus sama dengan kunci enkripsi untuk menghasilkan teks hasil yang benar. Jika kunci tidak cocok, informasi dalam teks tidak akan terbaca..
Seperti dikatakan sebelumnya, proram ini terdiri dari 2 bagian. Terdapat 2 listing program:
• enkripsi.asm, berupa kode assembly yang berisi fungsi enkripsi
• enkripsi_main.c, berupa kode C yang berisi program utama yang memanfaatkan enkripsi.asm
listing enkripsi.asm
;
; file ini berisi fungsi enkripsi_dekripsi yang akan digunakan oleh enkripsi_main.c
;
; tugas besar mata kuliah bahasa assembly
; oleh :
; Mahantan Sinaga
;
;
; dites menggunakan Mandrake Linux 10.0
; dengan nasm 0.98.38-1mdk, gcc 3.3.2-6mdk
; teks editor Kate
;
; kompilasi & linking:
; nasm -f elf enkripsi.asm
; gcc -o enkripsiku enkripsi_main.c enkripsi.o
;
segment .data
format db "x = %d\n",0

global asm_enkripsi_dekripsi

segment .text

; fungsi asm_enkripsi_dekripsi
; void asm_enkripsi_dekripsi( char * dest, const char * src, char * kunci, int flag_enkripsi);
; parameters:
; dest - pointer ke string hasil enkripsi (pass by reference)
; src - pointer ke string yang akan dienkripsi (pass by reference)
; kunci - string untuk kode enkripsi (pass by reference)
; flag_enkripsi - <>1 -> enkripsi (pass by value)
; =1 -> dekripsi
;
; aturan:
; dengan menambahkan tiap2 karakter dari teks yang dienkripsi dengan
; karakter dari kunci yang diulang-ulang
; contoh: kunci="abcde" -> 97 98 99 100 101
;
; misal : src : "Kucing"
; kunci : "kode"
; maka:
; dest : 75 117 99 105 110 103
; kunci : 107 111 100 101 107 111
; src : 182 228 199 206 217 214
;
%define dest [ebp + 8]
%define src [ebp + 12]
%define kunci [ebp + 16]
%define flag_enkripsi [ebp + 20]
asm_enkripsi_dekripsi:
enter 0,0
push esi
push edi

mov edi, dest ; output dari enkripsi
mov esi, src ; source dari enkripsi

mov edx, kunci ; edx buat menyimpan esi dari kunci

cld

cari_loop:

; blok pemroses kunci
; memperoleh karakter kunci ke n (kunci saat ini) dari string kunci,
; hasilnya taruh di cx

push esi ; simpan dulu, karena esi akan dipakai untuk pemrosesan string kunci,
push edi

mov esi, edx ; esi = edx, edx awal = kunci (alamat elemen ke 1 dari kunci)
lodsb ; load al, inc si (al = kunci saat ini, lanjutkan pencarian)

mov cx, ax ; cx menyimpan karakter kunci saat ini (kunci ke n)

mov edx,esi ; simpan nilai esi ke edx untuk karakter kunci selanjutnya

or al, al ; set condition flags
jnz tidaknol ; jika 0 (akhir dari string kunci),
mov edx, kunci ; set edx kembali ke alamat awal kunci (looping)

tidaknol: ; kunci tidak nol (bukan akhir kunci)

; keluar pemrosesan kunci
; kunci ke n sudah didapat (dalam cl), sekarang lakukan enkripsi
; jumlahkan karakter ke n dengan kunci ke n

pop edi ; kembalikan esi, edi
pop esi

lodsb ; load AL & inc si, al = karakter ke n dari src

or al, al ; set condition flags
jz copy

cmp flag_enkripsi, word 1 ; jika flag_enkripsi = 1 -> dekripsi
je dekripsi
add al, cl ; (ENKRIPSI) jumlahkan karakter ke n dengan kunci ke n
jmp endif
dekripsi:
sub al, cl ; (DEKRIPSI) kurangkan karakter ke n dengan kunci ke n
endif:

copy:

stosb ; store AL & inc di, copy al ke dest

or al, al ; set condition flags
jnz cari_loop ; jika bukan nol (end of string), lanjutkan looping

pop edi
pop esi
leave
ret
Penjelasan :
Pada file ini, terdapat 1 fungsi yang bersifat global yaitu fungsi asm_enkripsi_dekripsi.Fungsi ini akan melakukan enkripsi sekaligus dekripsi (tergantung parameternya) Penulisan fungsi ini dibuat sesuai standar konvensi fungsi di bahasa C khususnya GCC (GNU C Compiler) di Linux.
%define dest [ebp + 8]
%define src [ebp + 12]
%define kunci [ebp + 16]
%define flag_enkripsi [ebp + 20]
Jika dalam C, fungsi tersebut akan memiliki bentuk seperti berikut :
void asm_enkripsi_dekripsi( char * dest, const char * src, char * kunci, int flag_enkripsi);
Ada 4 parameter dari fungsi, yang akan dipush ke dalam stack, yaitu
• dest, sebagai parameter pertama [ebp+8]. dest. merupakan parameter yang di pass by reference, karena ia akan berisi string. (berisi alamat awal dari string) dan nantinya akan menampung string hasil enkripsi/dekripsi.
• src, [ebp+12]. Berisi string sumber, yaitu teks yang akan dienkripsi/didekripsi. Parameter pass by reference.
• kunci, [ebp+16]. Berisi string kunci/kode, yaitu string yang akan dimanipulasi dengan src untuk proses enkripsi/dekripsi.
• flag_enkripsi, [ebp+20]. Berisi variabel untuk menandai apakah akan melakukan enkripsi atau melakukan dekripsi (bersifat boolean). Jika nilai <> 1, misalnya 0, maka fungsi akan melakukan enkripsi. Jika flag_enkripsi = 1, maka fungsi akan melakukan dekripsi.Parameter ini merupakan pass by value.
Cara kerja.
Source code enkripsi.asm dilengkapi dengan komentar program untuk memahami detail cara kerja per instruksi. Secara umum cara kerjanya adalah:
• memproses string kunci, yaitu memperoleh karakter kunci ke n, dimulai dari 0. Pertama-tama nilai edi (milik dest) dan esi (milik src) akan dipush. alamat kunci akan disimpan dalam esi yang merupakan register untuk memanipulasi string. Karakter ke n disimpan dalam cx. Kemudian index n ditambah (increment) lalu disimpan dalam edx. Index ke n perlu disimpan karena selanjutnya nilai esi akan dimanfaatkan untuk hal lain (string_input), sehingga menjaga agar index kunci berikutnya tidak hilang. Jika index ke n merupakan akhir string (kode 0), maka nilai index akan mengulang dari awal, yaitu nilai kunci ([ebp+16]) Setelah karakter ke n didapat, register esi dan edi dipop kembali sehingga sekarang berisi index dari src dan dest.
• berikutnya program akan memproses src. Src berada dalam esi dan dest berada dalam edi. Perintah lodsb akan meload alamat yang ditunjuk esi ke dalam register al kemudian menambah (increment) si. Sekarang esi menunjuk ke alamat berikutnya (n+1).
• Langkah selanjutnya melakukan manipulasi terhadap 2 karakter, yaitu karakter ke n dari kunci dan karakter ke n dari esi, yang berada dalam al. Dilakukan pengecekan flag_enkripsi. Jika 1, maka lakukan dekripsi yaitu src[n]-kunci[n]. Jika tidak 1, maka lakukan enkripsi, yaitu src[n]+kunci[n]. Setelah itu melalui perintah stosb, maka nilai al akan disimpan ke alamat yang ditunjuk edi, kemudian nilai di akan ditambah.
• Program akan berulang sampai ditemukan kode karakter end of string (0).
listing enkripsi_main.c
// enkripsi_main.c
//
// file berisi fungsi enkripsi_dekripsi yang akan digunakan oleh enkripsi_main.c
//
// tugas besar mata kuliah bahasa assembly
// oleh :
// Bayu Rizaldhan rayes

// dites menggunakan Mandrake Linux 10.0
// dengan nasm 0.98.38-1mdk, gcc 3.3.2-6mdk
// teks editor Kate
//
// kompilasi & linking:
// nasm -f elf enkripsi.asm
// gcc -o enkripsiku enkripsi_main.c enkripsi.o
//
#include
#include

#define SIZE_MAX 1024

// prototype untuk fungsi assembly
// standard C calling convention untuk GCC (GNU C Compiler)
void asm_enkripsi_dekripsi( char *, const char * , char *, int) __attribute__ ((cdecl));

////////////////////
char teks[SIZE_MAX]; // teks sumber, diambil dari file
char teks_output[SIZE_MAX]; // teks hasil pemrosesan

FILE *filenya;
FILE *fileout;
char *nama_filenya;
char *nama_fileout;

// variabel2 flag untuk option dari getopt
int ada_d = 0;
int ada_e = 0;
int ada_c = 0;
int ada_v = 0;
int ada_r = 0;
int ada_w = 0;
// variabel parameter dari getopt
char param_code[SIZE_MAX]; // argumen option -c
char param_read[100]; // argumen option -r
char param_write[100]; // argumen option -w

int i;
int proses_sukses = 0; // flag proses sukses

//
// reset teks, dengan mode r=read, w=write
//
int reset_teks(char *namafilenya, char modenya[4])
{
if ((filenya = fopen(namafilenya,modenya)) == NULL) {
printf("filenya nggak ada tuh, bikin baru ya..");
return 0;
} else return 1;
}

//
// load teks dari file
//
void load_from_file(char *nama_filenya) {
char c; // karakter satuan
int i = 0;

if (reset_teks(nama_filenya,"r")) {
while ((c= fgetc(filenya))!=EOF) {
teks[i] = c;
i++;
}
fclose(filenya);
}
}

//
// save teks_output ke file
//
void save_to_file(char *nama_filenya) {
char c; // karakter satuan
int i = 0;

if (reset_teks(nama_filenya,"w")) {
for (i=0;i
fputc(teks_output[i],filenya);
fclose(filenya);
}
}

//
// mencetak cara penggunaan program
//
void cetak_usage() {
printf("Usage: enkripsiku [-dev] [-r nama_file] [-w nama_file] [-c kode_enkripsi]\n\n");
printf("daftar_parameter\n-e -> enkripsi\n-d -> dekripsi\n-v -> tampilkan hasil proses\n\n");
printf("option e dan d tdk boleh sekaligus, boleh tidak ada keduanya\n\n");
printf("contoh penggunaan:\nenkripsiku -r teksku.txt -c kunciku -v -e -w tekshasil.txt");
printf("\nenkripsiku -r teksku.txt -d kunciku -v -e -w tekshasil.txt\n");
}
////////////////////

int main (int argc, char *argv[]) {
int ret, opt_index = 0;

struct option long_options[] = {
{ "decrypt", 0, NULL, 'd' },
{ "encrypt", 0, NULL, 'e' },
{ "code", 1, NULL, 'c' }, // parameter
{ "view", 0, NULL, 'v' },
{ "read", 1, NULL, 'r' }, // parameter
{ "write", 1, NULL, 'w' }, // parameter
{ 0, 0, 0, 0}
};

// memroses argumen program
while ((ret = getopt_long(argc, argv, "dec:vr:w:", long_options,&opt_index)) != -1) {
switch (ret) {
case 'd':
printf("melakukan dekripsi......\n");
ada_d = 1;
break;
case 'e':
printf("melakukan enkripsi......\n");
ada_e = 1;
break;
case 'c':
ada_c = 1;
strcpy(param_code,optarg);
break;
case 'v':
ada_v = 1;
break;
case 'r':
ada_r = 1;
strcpy(param_read,optarg);
printf("file input = %s\n",param_read);
break;
case 'w':
ada_w = 1;
strcpy(param_write,optarg);
printf("file output = %s\n",param_write);
break;
default:
//tampilkan tata cara (usage)
cetak_usage();
exit (1);
}
}

if (ada_r) {
//load_from_file("email2.txt");
load_from_file(param_read);
if (ada_c) {
// lakukan enkripsi dekripsi
if (ada_e == 1 && ada_d == 0) {
asm_enkripsi_dekripsi( teks_output, teks,param_code,0); // enkripsi
proses_sukses = 1;
}
else if (ada_d == 1 && ada_e == 0) {
asm_enkripsi_dekripsi( teks_output, teks,param_code,1); // dekripsi
proses_sukses = 1;
}
else if (ada_d == 1 && ada_e == 1)
printf("tidak bisa melakukan enkripsi dan dekripsi sekaligus");
else {
asm_enkripsi_dekripsi( teks_output, teks,"",0); // tidak ada -e dan -d, cukup copy teks ke teks_output
proses_sukses = 1;
}
}
else {
printf("parameter belum lengkap, minimal -r (read file) dan -c (code)");
}

}
else
cetak_usage();

if (proses_sukses && ada_v) {
// cetak hasil proses
printf("\nHasil proses : \n\n%s\n", teks_output);
}

if (proses_sukses && ada_w) {
// simpan ke file
save_to_file(param_write);
}

printf("\n-----------------------------------------------\n");
exit(0);
}
Penjelasan:
file enkripsi_main berisi fungsi utama yang memanfaatkan fungsi asm_enkripsi_dekripsi yang ada di file enkripsi.asm. Karena itu kedua file ini harus dilinking agar berjalan.
Pada file ini digunakan library getopt untuk memanfaatkan fungsi getopt_long. getopt_long berfungsi untuk memparse parameter dari argumen program sesuai dengan standar di Linux.
Ada 6 argumen option, yaitu
• -r : untuk membaca file input, option ini harus ada dan memiliki value.
• -w : untuk menulis hasil proses ke file.
• -e : untuk melakukan enkripsi
• -d : untuk melakukan dekrips
• -v : untuk mencetak hasil proses ke layar
• -c : argumen value berisi kode enkrips
option -d dan -c tidak boleh ada dalam waktu bersamaan. Tetapi boleh tidak ada keduanya.
Pada dasarnya program enkripsi_main ini adalah sebagai antarmuka untuk proses enkripsi/dekripsi yang dilakukan oleh fungsi asm_enkripsi_dekripsi pada file enkripsi.asm.
Untuk itu perlu disertakan prototype untuk fungsi assembly sesuai dengan standard c calling convention. Pada listing ini, digunakan standar kompiler GCC.
void asm_enkripsi_dekripsi( char *, const char * , char *, int) __attribute__ ((cdecl));
Penjelasan program bisa dilihat pada komentar baris pada listing program. Contoh penggunaan fungsi asm_enkripsi_dekripsi sebagai berikut:
asm_enkripsi_dekripsi( teks_output, teks,param_code,0);
artinya melakukan enkripsi (flag_enkripsi =0), pada string teks. Dan hasilnya dicopy ke teks_output.
Kompilasi dan Linking
Perintah berikut kan mengkompilasi file enkripsi.asm menjadi enkripsi.o.
$ nasm -f elf enkripsi.asm
Sedangkan mengkompilasi enkripsi_main.c sekaligus melinking dengan enkripsi.o digunakan sintaks berikut:
$ gcc -o enkripsiku enkripsi_main.c enkripsi.o
Sehingga didapatkan file executable bernama enkripsiku
Contoh pengguaan
Melakukan enkripsi file teksku.txt, dengan kode “abcde”, kemudian hasilnya ditampilkan ke layar dan disimpan pada file tekshasil.txt
$ ./enkripsiku -r teksku.txt -c abcde -v -e -w tekshasil.txt
Melakukan dekripsi file tekshasil.txt, hasilditampilkan ke layar dan disimpan pada file tekshasil.txt
$ ./enkripsiku -r tekshasil.txt -c abcde -v -d -w tekshasil.txt

CARA MEMBUAT TWITTER

Cara Membuat Twitter – Bagi teman-teman yang masih pemula di dunia maya dan ingin mencoba membuat account di twitter salah satu situs mikro blogging yang paling terkenal saat ini, maka pada artikel ini akan kita bahas cara membuat twitter atau tepatnya cara membuat account di twitter secara gratis.
Seperti halnya situs jejaring sosial misalnya facebook, maka hal yang penting dimiliki saat membuat account twitter adalah anda harus memiliki email terlebih dahulu, dan apabila anda belum memilikinya maka silahkan mendaftar dulu di situs penyedia layanan email gratisan seperti halnya di www.gmail.com atau di www.yahoo.com
Setelah teman-teman memiliki email, maka langkah untuk membuat account twitter pun sudah dapat dilakukan, yaitu pertama dengan mengunjungi situs twitter di alamat www.twitter.com

Adapun langkah-langkah untuk melakukan registrasi di situs twitter adalah sebagai berikut:
1. Klik Tanda Sign up now pada halaman utama situs twitter, dan seketika anda akan dibawa ke halaman form pengisian data-data anda
2. Pada halaman Form
a. Isikan nama lengkap anda pada bagian Full Name
b. Isikan username anda pada bagian username, misalnya “cool_mantap″ dan username yang anda pilih nantinya akan selalu diminta ketika anda ingin login di twitter di kemudian hari.
c. Isikan password anda dibagian kolom password.
d. Isikan email anda pada bagian pengisian alamat email
e. Ketikkan tanpa verifikasi yang sudah disediakan secara acak oleh sistem twitter pada bagian “Type the words above”
f. Create My Account
3. Setelah anda melakukan langkah demi langkah diatas, maka hal terakhir yang harus anda lakukan agar pembuatan twitter anda sudah lengkap adalah dengan membuka email anda, karena twitter akan mengirimkan sebuah email verifikasi kepada anda ke email yang sebelumnya anda gunakan untuk registrasi twitter.

selamat mencoba.

Asal Nama Singapura

Ratusan tahun yang lalu hiduplah Sang Nila Utama, Raja Sriwijaya. Pada suatu hari, ditemani beberapa pengawal setianya, Raja pergi berlayar. Di perjalanan angin topan datang. Para pengawal mengusulkan agar Raja membatalkan niatnya.

“Paduka, sungguh berbahaya meneruskan perjalanan pada saat seperti ini. Lebih baik kita singgah dulu ke tempat yang aman. Kalau hamba tak keliru, tempat terdekat dari sini adalah Pulau Tumasik. Bagaimana kalau kita ke sana sambil menunggu keadaan tenang,” kata kapten kapal.

Raja setuju. Perahu mereka pun merapat ke Pulau Tumasik.

Setelah mendarat, Raja meninggalkan kapal dan berkeliling melihat-lihat pulau itu. Ketika berkeliling itulah tiba-tiba seekor binatang berkelebat tak jauh darinya. Raja terkejut dan terpukau. Binatang itu begitu besar, berwarna keemasan, dan tampak gagah.

“Mahluk apakah itu?”

“Kalau hamba tak salah, orang-orang menyebutnya singa, Yang Mulia,” jawab salah seorang pengawal.

“Apa?”

“Singa.”

Raja lalu minta keterangan lebh banyak tentang biantang yang baru pertama kali dilihatnya itu. Dengan penuh perhatian Raja mendengarkana penjelasan pengawalnya.

“Kalau begitu, kita beri nama tempat ini Singapura. Artinya: Kota Singa”.

Sejak itulah kota itu bernama Singapura.

Program Assembly

;Program Pertama Aku
;Mahantan Sinaga
IDEAL
P386
JUMPS

SEGMENT CODE
ASSUME cs:code,ds:code

ORG 100h

START:

mov ax,0013h
int 10h

mov ax,cs
mov ds,ax
mov ax,0a000h
mov es,ax

lea si,[Palette]
mov dx,3c8h
xor al,al
out dx,al
mov dx,3c9h
mov cx,189*3
repz outsb

; === Set some variables ===
mov [DeltaX],1
mov [DeltaY],1
mov [DeltaZ],1

mov [Xoff],256
mov [Yoff],256
mov [Zoff],300

MainLoop:
call MainProgram

in al,60h
cmp al,1
jne MainLoop

; === Quit to DOS ===
mov ax,0003h
int 10h
lea dx,[Credits]
mov ah,9
int 21h
mov ax,4c00h
int 21h

; === Sub-routines ===

PROC WaitVrt
mov dx,3dah
Vrt:
in al,dx
test al,8
jnz Vrt
NoVrt:
in al,dx
test al,8
jz NoVrt
ret
ENDP WaitVrt

PROC UpdateAngles
; Calculates new x,y,z angles
; to rotate around
mov ax,[XAngle]
mov bx,[YAngle]
mov cx,[ZAngle]

add ax,[DeltaX]
and ax,11111111b
mov [XAngle],ax
add bx,[DeltaY]
and bx,11111111b
mov [YAngle],bx
add cx,[DeltaZ]
and cx,11111111b
mov [ZAngle],cx
ret
ENDP UpdateAngles

PROC GetSinCos
; Needed : bx=angle (0..255)
; Returns: ax=Sin bx=Cos
push bx
shl bx,1
mov ax,[SinCos + bx]
pop bx
push ax
add bx,64
and bx,11111111b
shl bx,1
mov ax,[SinCos + bx]
mov bx,ax
pop ax
ret
ENDP GetSinCos

PROC SetRotation
; Set sine & cosine of x,y,z
mov bx,[XAngle]
call GetSinCos
mov [Xsin],ax
mov [Xcos],bx

mov bx,[Yangle]
call GetSinCos
mov [Ysin],ax
mov [Ycos],bx

mov bx,[Zangle]
call GetSinCos
mov [Zsin],ax
mov [Zcos],bx
ret
ENDP SetRotation

PROC RotatePoint
; Gets original x,y,z values
; This can be done elsewhere
movsx ax,[Cube+si]
mov [X],ax
movsx ax,[Cube+si+1]
mov [Y],ax
movsx ax,[Cube+si+2]
mov [Z],ax

; Rotate around x-axis
; YT = Y * COS(xang) - Z * SIN(xang) / 256
; ZT = Y * SIN(xang) + Z * COS(xang) / 256
; Y = YT
; Z = ZT

mov ax,[Y]
mov bx,[XCos]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[XSin]
imul bx
sub bp,ax
sar bp,8
mov [Yt],bp

mov ax,[Y]
mov bx,[XSin]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[XCos]
imul bx
add bp,ax
sar bp,8
mov [Zt],bp

mov ax,[Yt]
mov [Y],ax
mov ax,[Zt]
mov [Z],ax

; Rotate around y-axis
; XT = X * COS(yang) - Z * SIN(yang) / 256
; ZT = X * SIN(yang) + Z * COS(yang) / 256
; X = XT
; Z = ZT

mov ax,[X]
mov bx,[YCos]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[YSin]
imul bx
sub bp,ax
sar bp,8
mov [Xt],bp

mov ax,[X]
mov bx,[YSin]
imul bx
mov bp,ax
mov ax,[Z]
mov bx,[YCos]
imul bx
add bp,ax
sar bp,8
mov [Zt],bp

mov ax,[Xt]
mov [X],ax
mov ax,[Zt]
mov [Z],ax

; Rotate around z-axis
; XT = X * COS(zang) - Y * SIN(zang) / 256
; YT = X * SIN(zang) + Y * COS(zang) / 256
; X = XT
; Y = YT

mov ax,[X]
mov bx,[ZCos]
imul bx
mov bp,ax
mov ax,[Y]
mov bx,[ZSin]
imul bx
sub bp,ax
sar bp,8
mov [Xt],bp

mov ax,[X]
mov bx,[ZSin]
imul bx
mov bp,ax
mov ax,[Y]
mov bx,[ZCos]
imul bx
add bp,ax
sar bp,8
mov [Yt],bp

mov ax,[Xt]
mov [X],ax
mov ax,[Yt]
mov [Y],ax

ret
ENDP RotatePoint

PROC ShowPoint
; Calculates screenposition and
; plots the point on the screen
mov ax,[Xoff]
mov bx,[X]
imul bx
mov bx,[Z]
add bx,[Zoff]
idiv bx
add ax,[Mx]
mov bp,ax

mov ax,[Yoff]
mov bx,[Y]
imul bx
mov bx,[Z]
add bx,[Zoff]
idiv bx
add ax,[My]

mov bx,320
imul bx
add ax,bp
mov di,ax

mov ax,[Z]
add ax,100d

mov [byte ptr es:di],al
mov [Erase+si],di
ret
ENDP ShowPoint

PROC MainProgram
call UpdateAngles
call SetRotation

xor si,si
mov cx,MaxPoints
ShowLoop:
call RotatePoint
call ShowPoint
add si,3
loop ShowLoop

call WaitVrt

xor si,si
xor al,al
mov cx,MaxPoints
Deletion:
mov di,[Erase+si]
mov [byte ptr es:di],al
add si,3
loop Deletion
ret
ENDP MainProgram

; === DATA ===

Credits DB 13,10,"Code by Vulture / Outlaw Triad",13,10,"$"

Label SinCos Word ; 256 values
dw 0,6,13,19,25,31,38,44,50,56
dw 62,68,74,80,86,92,98,104,109,115
dw 121,126,132,137,142,147,152,157,162,167
dw 172,177,181,185,190,194,198,202,206,209
dw 213,216,220,223,226,229,231,234,237,239
dw 241,243,245,247,248,250,251,252,253,254
dw 255,255,256,256,256,256,256,255,255,254
dw 253,252,251,250,248,247,245,243,241,239
dw 237,234,231,229,226,223,220,216,213,209
dw 206,202,198,194,190,185,181,177,172,167
dw 162,157,152,147,142,137,132,126,121,115
dw 109,104,98,92,86,80,74,68,62,56
dw 50,44,38,31,25,19,13,6,0,-6
dw -13,-19,-25,-31,-38,-44,-50,-56,-62,-68
dw -74,-80,-86,-92,-98,-104,-109,-115,-121,-126
dw -132,-137,-142,-147,-152,-157,-162,-167,-172,-177
dw -181,-185,-190,-194,-198,-202,-206,-209,-213,-216
dw -220,-223,-226,-229,-231,-234,-237,-239,-241,-243
dw -245,-247,-248,-250,-251,-252,-253,-254,-255,-255
dw -256,-256,-256,-256,-256,-255,-255,-254,-253,-252
dw -251,-250,-248,-247,-245,-243,-241,-239,-237,-234
dw -231,-229,-226,-223,-220,-216,-213,-209,-206,-202
dw -198,-194,-190,-185,-181,-177,-172,-167,-162,-157
dw -152,-147,-142,-137,-132,-126,-121,-115,-109,-104
dw -98,-92,-86,-80,-74,-68,-62,-56,-50,-44
dw -38,-31,-25,-19,-13,-6

Label Cube Byte
c = -35
rept 5
b = -35
rept 5
a = -35
rept 5
db a,b,c
a = a + 20
endm
b = b + 20
endm
c = c + 20
endm

Label Palette Byte
db 0,0,0
d = 63
rept 63
db d,d,d
db d,d,d
db d,d,d
d = d - 1
endm

X DW ?
Y DW ?
Z DW ?

Xt DW ?
Yt DW ?
Zt DW ?

XAngle DW 0
YAngle DW 0
ZAngle DW 0

DeltaX DW ?
DeltaY DW ?
DeltaZ DW ?

Xoff DW ?
Yoff DW ?
Zoff DW ?

XSin DW ?
XCos DW ?
YSin DW ?
YCos DW ?
ZSin DW ?
ZCos DW ?

Mx DW 160
My DW 100

MaxPoints EQU 125

Erase DW MaxPoints DUP (?)

ENDS CODE
END START

Penyebab Kerusakan Komputer dan Cara Mengatasinya

Berikut Merupakan Rangkuman Masalah dan kendala Yang sering Pengguna Komputer Hadapi dan Bagaimana Cara Pencegahannya :

1. Komputer Tidak Mau Hidup
Cara Mengatasinya :
- Cek koneksi kabel (dari power outletnya ke tombol power pada PC)
- Cek apakah stabilizer berfungsi atau tdak (jika memakai stabilizer)
- Cek kabel power pada CPU
- Jika masih juga tidak mau hidup permasalahanya mungkin terletak pada power supply atau MB

2. Komputer Mau Hidup Tetapi Tidak Mau Booting
Cara Mengatasinya :
Kenali Terlebih dahulu Bunyi Beep :
Beep 1 kali saja Tanda bahwa kondisi komputer baik
Beep 1 kali, panjang Terdapat problem di memory
Beep 1 kali panjang dan 3 kali pendek Kerusakan di VGA card
Beep 1 kali panjang dan 2 kali pendek Kerusakan di DRAM parity
Beep terus menerus Kerusakan dimodul memory atau memory video
- Cek dengan menggunakan software dianosa seperti sisoft sandra, PC mark04, PC mark05 dll

3. Komputer Mau Booting Tetapi Selalu “Safe Mode “ (untuk masuk ke safe mode tekan F8)
Cara Mengatasinya :
- restart kembali komputer anda
- jika masih trouble intall ulang windows anda
- jika masih safe mode juga, berarti HD anda bermasalah
cek dengan : scan disk

4. Komputer Sering Hang

Cara Mengatasinya
- Disebabkan software mengalami crash
- tekan ctrl + alt + del >> klik End task pada program yang “Not Responding”
- tekan tombol restart pada CPU
- Disebabkan hardware mengalami konflik (adanya penambahan hardware baru)
- konflik antar hardware sering terjadi pada sistem operasi windows
- install ulang windows anda, tetapi yang perlu diingat sebelum reinstall windows anda, lepaskan dulu hardware baru anda
- alankan fasilitas “add new“ hardware yang terdapat pada control panel.


5. Keyboard Tidak Dikenali Oleh Komputer
Cara Mengatasinya
- cek apakah keyboard anda sudah terpasang dengan benar
- jika sudah tapi masih juga keyboard tidak terdeteksi maka kemungkinan keyboard anda bermasalah.
- coba ganti keyboard anda, jika sudah diganti tapi juga masih bermasalah maka kemungkinan besar yang rusak adalah di bagian port keyboard di MB anda.
- Jika memang Sudah di Ganti Keyboard Baru tapi tetap tidak terdeteksi Juga Coba Ganti dengan Keyboard USB dan apabila tidak terdeteksi Juga berarti ada yang salah Pada sitem Windows Sobat

6 Mouse Tidak Dikenali Oleh Komputer (sama denagn kasus keyboard)

7. Pointer Mouse Selalu Meloncat-Loncat
Cara Mengatasinya
- mouse kotor segera di Bersihkan (khususnya pada bola mouse)

8. Komputer Sering Crash
Cara Mengatasinya :
- cek semua posisi kabel, hardware, dan juga tegangan pada casing, cek suhu pada CPU dan jua cek ram, processor dan juga vga.

9. Bila Produsen MetherBoard(MB) Tidak Diketahui
Cara Mengatasinya :
- buka casing, dan cek CPU anda biasanya sebuah MB memiliki label produsen yang sekaligus berisi spesifikasi tipe Mbnya.
- Lihat pada manual book
- Cari data Mb lewat internet, cocokan ID yang tercetak pada sticker board denan daftar yang terdapat pada situs www.fcc.gov/oet/fccid, dan cari daftar nomor ID yang dikeluarkan oleh lembaga perijinan untuk perangkat elektonik di Amerika
- Gunakan software analisa, seperti sandra99 dll.

10. Lupa Password BIOS
Cara Mengatasinya :
- Cabut batterey cmos pada cpu
- Atau dengan cara emncoba menebak bberapa password default untuk beberapa produsen bios misalkan AMI dan AWARD (contoh : A.M.I, AMI, AMI_SW, ALLY, 589589 dll)

11. Jam dan setting tanggal BIOS Selalu Berubah-Rubah
Cara Mengatasinya :
- batteray cmos sudah tidak berfungsi (mati), ganti dengan batteray yang baru

12. Menambah Perangkat Hardware Baru, Tp Tidak Terdeteksi Oleh BIOS
Cara Mengatasinya :
- Kemungkinan besar bios anda sudah kuno sehingga tidak dapat mendeteksi hardware yang baru, maka segera update bios anda (bisa download melalui internet, mis : www.windrivers.com)

13. Melacak Kerusakan Card Pada MB
Cara Mengatasinya :
- cobalah denganmencabut dan menancapkan beberapa card pada MB anda
- jika booting berhasil maka card anda tidak bermasalah begitu jua sebaliknya

14. Pasang Processor Baru Tp Tidak Terdeteksi
Cara Mengatasinya :
- cek apakah anda sudah memasang processor denan benar
- cek apakah posisi jumper pada processor sudah benar (tentang jumper pada processor bisa anda priksa pada manual booknya)

15. Crash Setelah Memasang RAM Baru
Cara Mengatasinya :
- kemungkinan ram yang anda pasang tidak kompatibel dengan komputer anda (cabut ram tersebut)

16. Menambah RAM Tapi Tidak Terdeteksi
Cara Mengatasinya :
- Lakukan pengecekan seperti ketika kasus sebelumnya
- Pastikan slot yan dipakai sesuai, misalnya : SD RAM memiliki slot yang hampir sama dengan RD RAM tetapi RD RAM, tidak bisa terdeteksi meskipun bisa dipasang pada slot jenis SD RAM.

17. Setelah Menambah RAM Proses Komputer Manjadi Semakin Lambat
Cara Mengatasinya :
- perhatikan batas kapasitas ram anda, misalnya ram jenis EDO batas maksimalnya adalah 64 MB, maka ketika dipaksakan untuk ditambah maka komputer anda menjadi semakin lambat

18. Virtual Ram
Cara Mengatasinya :
- klik kanan icon My computer, pilih propertis, kemudian pilih tab performance dan klik VIRTUAL MEMORY
- pilih item let me specify my own virtual memory setting (pilih HD yang akan digunakan sebagai virtual memory)
- klok OK

19. Monitor Tidak Mau Nyala
Cara Mengatasinya :
- pastikan semua kabel power maupun konektor yang berhubungan dengan monitor ok
- pastikan juga pin yang ada pada port VGA masuk dengan sempuran tidak ada yang bengkok apalagi tidak masuk semua/salah satu pin ke port VGA
- pastikan juga VGA card anda ok

20. Monitor Menjadi Gelap Saat Loading Windows
Cara Mengatasinya :
- kemungkinan disebabkan karena setup driver untuk monitor tidak tepat(setting frekuensinya terlalu tinggi)
- masuk dulu ke dalam kondisi safe mode (tekan F8)
- install ulang driver VGAnya

21. Tampilan Tiba-Tiba Rusak Dan Komputer Manjadi Hang
Cara Mengatasinya :
- dikarenakan suhu (pada VA card) sangat panas

22. Ukuran Tampilan monitor Tidak Sesuai Keinginan
Cara Mengatasinya :
- masuk ke display propertis (klik kana semabrang tempat pilih propertis)
- Tekan tab setting dan dan atur ukuran tampilan sesuai dengan keinginan (pada screean area)

23. Monitor Seperti Berkedip Saat Digunakan
Cara Mengatasinya :
- masuk ke display propertis (klik kana semabrang tempat pilih propertis)
- Tekan tab setting dan klik advance, kemudian klik adapter, pada bagian ini ditampilkan refresh raet yang dininkan

24. Sound Card Baru Tidak Terdeteksi
Cara Mengatasinya :
- Crash dengan saounda card yang lama
- cek pada manual booknya, apakah soundcard on boardnya perlu dimatikan atau tidak jika hendak menginstall ulang soundcard yan baru (biasanya bisa dimatikan lewat jumper atau bios)