Daisypath Friendship tickers

Selasa, 27 Maret 2012


MEUTIA YOANSYAH
09100303004
TK’10
TUGAS BESAR LARIK/ARRAY

1
Algoritma Pemrograman
FUNGSI
Sub Pokok Bahasan
• Pendahuluan
• Pendefinisian Fungsi
• Pemanggilan Fungsi
• Penggunaan Prosedur atau Fungsi?
2
Pendahuluan
• Seperti halnya prosedur, fungsi juga
merupakan modul program yang
mempunyai tujuan spesifik
• Fungsi adalah modul program yang
memberikan/mengembalikan (return)
sebuah nilai dan tipe tertentu (tipe dasar
atau tipe bentukan)
Pendefinisian Fungsi
• Sebagaimana halnya dengan prosedur, fungsi diakses
dengan memanggil namanya. Selain itu, fungsi juga
dapat mengandung daftar parameter formal
• Parameter pada fungsi selalu merupakan parameter
masukan. Jenis parameter masukan pada fungsi
disebabkan oleh kenyataan bahwa parameter pada
fungsi merupakan masukan yang digunakan oleh fungsi
tersebut untuk menghasilkan nilai
• Struktur fungsi sama dengan struktur algoritma yang
sudah dikenal sebelumnya:
– ada bagian header yang berisi nama fungsi dan spesifikasi
fungsi
– bagian Deklarasi
– badan fungsi
3
Notasi algoritma untuk mendefinisikan
fungsi
function NamaFungsi(input daftar parameter formal)→ →→ →tipe hasil
{ Spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang
dikembalikan oleh fungsi. }
DEKLARASI
{ semua nama yang dipakai dalam algoritma fungsi
dideklarasikan di sini. Nama yang didefinisikan di dalam
Deklarasi lokal hanya dikenal dan dipakai di dalam fungsi
ini saja }
DESKRIPSI:
{ badan fungsi, berisi kumpulan instruksi untuk menghasilkan
nilai yang akan dikembalikan oleh fungsi }
return hasil { pengembalian nilai yang dihasilkan fungsi }
Perihal fungsi
• Tipe hasil menspesifikasikan tipe nilai yang diberikan
oleh fungsi. Nilai yang diberikan oleh fungsi dapat
bertipe dasar maupun bertipe bentukan. Sebagaimana
halnya pada prosedur, parameter fungsi pada fungsi
tidak selalu harus ada
• Semua nama peubah/konstanta yang hanya berlaku di
dalam fungsi saja dideklarasikan di dalam bagian
Deklarasi (lokal). Nama yang didefinisikan di dalam
bagian Deklarasi fungsi hanya dikenal dan berlaku di
dalam fungsi yang bersangkutan saja, fungsi lain atau
program utama tidak dapat menggunakannya
4
Pemanggilan Fungsi
• Fungsi diakses dengan cara memanggil
namanya dari program pemanggil, diikuti
dengan daftar parameter aktual (bila ada)
• Karena fungsi menghasilkan nilai, maka nilai
tersebut dapat ditampung dalam sebuah peubah
yang bertipe sama dengan tipe fungsi atau nilai
yang dikembalikan oleh fungsi dapat langsung
dimanipulasi. Parameter aktual dapat berupa
konstanta, nama konstanta, atau nama peubah
Contoh 1: Fungsi untuk menghasilkan
nilai F(x)= x2+2x–3, x R
• F adalah nama fungsi, tipenya real
• x adalah parameter (by value) formal
• Di dalam badan fungsi, nilai yang dihasilkan oleh fungsi
dikembalikan (return) ke titik pemanggilan:
return x*x + 2*x – 3
function F(input x:real) → real
{ Mengembalikan nilai F(x) = x2 + 2x – 3, x Є R }
DEKLARASI
{ tidak ada }
DESKRIPSI:
return x*x + 2*x – 3
5````````````````````````````````````````````````````````````````````````````````````````````````````````````````
Contoh 2: Pemanggilan Fungsi F(x)=
x2+2x–3, x R
• Fungsi dapat dipanggil dari program utama atau dari modul program lain. Di
dalam DEKLARASI program pemanggil harus dideklarasikan prototip atau
header fungsi yang digunakan. Pendeklarasian prototip fungsi di dalam
DEKLARASI diperlukan agar fungsi tersebut dikenal oleh program
pemanggil serta cara fungsi dipanggil
• Fungsi dari Contoh 1 dapat dipanggil untuk menampilkan tabel nilai-nilai x
dan F(x) di dalam selang [10,15] dengan Δx = 0.5 seperti contoh berikut:
Algoritma
CONTOH_PEMANGGILAN_FUNGSI
{ Program utama untuk
pemanggilan
fungsi F }
DEKLARASI
x : real
function F(input x:real) → real
{ Mengembalikan nilai F(x) = x2
+
2x – 3, x Є R }
return x*x + 2*x - 3
DESKRIPSI:
write(‘-------------------‘)
write(‘ x F(x) ‘)
write(‘-------------------‘)
x ← 10.0
while x ≤ 15.0 do
write(x,‘ ‘,F(x))
x ← x + 0.5
endwhile
write(‘-------------------‘)
6
Penggunaan Prosedur atau Fungsi?
• Fungsi lebih tepat digunakan apabila modul program
mengembalikan sebuah nilai, sementara prosedur
digunakan bila modul menghasilkan efek netto dari (satu
atau) sekumpulan aksi. Namun dalam praktek, seringkali
perbedaan antara keduanya tidak jelas, karena sebuah
prosedur dapat juga ditulis sebagai fungsi, demikian pula
sebaliknya. Pemilihan apakah sebuah modul
direalisasikan sebagai fungsi atau prosedur bergantung
pada kebutuhan dan seni memprogram
• Fungsi dapat dikonversikan sebagai prosedur dengan
menyatakan nilai yang dikembalikan oleh fungsi tersebut
sebagai parameter keluaran prosedur. Demikian juga,
prosedur yang mempunyai satu buah parameter
keluaran dapat ditulis sebagai fungsi dengan
menyatakan parameter keluaran sebagai nilai yang
dikembalikan oleh fungsi
Mengubah fungsi menjadi prosedur
Contoh:
fungsi Maks
dan program
utama untuk
menentukan
bilangan
terbesar di
antara dua
buah bilangan
Algoritma MENENTUKAN_MAKSIMUM
{ Program utama yang memanggil fungsi
MAKS
untuk menentukan nilai maksimum dari dua
buah
bilangan buat a dan b. }
DEKLARASI (* Program Utama *)
a, b : integer
function Maks(input a,b : integer)→
integer
{ Mengembalikan harga terbesar dari a dan
b }
DEKLARASI (* Fungsi *)
{ tidak ada }
DESKRIPSI : (* Fungsi *)
if a ≥ b then
return a
else
return b
endif
DESKRIPSI : (* Program Utama *)
read(a,b)
write(Maks(a,b))
7
Di samping
sebagai fungsi,
fungsi Maks
juga dapat
dituliskan
sebagai
prosedur
TentukanMaks
dan program
utama
Algoritma MENENTUKAN_MAKSIMUM
{ Program utama yang memanggil prosedur
TentukanMaks
untuk menentukan nilai maksimum dua buah
bilangan
bulat a dan b }
DEKLARASI (* Program Utama *)
a, b, m : integer
procedure TentukanMaks(input a,b :
integer, output
maks : integer)
{ Menentukan nilai terbesar dari a dan b
}
{ K.awal: a dan b sudah terdefinisi nilai
}
{ K.akhir: maks berisi nilai terbesar
dari a atau b }
DEKLARASI (* Prosedur *)
{ tidak ada }
DESKRIPSI : (* Prosedur *)
if a ≥ b then
maks ← a
else
maks ← b
endif
DESKRIPSI : (* Program Utama *)
read(a,b)
TentukanMaks(a,b,m)
write(m)
Mengubah
prosedur
menjadi fungsi
Contoh:
prosedur
HitungRataRata
dan program
utama untuk
menghitung nilai
rata-rata dari
sejumlah data
bilangan bulat
Algoritma MENGHITUNG_RATA_RATA
{ Program utama untuk menghitung nilai rata-rata N
buah bilangan bulat yang dibaca dari piranti masukan}
DEKLARASI (* Program Utama *)
Ndata : integer
rerata : real
procedure HitungRataRata(input N : integer, output
rata : real)
{ Menghitung nilai rata-rata N buah bilangan bulat }
{ K.awal: N berisi banyaknya bilangan bulat, N > 0 }
{ K.awal: rata berisi rata-rata seluruh bilangan }
DEKLARASI (* Prosedur *)
x : integer { data bilangan bulat yang dibaca
dari piranti masukan }
k : integer { pencacah banyak bilangan }
jumlah : integer { jumlah seluruh bilangan }
DESKRIPSI : (* Prosedur *)
jumlah ← 0 { inisialisasi penjumlah }
for k ← 1 to N do
read(x)
jumlah ← jumlah + x
endfor
rata ← jumlah/N { rata-rata seluruh bilangan }
DESKRIPSI : (* Program Utama *)
read(Ndata)
HitungRataRata(Ndata,rerata)
write(rerata)
8
Prosedur
HitungRataRata
memiliki satu
parameter keluaran,
karena itu ia dapat
diubah menjadi fungsi.
Apabila ditulis sebagai
fungsi, maka
parameter keluaran
rata tidak diperlukan
lagi, karena nilai rata
merupakan nilai yang
dihasilkan (return
value) oleh fungsi
Algoritma MENGHITUNG_RATA_RATA
{ Program utama untuk menghitung nilai rata-rata
N buah
bilangan bulat yang dibaca dari piranti masukan
}
DEKLARASI (* Program Utama *)
Ndata : integer
rerata : real
function RataRata(input N : integer) → real
{ Menghitung nilai rata-rata N buah bilangan
bulat yang
dibaca dari piranti masukan. Rata-rata bilangan
merupakan nilai yang dikembalikan oleh fungsi }
DEKLARASI (* Fungsi *)
x : integer {data bilangan bulat}
k : integer {pencacah banyak bilangan}
jumlah : integer {jumlah seluruh bilangan}
DESKRIPSI : (* Fungsi *)
jumlah ← 0 { inisialisasi penjumlah }
for k ← 1 to N do
read(x)
jumlah ← jumlah + x
endfor
return jumlah/N {rata-rata seluruh bilangan}
DESKRIPSI : (* Program Utama *)
read(Ndata)
write(RataRata(Ndata))
Summary
• Fungsi adalah modul program yang memberikan/mengembalikan
(return) sebuah nilai dan tipe tertentu (tipe dasar atau tipe bentukan)
• Struktur fungsi terdiri dari bagian header, bagian Deklarasi dan
badan fungsi
• Semua nama peubah/konstanta yang hanya berlaku di dalam fungsi
saja dideklarasikan di dalam bagian Deklarasi (lokal). Nama yang
didefinisikan di dalam bagian Deklarasi fungsi hanya dikenal dan
berlaku di dalam fungsi yang bersangkutan saja, fungsi lain atau
program utama tidak dapat menggunakannya
• Fungsi diakses dengan cara memanggil namanya dari program
pemanggil, diikuti dengan daftar parameter aktual (bila ada)
• Fungsi dapat dikonversikan sebagai prosedur, demikian juga
prosedur yang mempunyai satu buah parameter keluaran dapat
ditulis sebagai fungsi

