Membuat, Menulis, dan Membaca File Teks CPU
- Buatlah class seperti di bawah ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author
Haqqi
*/
public class FileUtil
{
/*
*******variables area****** */
/*
*****constructors area***** */
/**
*
Untuk mencegah pembuatan object
*/
private
FileUtil() {
}
/*
********methods area******* */
/**
*
Set the file based on relative path
*
@param filePath Path of the file
*
@return Generated file
*/
public
static File setFile(String filePath) {
//
membuat object file baru
File
file = null;
//
mencari path dari direktori kerja
//
bisa dicek dengan print
String
path = System.getProperty("user.dir")
+
File.separatorChar + filePath;
try
{
//
construct the file based on the path
file
= new File(path);
}
catch (Exception e) {
e.printStackTrace();
}
//
jika file tidak ditemukan, maka error
if
(file == null) {
throw
new RuntimeException();
}
//
jika file tidak ada, maka membuat file baru
if
(!file.exists()) {
try
{
file.createNewFile();
}
catch (IOException ex) {}
}
return
file;
}
/**
*
Menulis array string ke dalam sebuah file. file yang akan
*
ditulis akan menjadi text file biasa.
*
@param text array string yang akan disimpan
*
@param file File
*
@return true jika sukses, false jika gagal
*/
public
static boolean fileWrite(String[] text, File file) {
try
{
//
membuat buffer
BufferedWriter
out = new BufferedWriter(new FileWriter(file));
PrintWriter
writeOut = new PrintWriter(out);
//
menulis text ke file
for
(int i = 0; i < text.length; i++) {
writeOut.println(text[i]);
}
//
menutup writer
writeOut.close();
return
true;
}
catch (IOException e) {
e.printStackTrace();
return
false;
}
}
/**
*
Membaca file text
*
@param file
*
@return
*/
public static String[]
fileRead(File file) {
try {
//
Membuat buffered reader
BufferedReader
readIn = new BufferedReader(new
FileReader(file));
//
ArrayList untuk menyimpan string setiap baris
ArrayList<String>
list = new ArrayList<String>();
//
Object sementara
String
data;
//
Membaca setiap baris sampai akhir
while ((data
= readIn.readLine()) != null) {
list.add(data);
}
//
Menutup reader
readIn.close();
//
mengembalikan array dalam bentuk string
return list.toArray(new String[0]);
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
|
- Coba Anda pelajari sekilas class untuk manipulasi file di atas. Method setFile() akan menentukan lokasi file dan membuat object dari class File agar mudah diakses oleh berbagai method lain. Jika file yang diinginkan tidak ditemukan, maka program akan membuat file tersebut. Method ini cukup memudahkan dan mempersingkat proses pembuatan object file. Berikutnya, Anda cukup memanggil method tersebut dengan:
1
|
File file =
FileUtil.setFile("coba.txt");
|
- Setelah file sudah di-set, maka method yang lainnya bisa dipergunakan. Untuk membaca file, Anda cukup memanggil method:
1
2
3
4
5
|
String[] hasil =
FileUtil.fileRead(file);
// hanya untuk
mengecek isi file
for (String
baris : hasil) {
System.out.println(baris);
}
|
- Sedangkan untuk menulis data ke dalam file tersebut, juga sangat mudah. Anda cukup menyiapkan data dalam bentuk array string, yang setiap elemennya merupakan baris dari teks. Setelah itu, tinggal memanggil method berikutnya:
1
2
|
String[] text = {"Baris
Satu", "Baris Dua", "Ini yang Ketiga"};
FileUtil.fileWrite(text,
file);
|
- Untuk mencobanya, Anda bisa membuat sebuah class Tester seperti di bawah ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import java.io.File;
public class Tester
{
public static void main(String[]
args) {
File
file = FileUtil.setFile("coba.txt");
String[]
text = {"Baris Satu", "Baris Dua", "Ini yang Ketiga"};
FileUtil.fileWrite(text,
file);
String[]
hasil = FileUtil.fileRead(file);
//
hanya untuk mengecek isi file
for (String
baris : hasil) {
System.out.println(baris);
}
}
}
|
Tampilan command line
A. Pengertian Register
Register
adalah memori berukuran sangat kecil dengan kecepatan akses sangat
tinggi. Register digunakan untuk menyimpan data dan instruksi yang sedang
diproses, sementara itu data dan instruksi lainnya yang menunggu giliran
diproses akan disimpan dalam main memory. Register dari sebuah
komputer secara kolektif disebut sebagai kumpulan register (register set).
. Register dapat menyimpan
informasi dalam kode biner dan menampilkannya kembali dan dikatakan dapat
melakukan operasi baca dan tulis. Register didalam prosesor mempunyai dua
fungsi, sebagai berikut:
• User-visible register :
memungkinkan bahasa mesin dapat mengurangi resensi memori utama dengan
mengoptimalkan penggunaan register.
• Control dan status register :
digunakan oleh prosesor untuk mengontrol operasi prosesor dan mengontrol
eksekusi program.
B. Register User General Purpose
General
Purpose Register yaitu register yang mempunyai berbagai macam
fungsi yang berhubungan dengan data yang sedang diproses. Misal, jika
digunakan untuk menampung data yang sedang diolah disebut sebagai operand
register, sedangkan jika digunakan untuk menampung hasil olahan disebut
sebagai accumulator. Setiap register
dapat dialamati sebagai register 32-bit, register 16-bit, dan register 8-bit
Ø Register Akumulator
Akumulator merupakan
sebuah register di
mana aritmatika menengah dan hasil logika disimpan. Sebuah komputer yang
register seperti akumulator, maka akan sangat diperlukan untuk menulis hasil
perhitungan masing-masing (penjumlahan, perkalian, pembagian, dll) ke memori
utama, yang mungkin hanya untuk dibaca kembali lagi untuk digunakan dalam
operasi berikutnya. Register ini berfungsi sebagai:
a. tempat penyimpanan
sementara hasil suatu operasi aritmatika atau logika;
b. tempat memasukkan nomor
layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi;
Ø Register Data
Data register merupakan
register serbaguna yang berfungsi sebagai:
a.
tempat menyimpan setengah bagian terbesar hasil suatu perkalian bilangan 16-bit
dan 32-bit;
b.
tempat menyimpan setengah bagian terbesar suatu bilangan yang akan dikenai
operasi pembagian, serta sisa suatu pembagian.
Register
data hanya dapat dipakai untuk menampung data dan tidak dapat digunakan untuk
kalkulasi dan alamat operand.
Ø Register Alamat
Register Alamat hanya dapat
digunakan untuk menyimpan alamat atau untuk kalkulasi alamat
operand. Register alamat, dapat berisi:
(a) alamat di main memory,
(b) alamat instruksi di main
memory,
(c) bagian alamat yang
digunakan dalam penghitungan alamat lengkap.
Contoh
register alamat yaitu Base Registers, Segment Register, Index Register, Stack
Pointer.
Ø Register Kode Kondisi /
Register Flag
flag
register merupakan suatu pemberi tanda setiap operasi contohnya jika kita
sedang menjalankan interupt maka if akan hidup atau jika sedang menjalankan
debugger maka if akan hidup. Macam-macam dari flag register adalah of (oferflow
flag), df (direction flag), if (intterupt flag), tf (trap flag), sf (sign
flag), zf (zero flag), dan cf (carry flag).
Bit-bit pada flag register akan mengalami perubahan,
tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai
berikut:
1. C (carry):
mengindikasikan ada/tidaknya bawaan (carry) setelah operasi pengurangan. C = 1
berarti ada bawaan, C = 0 berarti tidak ada bawaan. Bit C berfungsi
mengidentifikasi kesalahan (error) pada beberapa program dan prosedur
(procedure).
2. P (parity):
mengindikasikan jumlah bit dalam suatu data. P = 0 berarti paritasnya ganjil, P
= 1 berarti paritasnya genap. Paritas dapat digunakan untuk pengecekan
kesalahan pengiriman data.
3. A (auxiliary carry):
mengindikasikan ada/tidaknya bawaan (carry) pada bit ke-3 dan ke-4 setelah
operasi pengurangan. A=1 berarti ada bawaan, A=0 berarti tidak ada bawaan. Bit
A ini relatif jarang digunakan dalam pemrograman.
4. Z (zero) : mengindikasikan
apakah hasil suatu operasi aritmatika atau logika bernilai nol atau bukan. Bila
Z = 1 berarti hasilnya nol dan Z = 0 berarti hasilnya bukan nol. Bit Z ini
hampir sama dengan bit C, yakni berfungsi untuk mengidentifikasi kesalahan
dalam suatu program.
5. S (sign) : mengindikasikan
apakah hasil suatu operasi aritmatika atau logika positif atau negatif. Bila S
= 1 berarti hasil negatif dan S = 0 berarti hasilnya positif.
6. T (trap) : bila di set 1,
dimungkinkan melakukan debugging (penelusuran kesalahan).
7. I (interrupt) :
mengendalikan operasi interupsi perangkat keras. Bila I = 1 berarti pin INTR
enable (bisa digunakan), bila I = 0 berarti INTR disable (tidak bisa
digunakan). Untuk mengendalikannya dapat dilakukan dengan instruksi STI
(mengeset I=1) dan CLI (mereset I=0).
8. D (direction) :
mengendalikan arah pencacahan (increment atau decrement) DI dan SI pada operasi
string. Bila D = 1 arah pencacahan adalah turun (decrement), bila D = 0
pencacahan naik (increment). Untuk mengendalikannya bisa dengan instruksi STD
(mengeset D=1) dan CLD (mereset D=0).
9. O (overflow) :
mengindikasikan apakah hasil operasi penjumlahan atau pengurangan melampaui
kapasitas mesin atau tidak.
10. IOPL (input-output
privilege level) : digunakan untuk operasi protected mode untuk memilih tingkat
keistimewaan (privilege level) piranti masuk-keluaran.
11. NT (nested task) :
mengindikasikan apakah operasi yang sedang dilakukan digandeng (nested) dengan
operasi lain pada operasi protected mode.
12. RF (resume) : digunakan
saat debugging untuk mengendalikan kelanjutan eksekusi.
13. VF (virtual mode) :
memilih operasi virtual mode pada operasi protected mode.
14. AC (alignment check) :
untuk mengecek apakah suatu data word atau doubleword dialamati ke memori yang
bukan data word atau bukan doubleword.
Ø Register Indeks
Index
Register ini dapat digunakan sebagai sebuah register serbaguna, akan tetapi
lebih sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori
pada operasi-operasi string. Index
register yang terbagi atas dua register yaitu :
1) register si (source index
register)
register
si merupakan register yang mencatat alamat memori yang isi memorinya akan
digunakan. Register si sebagai sumber pembacaan memori.
2) register di (destination index
register)
register di seperti si juga
membaca alamat memori untuk tempat tujuan penulisan data di memori
Ø Register Pointer
Pointer
register adalah rergister yang mempunyai tugas khusus untuk menunjukan alamat
offset, yang terbagi atas tiga register yaitu :
1) register ip (instruction
pointer)
register
ip fungsinya menunjukkan offset dari alamat program. Yang berpasangan dengan
register cs
2) register sp (stack pointer)
register
sp fungsinya mencatat alamat stack dan menunjukkan offset dari alamat stack,
yang berpasangan dengan register ss
3) register bp (base pointer)
fungsi
dari register bp adalah untuk membaca dan menulis dengan segment ss (stack
pointer)
C. Register Control dan Status
Register control dan status adalah
register-register yang digunakan oleh unit kontrol untuk mengontrol operasi CPU
dan oleh program sistem operasi untuk mengontrol eksekusi
program. Sebagian dapat diakses dengan instruksi mesin yang dieksekusi
dalam mode kontrol atau kernel sistem operasi.
1) Program Counter/ Register
Counter/ PC
register
cx biasanya berfungsi sebagai counter atau digunakan jika nanti ada melakukan
berapa banyak kita melakukan looping atau pengulangan. Atau lebih tepatnya
menentukan banyaknya looping atau pengulangan. Cx terbagi atas high dan low
yaitu :
· register ch (8bit) sebagai
register high
· register cl (8bit) sebagai
register low
2) Register Intruksi
Register instruksi
adalah register yang berisi instruksi terakhir yang diambil.
a. IR (Instruction Register)
digunakan untuk menyimpan instruksi yang sedang dieksekusi dalam CPU.
b. Instruction Buffer untuk
menyimpan instruksi instruksi yang menunggu giliran untuk dieksekusi dalam CPU.
3) Memory Addres Register (MAR)
MAR
(Memory Address Register) atau register penunjuk alamat memori merupakan
register yang menampung alamat data atau instruksi pada main memory yang akan
diakses, baik itu yang akan diambil (dibaca) maupun yang akan diletakkan
(disimpan/ditulis).
Spesifikasi
MAR :
· Memuat alamat dari lokasi
memori yang akan diakses (baca/tulis)
· Jumlah bit MAR menentukan
jumlah maksimum dari memori fisik yang dapat dipasang dalam suatu komputer.
· Jika MAR terdiri dari n bit
berarti alamat memori yang valid adalah 0 hingga 2n – 1
Proses
kerja MAR (antara CPU dan memory)
MAR
merupakan salah satu register yang digunakan sebagai interface antara CPU dan
main memory. MAR menampung alamat data atau instruksi yang dikirim dari main
Memory ke CPU atau yang akan direkamkan ke Main Memory.
4) Memory Buffer Register (MBR)
Memory buffer register
merupakan tempat penyimpanan (sementara) data yang baru saja dibaca dari
atau data yang akan dituliskan ke memory. Atau dengan kata lain merupakan
tempat untuk menampung data yang akan ditulis ke memori yang alamatnya ditunjuk
MAR atau untuk menampung data dari memori (yang alamatnya ditunjuk oleh MAR)
yang akan dibaca.
MBR berperan dalam proses
pengaksesan memori yaitu dalam proses read/write dari atau ke memori.
No comments:
Post a Comment