BAB II MIKROPROSESOR INTEL 8088


BAB II
MIKROPROSESOR INTEL 8088


Tujuan
Setelah mempelajari bab ini, mahasiswa mampu:
a.              Memahami konfigurasi pin 8088
b.             Mengidentifikasi blok  arsitektur internal 8088
c.              Menjelaskan fungsi register yang ada di 8088
d.             Memahami instruksi-instruksi 8088 dan mengaplikasikan instruksi tersebut dalam bahasa asembler.

Mikroprosesor Intel 8088 adalah multipurpose mikroprosesor yang diimplementasikan dengan teknologi N-channel, depletion load, silicon gate (HMOS-II). Dipasarkan dengan format 40-pin CERDIP (Ceramic Dual Inline Package). Mikroprosesor ini termasuk keluarga mikroprosesor 8 bit dan 16 bit. Mikroprosesor Intel 8088 kompatible secara langsung dengan software yang didesain untuk mikroprosesor 8086 dan 8080/8085, dan secara hardware juga kompatible dengan mikroprosesor 8080/8085, dan konfigurasi pin 8088 pada gambar 2.1.



 




















Gambar 2.1 Pin 8088


Keterangan

GND                   : ground (0 volt)
Vcc                      : +5 volt
D0 – D7                     : Data bus (8 informasi biner = 1 byte)
                              ada 28 = 256 kombinasi data (00H – FFH)      untuk kode ASCII
A0 – A19                   : Address bus (20 informasi biner)
                              ada 220 = 1048576 kombinasi harga, berarti
                              ada 1048576 lokasi memori yg dpt dialamati
read                     : sinyal kontrol untuk membaca
write                    : sinyal kontrol untuk menulis
clock                    : frekuensi kerja μP8088 (5 MHz atau 8 MHz)
reset                     : menginisialisasi kembali semua isi register
ALE                    : Address Latch Enable,
                              menandakan bahwa pin 9 s.d pin 16 menyimpan informasi alamat

Kemampuan Bus
1.      Lebar dari bus data sering digunakan untuk mengklasifikasikan μP.
Contoh: μP8088 adalah microprocessor 8-bit karena jumlah pin untuk bus data
sebanyak 8 buah (D0–D1–D2–D3–D4–D5–D6–D7 : pin no. 9 – 16).
2.      Lebar dari bus alamat menyatakan jumlah maksimum blok memory yang dapat diakses oleh mikroprosesor.
a.       μP dengan 1 buah alamat (A) hanya dapat mengakses 2 blok memori yaitu pada saat  A=0 dan A=1


 








b.      μP dengan 2 buah alamat (A0 dan A1) hanya dapat mengakses 4 blok memori yaitu pada saat












Jumlah jalur alamat
Total blok memori
Kapasitas memori (1 blok memori = 1 byte)
keterangan
1
21 = 2
2 byte

2
22 = 4
4 byte

16
216 = 65536
65536 byte = 64 K byte
i8080, Z80
20
220 = 1048576
1048576 byte = 1024 K byte = 1 M byte
i8088

Contoh: uP 8088 memiliki bus alamat dengan lebar 20 bit sehingga uP 8088 dapat mengakses memori berkapasitas maksimum 220 =1048576 blok memori atau 1 Mb. Sedangkan bus kontrol memiliki lebar 1 saluran untuk setiap fungsi.

Register
Pada bagan organisasi komputer, memori diletakkan terpisah dari mikroprosesor. Jika bagan tersebut diimplementasikan, uP harus mengakses memori setiap saat. Dan karena kecepatan memori jauh lebih lambat dari uP (sebagai contoh uP Pentium IV telah mencapai kecepatan 2 GHz sedangkan DDRAM maksimum hanya memiliki kecepatan 0.8 GHz), maka kecepatan kerja uP akan sangat dipengaruhi oleh kecepatan memori. Untuk mempercepat pemrosesan data di dalam mikroprosesor, selain CU dan ALU, mikroprosesor juga akan membutuhkan memori yg memiliki kecepatan sama dengan uP. Untuk melakukannya, memori tersebut harus diimplementasikan didalam mikroprosesor. Memori ini disebut dengan register.

Jenis register berdasarkan informasi yg disimpannya dapat dibagi menjadi 4.
1. Register Data
digunakan untuk menyimpan data yg diperlukan untuk suatu operasi.
Terdiri dari: AX (Accumulator), BX (Base), CX (Counter), DX (Data)



2. Register Alamat
karena jumlah register data sangat terbatas, maka sebagian besar data tetap diletakkan di memori. Untuk dapat mengaksesnya, uP membutuhkan alamat dari data tersebut yg disimpan oleh register alamat.
Terdiri dari: SP (Stack Pointer), BP (Base Pointer), SI (Source Index), DI (Destination  Index), DS (Data Segment), ES (Extra Segment), SS (Stack Segment), CS (Code Segment), IP (Instruction Pointer) dan BX (Base)





3. Register Status (Flags)
digunakan untuk menyimpan status dari hasil operasi yg menggunakan ALU. Terdiri dari: OF (Overflow Flag), DF, IF, TF, SF (Sign Flag), ZF (Zero Flag), AF, PF, CF (Carry Flag)


 








4. Register Instruksi
digunakan untuk menyimpan instruksi yang sedang dikerjakan
Catatan:
Register BX selain dapat digunakan sebagai register data dapat juga digunakan sebagai register alamat Lebar semua register uP8088 adalah 16 bit = 2 byte. Sehingga setiap register dapat berharga 0000H s.d. FFFFH atau 216 = 65536 kombinasi harga. Setiap register akan diakses (dibaca/ditulis) dalam format 16 bit tersebut, kecuali register data dapat diakses dalam format 8 bit = 1 byte (AH, AL, BH, BL, CH, CL, DH, DL).









 




AH
AL
BH
BL
CH
CL
DH
DL




Bagan dasar 𝛍P Intel 8088


 

























Elemen didalam mikroprosesor adalah :
CU (Control Unit) adalah manajer dari semua unit. CU mengatur keselarasan kerja setiap unit. Apa yang harus dilakukan oleh suatu unit, semuanya diketahui oleh CU dengan bantuan microprogram yang ditanamkan padanya. Pengontrolan oleh CU dilakukan melalui Bus Kontrol (panah dari/ke Control Unit).

Instruction Decoder bertugas untuk menerjemahkan suatu instruksi dengan cara membandingkannya dengan tabel instruksi yang dimilikinya. Hasil dekoding diberikan ke
CU, dan CU akan membangkitkan sinyal-sinyal kontrol yang diperlukan untuk melaksanakan instruksi tersebut.

Register adalah memori khusus di dalam uP. Untuk mengidentifikasikannya, register memiliki nama khusus yang juga sekaligus mencerminkan fungsi register tersebut. Berdasarkan isinya, register dapat dibedakan menjadi :
·         Register Data memiliki lebar 16 bit namun dapat diakses dalam format 2x8 bit:
Accumulator : AX = AH+AL
Base Register : BX = BH+BL
Counter Register : CX = CH+CL
Data Register : DX = DH+DL
·         Register Alamat memiliki lebar 16 bit :
Code Segment : CS, menyimpan alamat segment dari program
Instruction Pointer : IP, menyimpan alamat offset dari program
Data Segment : DS, menyimpan alamat segment dari data
Index Register : BI (Base Index), SI (Source Index), DI (Destination Index),
Pointer Register : BP (Base pointer),
Stack Segment : SS, menyimpan alamat segment dari stack
Stack Pointer : SP, menyimpan alamat offset dari stack
Base Register : BX
·         Register status (Flag) berfungsi untuk menyimpan status dari suatu operasi
·         Register instruksi menyimpan instruksi yang akan dikerjakan oleh CPU (InstructionRegister)

ALU (Arithmetic and Logic Unit) adalah mesin penghitung (kalkulator) dari CPU. CU akan menggunakan ALU jika instruksi yang dikerjakan membutuhkan perhitungan aritmetika (contoh: ADD, SUB) atau logika (contoh: AND, OR, XOR). Jika suatu instruksi aritmetika dan logika dieksekusi, maka hasil operasinya dapat mengubah salah satu bit di register status.

2.2 . Diagram Pewaktu Mikroprosesor  8088
Diagram  waktu  yang  menunjukkan  siklus  baca/  tulis  ketika  terjadi  operasi  I/O  dan Memori  oleh  mikroprosesor.  Seluruh  penjelasan  tentang  pena-pena  pada  mikroprosesor 8088  ini akan selalu mengacu pada diagram  pewaktuan seperti pada gambar  berikut.

Gambar 2-2. Diagram pewaktuan  mikroprosesor  8088
Pena  pada  µP  8088  ada  yang  tidak  dipengaruhi  oleh  perubahan  mode  baik  mode
maksimum  ataupun  mode  minimum  dan  ada  pula  pena  yang  berfungsi  hanya  pada  saat mode maksimum  saja.
Pena  yang  tidak  dipengaruhi  oleh  perubahan  mode  baik  mode  maksimum  ataupun
mode minimum, diantaranya adalah :
a.       Bus  alamat ( AD0-AD7,  A8-A15, dan  A16/S3-A19/S6).
Mikroprosesor  8088  mempunyai  20  pin  jalur  alamat  sehingga  dapat   menjangkau 220  (  1  MB)  lokasi  memori. Pena-pena  ini  hanya  berfungsi  pada  saat  T1  (lihat  diagram pewaktuan). Pada saat T2 sampai T4 ada sebagian  pin  yang berfungsi  sebagai  data  dan juga  sebagai status. Sedangkan A15-A8  tetap memberikan bit  alamat  upper-half  memory yang ada melalui  siklus  bus.

b.      Bus  data ( AD0-AD7).
Mikroprosesor  8088  mempunyai  jalur  data  sebanyak  8  pin  dan  bisa  digunakan secara  biderectional (dua  arah).  Pin-pin  ini  berfungsi  sebagai  jalur  data  hanya  pada  saat T2-T4.  Pada  saat  T1  berfungsi  sebagai  jalur  alamat.  berisi  8    bit    terkanan  dari  alamat memori  atau nomor port I/O  pada  saat itu   ALE  aktif (logika  1)  atau  berisikan  data  ketika ALE  tidak  aktif (logika  0).

c.       A19/S6-A16/S3
Bit bus  status/alamat  dimultipleks  untuk  memberikan  sinyal   alamat  A19-A16   dan
juga  status  S6-S3.  Bit  status  S6  selalu  berada  dalam  logika  0,  bit  S5  mengindikasikan kondisi bit flag IF,  dari S4 serta S3  memperlihatkan  segmen  mana   yang  diakses  selama siklus  bus  saat  ini.  Lihat  Tabel  2.1  untuk  tabel    kebenaran  dari  S4  dan  S3,  Kedua  bit status  dapat  digunakan  untuk    mengalamati  4  bank  memori  1M  byte  terpisah  dengan melakukan  dekode  terhadapnya sebagai All dan A20.
  
d.      Kontrol baca  (RD).
Sinyal  ini  aktif  rendah.  Jika  pena  ini  berlogic  0  berarti  mikroprosesor  sedang melaksanakan  pembacaan  data  dari  memori  atau  I/O.  Sinyal  ini  aktif  dipertengahan  T2 dan kembali  tidak  aktif (  logika 1)  pada  saat pertengahan T4.

e.       Clock (CLK).
Yaitu  masukan  sinyal  clock  yang  diberikan  dari  luar  untuk  mensinkronkan  segala kegiatan  pada  Miroprosesor.  Miroprosesor  8088  dapat  bekerja  pada  frekuensi  clock 4,77  MHz  atau  8  MHz  untuk  versi  turbo.  Sinyal  pewaktuan  harus  memunyai  siklus  tugas 33%  (tinggi  untuk  sepertiga  periode  clocking,  dan  rendah  untuk  sisanya)  supaya memberikan pewaktuan internal yang sesuai untuk 8086/8088.

f.       Kontrol  waktu  tunggu (READY).
Sinyal  READY  ini  disampel  pada  sisi  naik  T2.  Jika  sinyal  READY  ini  berlogic  0 berarti  akan  disisipkan  TW/Twait  antara  T3  dan  T4.  Hal  ini  terus  diulangi  sampai  sinyal READY  diberi  logika  1.  Sinyal  ini  biasanya  digunakan  jika  ada  hardware  lain  yang memiliki  kecepatan  yang  lebih  lambat  dari  kecepatan  mikroprosesor    ketika  sedang bekerja  dalam keadaan  normal.


g.      Reset sistem  (RESET).
Sinyal  ini  aktif  tinggi.  Bila  logika  1  diberikan  pada  pena  ini,  mikroprosesor  akan menghentikan  segala  kegiatan  yang sedang  terjadi saat itu. Semua register  akan dibuat 0 kecuali  register code  segment dibuat FFFF0H

h.      Interupsi (INTR dan NMI).
INTR  dan  NMI  (Non  Maskable  Interrupt)  adalah  permintaan  interupsi  yang  dapat dipanggil  secara  hardware.  Sinyal  INTR  merupakan  sinyal  aktif  tinggi,  sedangkan  NMI dapat aktif menggunakan trigger  sisi  naik  dari sinyal  clock.  INTR  tidak  akan  berfungsi  jika interupsi  flag  dikosongkan  (menggunakan  instruksi  CLI),  sedangkan  NMI  tidak  dapat dihalangi dengan instruksi CLI.

i.        Kontrol  tunggu test (TEST).
Untuk  mengaktifkan  sinyal  TEST,  digunakan  instruksi  WAIT.  Jika  pin  ini  berlogic  1 ketika  mikroprosesor  sedang  menjalankan  instruksi  WAIT  dari  programnya,  CPU  akan berada  pada  keadaan  idle  mode,  artinya  mikroprosesor  tidak  melakukan  kegiatan apa-apa  sebelum  pin  ini  berlogic  0.  Jika  pin  ini  berlogic  0  kembali,  maka  pelaksanaan instruksi  akan dilanjutkan.

j.        Status (A16/S3-A19/S6).
Sinyal  status  digunakan  untuk  mendeteksi  suatu  keadaan-keadaan  atau operasi-operasi yang sedang berlangsung, diantaranya  pengambilan  instruksi,  membaca memori, menulis memori, dan  operasi-operasi  yang lain.  Sinyal  ini  dikeluarkan  pada  saat keadaan  T2-T4. Definisi dari status S4 dan  S3  seperti tabel 2.1 adalah :
Tabel 2.1 Kebenaran S3 dan S4
S4...S4
Yang dijangkau saat terjadi siklus bus
0......0
Extra Segment (ES)
0......1
Stack Segment (SS)
1......0
Code Segment (CS) atau tidak sama sekali
1......1
Data Segment (DS)
k.      Catu  daya ( VCC dan  GND).
Mikroprosesor  8088  membutuhkan  Vcc  =  +5  V  yang  masih  bisa  bertoleransi sebesar  ± 10% dari  +5 V. Sinyal  yang  berfungsi  hanya  pada  mode  minimum  (  mode  maksimum  tidak   digunakan )  adalah :
a.  Sinyal tulis (WR).
Sinyal  ini  aktif  rendah.  Jika  sinyal  ini  berlogika  0,  berarti  mikroprosesor  sedang melaksanakan  operasi  penulisan  data  ke  unit  memori  atau  I/O.  Sinyal  ini  aktif  pada  saat T2-T4.

b.  Sinyal kontrol  memori dan I/O ( IO/M ).
Jika  pena  ini  berlogic  0,  berarti  saat  ini  pada  siklus  bus  sedang  berlangsung operasi  input/output.  Jika  pena  ini  berlogic  1,  berarti  saat  ini  pada  siklus  bus  sedang berlangsung  operasi memori.

c.  Address  Latch  Enable (ALE).
Sinyal ini digunakan sebagai penahan  alamat  yang baru  masuk  dalam  suatu  proses siklus  mesin.  Sinyal  ini  dapat  digunakan  untuk  dimultipleks  dengan  alamat,  data,  dan status. Sinyal ini mengeluarkan  logic 1 pada saat clock  T1.

d. Pengiriman  dan penerimaan data  ( DT/R ).
Jika  sinyal  ini  berlogic  1 maka  arah  data  adalah  dari  mikroprosesor  menuju  keluar (memori/  input-output).  Jika  sinyal  ini  berlogic  0  maka  arah  data  dari  luar  menuju mikroprosesor

e.  Data Enable (  DEN ).
Sinyal  ini  biasanya  digunakan  untuk  meng"on"kan  buffer  (latch)  yang  dihubungkan kebus data.

f.  Interrupt  Acknowledge  ( INTA ).
Sinyal  ini  secara  khusus  digunakan  sebagai  tanggapan  terhadap  suatu  instruksi INTR.

g.  Hold  Request ( HOLD)
Bila  logika  1  diberikan  pada  pena  HOLD,  µP  akan  menghentikan  kegiatan  dan melepas  bus  yang  berhubungan  dengan  unit  memori  dan  I/O,  sehingga  hal  ini memberikan kesempatan  bagi  proses  lain untuk mengambil  alih  sistem.

h. Hold Acknowledge (HLDA)
Sinyal ini digunakan  sebagai  pengakuan  dari  µP  bahwa  sinyal  HOLD  telah  diterima dan sistem  dapat diambil alih oleh prosesor lain.

Tabel 2.2 Status siklus bus (8088) menggunakan 
IO/
DT/
Fungsi
0
0
0
Acknowledge intrupsi
0
0
1
Membaca memori
0
1
0
Menulis memori
0
1
1
Halt
1
0
0
Mengambil opcode
1
0
1
Membaca I/O
1
1
0
Menulis I/O
1
1
1
Pasif

Sinyal yang berfungsi hanya pada  saat mode maksimum adalah  :
a. Status  siklus  bus  ( S0, S1, S2 ).
Sinyal  ini  merupakan  keluaran  yang  akan  diberikan  oleh  IC  lain  yang  berfungsi sebagai  bus kontroller  .

b.  Kunci (  LOCK  ).
Sinyal  ini  akan  mengeluarkan  logika  0  selama  pelaksanaan  instruksi  LOCK sehingga akan mencegah prosedur  lain  menjangkau  sistem.


c.  Status  antrian ( QS0, QS1).
Sinyal  ini  akan  memberitahu  informasi  apa  yang  telah  dipindahkan  dan  informasi apa yang ada dalam antrian  sewaktu terjadi  siklus  clock  sebelumnya.

d.  Local Bus Control (  RQ/  GT1 dan RQ/  GT0 ).
Sinyal ini menggantikan fungsi  HOLD  dan HLDA pada mode minimum.

e.  MN/MX
Pin modus  minimum/maksimum memilih    operasi    modus  minimum  atau maksimum  untuk  mikroprosesor.  Jika  modus  minimum  yang  dipilih,  pin  MN/MX  harus dikoneksikan  langsung ke +5,0 V.

              Tabel 2.3 Fungsi bus kontrol yang dihasilkan oleh kontroler bus 8288 menggunakan  ,  dan  .

Fungsi
0
0
0
Acknowledge intrupsi
0
0
1
Membaca I/O
0
1
0
Menulis I/O
0
1
1
Halt
1
0
0
Mengambil opcode
1
0
1
Membaca memori
1
1
0
Menulis memori
1
1
1
Pasif

Tabel 2.4 Bit- bit status antrian
QS1
QS0
Fungsi
0
0
Antrian kosong
0
1
Byte pertama opcode
1
0
Antrian kosong
1
1
Byte berikutnya opcode



2.3  Arsitektur Internal Mikroprosesor  Intel 8088
Diagram  blok  arsitektur  8088  dapat  dilihat  pada  Gambar  2.3.  Mikroprosesor  8088 terbagi  atas 2 unit,  yaitu unit  antarmuka  bus (bus  interface  unit,  BIU)  dan  unit  pengeksekusi (execution unit, EU).

Unit  Antarmuka Bus  (BIU)
Unit  ini  merupakan  bagian  yang berhubungan  langsung dengan  “pihak  luar”.BIU  berfungsi  untuk  mengirim  alamat  ke  bus  alamat,  mengambil instruksi  (fetch ) dari  memori,  membaca  data  dari  port  dan  memori,  serta  menulis  data  ke port dan  memori (menangani transfer  data antara bus  dan unit eksekusi). BIU tersusun  atas:

Instruction  Stream  Byte  Queue  (ISBQ)
BIU  mem fetch  instruksi  dari  memori sebanyak-banyaknya  4  buah  instruksi  ke  depan.  Instruksi  yang  sudah  diambil  ini  ditaruh  di ISBQ  yang berupa 4 buah register  first-in-first-out. BIU dapat  melakukan  fetching  selagi  EU menerjemahkan  dan  mengeksekusi  instruksi  yang  tidak  membutuhkan  penggunaan  bus (misalnya  operasi  matematis  menggunakan  register  internal).  Ketika  EU  selesai melaksanakan  suatu  instruksi,  maka  dia  tinggal  mengambil  perintah  berikutnya  di  ISBQ, tanpa  harus  mengirim  alamat  ke  memori  untuk  mengambil  instruksi  berikutnya,  Pada mikroprosesor  yang  lebih  baru,  ukuran  ISBQ  tidak  hanya  4 byte  tetapi  mencapai  512  byte. BIU  berisi  4  buah  register  segmen  16  bit,  yaitu:  code  segment  (CS),  data  segment  (DS), extra segment  (ES), dan stack  segment  (SS).  .  Dari  BIU ini,  dihasilkan  bus  data  sebanyak 8  bit.  Untuk  menjalankan  fungsinya,  BIU  memiliki  register  segment,  register  komunikasi internal,  pointer  instruksi, antrian  kode  objek  instruksi,  bus  alamat,  dan  bus  kontrol  logika. EU berfungsi untuk menterjemahkan  dan menjalankan instruksi.

Gambar 2.3 Arsitektur internal mikroprosesor 8088

Instruction Pointer  (IP) , adalah  register berisi  informasi  offset yang  bersama-sama CS  menunjuk  posisi dalam  memori di mana instruksi berikutnya berada.

Unit  Eksekusi  (EU)
Unit  ini  memberitahu  BIU  di  mana  mengambil  instruksi  dan data, menerjemahkan kode  instruksi, dan menjalankannya.  EU tersusun atas:
Dekoder  instruksi yang  mengambil  urut-urutan  instruksi  dari  ISBQ  kemudian menerjemahkannya ke urutan aksi yang harus dikerjakan oleh EU.
Sistem  kontrol ,  merupakan  rangkaian  yang  mengendalikan  kerja  mikroprosesor berdasarkan  instruksi  yang telah diterjemahkan  oleh dekoder  instruksi  tadi.

Arithmetic  Logic  Unit  (ALU) ,  yaitu  bagian  dari  mikroprosesor  yang  dapat melakukan  operasi  matematis  (misalnya  operasi  penjumlahan,  pengurangan,  perkalian, dan pembagian) dan logika (misalnya operasi  AND, OR, XOR,  geser, dan rotasi) 16 bit.

Mikroprosesor  8088  mempunyai  4 kelompok register  internal  yaitu  register  penunjuk instruksi  (indeks  pointer  register), register  data (general purpose register), register  segment (segment register), serta flag register.
Register  Penunjuk  Instruksi (Indeks Pointer Register).
Register  Penunjuk  instruksi  merupakan  register  16  bit  yang  berfungsi  untuk menunjukkan  lokasi  instruksi  berikutnya  yang  akan  dijalankan.  Register  IP  ini  berpasangan dengan  CS  (code  segment)  dimana  penulisannya  adalah  sebagai  berikut  [CS  :  IP].  Jadi lokasi  alamat  yang  ditunjukkan  tergantung  pada  code  segment  yang  terdapat  pada segment register.
Register  Data (General Purpose  Register).
Register  data  pada  µP  8088  dibagi  menjadi  4  kelompok  register  yang  semuanya berfungsi  untuk  penyimpanan  data  secara  sementara.  Keempat  kelompok  register  ini adalah  register  AX,  BX,  CX.  dan  DX.  Register  AX,  BX,  CX,  dan  DX  merupakan  register data  16  bit.  Register-register  16  bit  dari  kelompok  ini  mempunyai  suatu  ciri  khas,  yaitu dapat  dipisah  menjadi  2  bagian  dimana  masing-masing  bagian  terdiri  dari  8  bit,  yaitu register  data AH; AL (untuk AX), BH;  BL (untuk  BX), CH;  CL  (untuk  CX),  dan  DH;  DL  (untuk DX).  Akhiran  H  menunjukkan  High  dan  akhiran  L  menunjukkan  Low.  Selain  berfungsi sebagai  penyimpan  data serba guna yang dapat digunakan secara  bebas  oleh  pemogram, register-register  tersebut memiliki  juga  fungsi-fungsi  lainnya  secara  khusus,  yaitu  :  Register AX  biasanya  digunakan  pada  operasi  aritmatika  (perkalian  dan  pembagian),  dan  operasi I/O  16  bit.  Register  BX  biasanya  digunakan  untuk  menunjukkan  suatu  alamat  offset  dari suatu  segment.  Register  CX  biasanya  digunakan  untuk  menunjukkan  banyaknya  looping yang  akan  terjadi.  Register  DX  biasanya  digunakan  untuk  menampung  sisa  hasil pembagian 16  bit serta  pada  operasi I/O  secara  tidak  langsung.

Register  Penunjuk  dan Register Indeks  (Indeks  and Pointer  Register).
Mikroprosesor  8088  mempunyai  dua  buah  register  penunjuk  (register  SP  dan  BP) serta  dua  buah register  indeks  (  register  SI  dan  DI).  Data  yang  terdapat  pada  SP  (  Stack Pointer)  memungkinkan  pemogram  untuk  menjangkau  lokasi  memori  dari  stack  segment. Stack  pointer  yang  berpasangan  dengan  stack  segment  (SS  :  SP)  digunakan  untuk menunjukkan  alamat  dari  stack  RAM  (Random  Access  Memory).  Stack  RAM  ini  biasanya digunakan untuk menyimpan informasi yang berhubungan  dengan  operasi  stack, seperti  isi PC,  alamat  kembali  (return  address)  pada  instruksi  CALL,  dan  akumulator.  Penyimpanan informasi  pada  stack  RAM  menggunakan  sistem  LIFO  (Last  In  First  Out),  artinya  data  yang terakhir  dimasukkan (PUSH) merupakan data pertama  yang akan diambil (POP). BP  (Base Pointer)  yang berpasangan dengan register  stack  segment  (SS)  digunakan  untuk  mencatat suatu  alamat  dimemori  tempat  data.  Source  Indeks  (SI)  dan  Destination  Indeks  (DI) biasanya digunakan pada operasi  string dengan mengakses  secara  langsung  pada  alamat dimemori yang ditunjukkan oleh  kedua register  ini  .

Register  Segment  (Segment  Register).
Mikroprosesor  8088  menghasilkan  20  bit alamat sehingga  dapat  menjangkau  1  MB lokasi  memori (  220  =  1048576  Byte  atau  disingkat  1  MB).  Namun  pada  µP  8088  register yang  tersedia  hanya  16  bit  (  216  =  64  KB),  sehingga  untuk  menjangkau  alamat  1  MB, memori  pada  µP  8088  dibagi  menjadi ruas-ruas  64  KB,  sehingga  setiap  saat  hanya ada  4 segment  (ruas)  yang  dapat  aktif.  Segment-segment  register  ini  adalah:  Code  Segment (CS), Data  Segment  (DS),  Stack  Segment  (SS),  dan  Extra  Segment  (ES). Code  segment digunakan  untuk  menyimpan  program.  Data  segment  digunakan  untuk  menyimpan  data program.  Extra  segment  digunakan  untuk  menyimpan  segment  data  tambahan.  Stack segment digunakan nuntuk menyimpan  alamat  kembalinya  interupsi  dan  subrutin.  Keempat register  diatas  menunjuk  kelokasi masing-masing segment. Karena  register segment hanya terdiri  dari 16  bit, sedangkan memori yang dapat dijangkau sebanyak  20  bit,  maka  unit  BIU (  Bus  Interface  Unit)  akan  menambah  4  bit  lagi  pada  LSB.  Sebagai  contoh,  jika  register ES=2721H,  maka  register  akan  menunjuk  kelokasi  27210H. Setiap  segment  hanya  dapat menampung  64  KB  lokasi  memori,  sehingga  jika  CS=A000H,  maka  lokasi  memori  untuk Code Segment dimulai dari A0000H  sampai  AFFFFH (64 KB).
Setiap kali catu daya  dihidupkan, mikroprosesor berada  dalam keadaan  sembarang dimana  semua  register  berisi  data  yang  tidak  dapat  diramalkan.  Hal  ini  memungkinkan terjadinya pembacaan maupun penulisan  lokasi  memori  yang acak  pula.  Karena  itu  semua register  µP  harus  dibuat nol  kecuali  Code  Segment  register  dibuat  FFFF0H,  sehingga  µP akan  menjemput  instruksi  yang  berada  pada  alamat  fisik  FFFF0H.  Jadi  dengan memberikan  sinyal  RESET  ketika  pertama  kali  dihidupkan,  µP  akan  selalu  menjemput instruksi  pada  lokasi  FFFF0H. Setelah  menempatkan  suatu instruksi  pada  lokasi  tersebut, maka  instruksi  itu  merupakan  instruksi  yang  pertama  kali  dijalankan  ketika  µP  dinyalakan atau ketika  diberi  sinyal RESET

Register  flag (bendera)
Register  flag  Merupakan  register  flip-flop  16  bit  yang  menunjukkan  kondisi  yang dihasilkan  setelah  eksekusi  suatu  operasi  oleh  EU.  Selain  itu  flag    mengatur  beberapa operasi  tertentu.  Terdapat  9  flag  masing-masing  1  bit  dalam  register  flag  8088,  seperti terlihat pada gambar  2-4.











Gambar 2.4. Format  register flag pada  mikroprosesor  8088

Sebanyak  6  buah  flag  merupakan  flag  kondisi  yang  menunjukkan  keadaan  setelah eksekusi suatu instruksi, yaitu:  Carry  Flag  (CF),  Parity  Flag  (PF), Auxiliary  Carry  Flag  (AF), Zero  Flag  (ZF),  Sign  Flag  (SF),  dan  Overflow  Flag  (OF).  Sedangkan,  3  buah  flag  sisanya berupa  flag kontrol yang mengendalikan operasi  tertentu,  yaitu:  Single  Step  Trap  Flag  (TF), Interrupt  Flag (IF),  dan String Direction Flag (DF).

Fungsi masing-masing register  tersebut adalah:

CF (Carry Flag)
jika  berlogic  1  berarti  terdapat  carry  atau  borrow  pada MSB (Most Significant Bit)  yang  terjadi  selama  operasi aritmatika.  Jika  berlogic  0  berarti  tidak  terdapat  carry atau  borrow.
PF (Parity Flag)           
jika  berlogic  1  berarti  8  bit  terendah  menghasilkan paritas  genap  dan  jika  menghasilkan  paritas  ganjil  PF akan  berlogic  0

AF  (Auxillary Carry Flag)
jika berlogic  1 berarti  terdapat carry  pada  bit ke  4 pada register  AL  dan  bila  tidak  akan  berlogic  0.  Register  ini biasanya  digunakan  pada  operasi  BCD,  seperti perintah AAA.

ZF(Zero  Flag)
ZF (Zero Flag), jika  berlogic  1  maka  operasi  aritmatika menghasikan  sisa  0,  jika  berlogic  1  maka  tidak
menghasilkan 0

SF (Sign Flag)
Jika digunakan bilangan bertanda bit ini  akan  bernilai  1. Sedangkan  bila  SF  berlogic  0  berarti  bilangan diperlakukan  sebagai  bilangan  tidak  bertanda. Bilangan  bertanda  dibagi  menjadi  bilangan  positif  (+)dan  bilangan  negatif  (-).  Pada  bilangan  bertanda,  bit terakhir  (bit ke-16) diperlakukan sebagai  tanda  (+)  atau tanda(-).  Jika  bit  terakhir  tersebut  bernilai  1  berarti bilangan  tersebut  negatif  dan  jika  bit terakhir  bernilai  0 berarti  bilangan tersebut positif
TF  (Trace  Flag)
jika  berlogic  1  berarti  berada  pada  keadaan  single step. Keadaan  ini  digunakan  pada  program  Debug.
IF  (Interrupt Flag)           
jika berlogic  1 berarti  Maskable  Interrupt  Request dapat dilakukan.Jika  berlogic  0  maka  permintaan  interupsi tidak  dapat dipenuhi oleh  CPU
OF  (Over  Flow Flag)
jika  terjadi  Over  Flow  pada  operasi  aritmatika,  bit  ini akan  bernilai  1.  Dan  jika  tidak  terjadi  Over  Flow  pada operasi  aritmatika, bit ini  bernilai  0.
DF  (Direction Flag)
jika berlogic  1 berarti  pada  instruksi  string  nilai  register akan  diturunkan  secara  otomatis  dan  jika  berlogic  0 maka akan dinaikkan secara otomatis
X
Tidak digunakan
           
Pengalamatan  Memori Dengan  Segment:Offset
Mikroprosesor  8088  secara  fisik  memiliki  16  bit  saluran  alamat  atau  64  KByte, mampu  mengakses  8  bit  data  pada  satu  kali  akses  time.  Tetapi  dapat  dimungkinkan pengalamatan  menggunakan  sistem  20  bit. sehingga dapat dialamatkan    byte (=1  MB)  memori, dengan  kata lain  metode  pengalamatan  20  bit yang  dimasukkan  ke  dalam  format 16  bit.  Pada  metode  pengalamatan  mode  riil  membagi  ruang  memori  ke  dalam segmen-segmen  di  mana  besar  1  segmen  adalah  64  KB  (= 216 byte).  Jadi  pada  segmen 0000h  terdapat  64  KB  data,  demikian  pula  dengan  segmen  0001h  dan  seterusnya. Caranya  adalah  dengan  membagi-bagi  setiap  segmen  menjadi  bagian-bagian  yang disebut  offset.  Dalam  satu  segmen  terdapat 216 offset  yang  diberi  nomor  dari  0000h sampai  FFFFh. Nomor  offset  selalu  diukur  relatif  dari  awal  suatu  segmen.  Segmen  0000h berawal dari  lokasi  memori  0  hingga  65535  (  64  KB  ).  Segmen  0001h  berawal  dari  lokasi memori  16  (0010h)  hingga  65551  (65535  +16).  Segmen  0002h  berawal  dari  lokasi  32 hingga 65567. Demikian seterusnya.
Alamat yang  menggunakan  sistem  segmen:offset  ini  disebut  sebagai  alamat  relatif karena  sifat  offset  yang  relatif  terhadap  segmen.  Sedangkan  alamat  memori  yang sebenarnya  disebut alamat absolut.   cara  pengkonversian  alamat  relatif  ke  absolut   dapat dilakukan dengan menggeser  nilai  segmen  4 bit  ke  kiri  dan  kemudian  dijumlahkan  dengan nilai offset. Atau yang lebih sederhana adalah  dengan  mengalikan  nilai  segmen  dengan 24 (=10h)  dan  kemudian  dijumlahkan  dengan  nilai  offset.  selisih  segmen  yang  satu  dengan yang berikutnya sebesar  16  (=10h).

Alamat relatif :                        1357h:2468h
13570
2468    +
Alamat absolut :                      159D8h

Alamat Relatif
Segment
Offeset
Alamat Absolut
1357:2468      
1000:0250
1357
            1000   
2468
0250
159D8
10250
                       
Setiap register segment mempunyai  ketentuan pasangan  untuk alamat offset, seperti
Segment
Offset
Kegunaan
CS
DS
SS
ES
IP
BX, DI, SI, 8/16
Bit
SP, BP
DI
Alamat intruksi yang
Dieksekusi
Alamat data
Alamat Stack
Alamat String