Jumat, 16 Oktober 2020

Contoh Activity Diagram

Activity Diagram

Activity Diagram menggambarkan rangkaian alur aktivitas dari sebuah sistem. Activity diagram dapat juga digunakan untuk memodelkan action yang akan dilakukan saat sebuah operasi dieksekusi, dan memodelkan hasil dari action tersebut. Berikut ini adalah daftar simbol dari activity diagram.


Contoh Activity Diagram

1.    Activity Diagram Data Buku

2.    Activity Diagram Peminjaman

3.    Activity Diagram Pengembalian



Selasa, 24 Maret 2020

Instruction Set CPU 8 bit

Instruction Set CPU 8 bit

Register-register
Dalam CPU, register-register digunakan untuk menyimpan data secara sementara. Informasi dapat berupa data byte yang hendak diproses atau sebuah data alamat yang menunjuk pada data yang lain. Register-register dari 8051 pada umumnya adalah berupa register 8-bit. Dalam 8051 hanya ada satu jenis data yakni data 8-bit (sama dengan namanya yakni komputer 8-bit). Register 8-bit tersebut ditunjukkan dalam diagram mulai dari MSB (Most Significant Bit) / D7 sampai pada LSB (Least Significant bit) / D0. Dengan type data 8-bit tersebut, setiap data yang lebih besar dari 8-bit harus dipecah menjadi beberapa bagian data 8-bit sebelum dapat diproses. Mengingat banyak register dalam 8051, kita akan berkonsentrasi pada beberapa register yang paling sering digunakan.

Register yang paling banyak digunakan adalah A (Accumulator), B, R0, R1, R2, R3, R4, R5, R6, R7, DPTR (DataPointer), dan PC (Program Counter). Semua register tersebut adalah register 8-bit kecuali DPTR dan PC. Akumulator atau register A, digunakan dalam semua instruksi aritmatika dan logika. Untuk mengerti penggunaan dari register tersebut, kita dapat melihat mereka dalam konteks dari dua buah instruksi sederhana, MOV dan ADD.

gambar 2-1 Register 8-bit dan 2 buah register 16-bit pada 8051

Instruksi MOV
Singkatnya instruksi MOV adalah menyalin isi data dari register yang satu ke register yang lain, dengan format sebagai berikut :
MOV dest, source ;salin data source ke dest
Instruksi ini memerintahkan pada CPU untuk memindahkan (sebenarnya adalah menyalin) operand source menuju operand destination.Seperti contohnya, "MOV A,R0" adalah menyalin isi R0 ke register A. Setelah instruksi ini dijalankan isi dari kedua register tersebut adalah sama. Instruksi MOV tidak mengubah isi dari operand Source. Program berikut ini adalah contoh untuk mengubah Akumulator menjadi 55h (h adalah hex), lalu kemudian memindahkan nilainya kedalam beberapa register dalam CPU. Perhatikan tanda "#" dalam instruksi tersebut. Hal itu mengindikasikan bahwa simbol dibelakangnya adalah sebuah nilai. Hal tersebut akan kita bahas segera.
      MOV A,#55         ;Mengisi A dengan nilai 55h
      MOV R0,A          ;Salin isi A ke dalam R0
                        ;Sekarang R0 = 55h
      MOV R1,A          ;Salin isi A ke dalam R1
                        ;Sekarang R1 = 55h
      MOV R2,A          ;Salin isi A ke dalam R2
                        ;Sekarang R2 = 55h
      MOV R3,#95h       ;Mengisi R3 dengan nilai 95h
                        ;Sekarang R3 = 95h
      MOV A,R3          ;Salin isi R3 ke dalam A
                        ;Sekarang A = 95h
Saat menulis program untuk mikrokontroller 8051, hal-hal berikut ini harus diperhatikan.
1. Bahwa sebuah nilai dapat langsung diberikan pada register-register misalnya A, B, R0 s/d R7. Namun bagaimanapun juga untuk mengindikasikan bahwa sebuah simbol adalah sebagai sebuah nilai, dan bukan sebagai alamat atau yang lain, sebelumnya harus diberi simbol pound ataupagar atau "#".
      MOV A,#23h        ;Mengisi A dengan nilai 23h
      MOV R0,#12h       ;Mengisi R0 dengan nilai 12h
      MOV R1,#1Fh       ;Mengisi R1 dengan nilai 1Fh
      MOV R2,#2Bh       ;Mengisi R2 dengan nilai 2Bh
      MOV B,#3Ch        ;Mengisi R3 dengan nilai 3Ch
      MOV R7,#9Dh       ;Mengisi R3 denga nilai 9Dh
      MOV R6,#0F9h      ;Mengisi R3 denga nilai F9h
      MOV R5,#12        ;Mengisi R3 denga nilai 12 desimal
Perhatikan pada instruksi "MOV R5,#0F9h" sebelum simbol F nampak di sana diimbuhi oleh simbol "0" sehingga menjadi "0F9h". Hal ini penting bagi assembler untuk membedakan apakah sebuah symbol yang dituliskan itu sebagai sebuah angka bilangan atau sebuah identifier. Sedang identifier harus selalu dimulai dari karakter alphabeth.
2. Jika nilai 0 s/d F kita isikan pada sebuah register 8-bit, maka akan mengubah 4-bit paling kecil dari register tersebut. Dan kita akan mendapatkan 4-bit teratas darinya akan dibuat menjadi 0. Misalnya dengan instruksi "MOV A,#5", maka sejatinya instruksi tersebut adalah sama dengan "MOV A,#05h", dan menghasilkan A = 05h. Dan dalam bilangan biner adalah A = 00000101 biner.
3. Mengisikan sebuah nilai yang terlalu besar dari nilai yang sanggup ditampung sebuah register akan menghasilkan error.
      MOV A,#7F2h       ; 7F2h > (8-bit atau FFh atau 255 desimal)
      MOV R2,#456       ; 456d > (8-bit atau FFh atau 255 dec)
4. Untuk mengisikan nilai ke dalam  register, kita harus mengimbuhkan symbol pound (#). Jika tidak ada simbol tersebut, maka assembler akan menganggapnya sebagai sebuah lokasi memory. Ambil contoh "MOV A,17h" yang berarti pindahkan isi nilai dari memory 17h ke dalam A. Sedang saat kita menginginkan untuk mengisi A dengan nilai 17h, maka kita harus menuliskan dengan "MOV A,#17h". Tidak adanya symbol pagar tersebut tidak akan membuat assembler menghasilkan error. Namun Assembler akan membuatkan kode yang bukan seperti kemauan kita, hanya karena kesalahan kecil kita dalam menulis program. Biasanya hal ini biasa terjadi bagi para pemula.
Instruksi ADD
Instruksi ADD adalah berdasar pada format :
      ADD  A,Source     ;Tambahakan source ke Akumulator
Instruksi ini menambahkan sembarang tipe data ke dalam A dan A pula bertindak sebagai penerima hasil dari operasi. Sehingga dapat dikata operand tujuan (Dest) selalu adalah Akumulator (A). Di bawah ini contohnya…
      MOV  A,#25h       ;Isi A dengan nilai 25h
      MOV  R2,#34h      ;Isi R2 dengan nilai 34h
      ADD  A,R2         ;Tambahakan keduanya
;Jadi A = A + R2
Menjalankan program di atas akan menghasilkan A = 59h (25h + 34h = 59h) dan nilai pada R2 tidak berubah setelah instruksi ADD, yakni 34h. Sekali lagi operand source tidak akan berubah. Program di bawah ini adalah contoh program yang lebih kompleks.
      MOV  R5,#25h      ;Isi R7 dengan nilai 25h
      MOV  R7,#34h      ;Isi R5 dengan nilai 34h
      MOV  A,#0         ;Clear isi A menjadi 0
      ADD  A,R5         ;Tambahakan A dengan isi R5
;Jadi A = A + R5
      ADD  A,R7         ;Tambahakan A dengan isi R7
;Jadi A = A + R7
Program di atas menghasilkan nilai 59h yang terdapat pada A. Ada banyak jalan menuju Roma, namun sedapat mungkin cari jalan yang paling singkat dan cepat. Ini adalah cara lebih cepat.
      MOV  A,#25h       ;Isi A dengan nilai 25h
      ADD  A,#34h       ;Tambahakan A dengan 34h
     
Sekali lagi dapat kita lihat dari berbagai contoh di atas operand tujuan selalu adalah A. Jika kita memaksa menuliskan kode seperti "ADD R2,A" tentu akan menghasilkan error. 8051 memang hanya mendukung operasi arimatika dan logika yang hanya menggunakan A sebagai akumulator, dan dengan kata lain operasi tersebut dibatasi selebar 8-bit. Namun walaupun demikian hal itu sudah lebih dari cukup untuk membuat program untuk berbagai aplikasi canggih, misalnya robot.
Kita tahu bahwa 8051 juga memiliki 2 buah register 16-bit, walaupun dirancang bukan untuk keperluan manipulasi data. Namun jika anda bertanya apakah CPU 8051 dapat memanipulasi data yang lebih besar dari 8-bit?? Tentu saja, tidak ada hal yang tidak mungkin. Seperti yang sudah kita ketahui sebelumnya bahwa komputer 8-bit, idealnya hanya memproses data sampai selebar 8-bit. Dalam kasus tertentu beberapa perintah dalam 8051 dapat diurutkan untuk dapat menangani data yang lebih besar, seperti data 16-bit, 24-bit, maupun 32-bit. Semua bisa dilakukan. Tentu dengan memecah data tersebut dalam beberapa data 8-bit,dan kemudian memprosesnya satu-persatu kemudian menyatukan kembali data sehingga seperti hasil yang kita inginkan. Dalam prakteknya hal itu bisa dilakukan dengan membuat kode-kode yang rumit dan teliti. Dan nantinya akan dibahas pada Bab lain.







SubBab 2.2 Mengenal Pemrograman Assembly 8051
Pada bagian ini kita akan membahas format dari bahasa assembly dan mengupas terminologi yang berkaitan hal yang paling sering digunakan dalam pemrograman bahasa assembly.

Kamis, 09 Januari 2020

Grammar and FSA UAS

Grammar and FSA


GRAMMAR
Grammar adalah bentuk mesin abstrak yang dapat diterima (accept) untuk membangkitkan suatu kalimat otomata berdasarkan suatu kalimat berdasarkan suatu aturan tertentu.
Tata Bahasa (grammar) didefinisikan dengan empat (4) tupel
G = ({V, T, P, S}) dimana :
V = Himpunan simbol variabel / non terminal
T = Himpunan simbol terminal
P = Kumpulan aturan produksi
S = Simbol  awal

Mesin Abstrak Grammar


V = {S, A, B, C, D}
T = { x, y, λ }
P = { C→x, S→xA, A→yB, B→xC, C→yS, S→yC, A→xS, B→yA, C→xB, D→λ, D→yA, D→xB }
S = C (start)

Convert Right Linier Grammar to FA



FSA
Finite State Automata (FSA)
Finite State Automata (FSA) adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.

Bahasa yang paling sederhana adalah bahasa reguler (tipe 3). Mesin yang bisa mengenalinya adalah Finite Automata. Finite Automata adalah mesin komputasi. Pada bahasan ini mesin komputasi yang dimaksud adalah mesin abstrak bukan mesin fisik, namun memadai untuk diimplementasikan secara nyata.

DEFINISI SECARA FORMAL
Secara formal FSA dinyatakan dengan 5-tuple atau =(Q, Σ, δ, q0, F):
1. Q = himpunan state/kedudukan
2. Σ = abjad, himpunan simbol input
3. δ transition function
4. q0  Q start state
5. 
set of accept (or final) states

v  Gambar di atas disebut diagram keadaan M1
v  Ia memiliki enam status, berlabel q0,q1, q2, q3, q4 dan q5
v  Status awal, q2, ditunjukkan oleh panah yang menunjuknya entah dari mana
v  Status terima, q5, adalah negara dengan lingkaran ganda
v  Panah yang berpindah dari satu kondisi ke kondisi lain disebut transisi


Kita dapat menggambarkan secara formal dengan menulis M1 = (Q, Σ, δ, q0, F)), di mana:
  1. Q=  { q0, q1, q2, q3, q4, q5, q6 }
  2. Σ = { 0, 1 }
  3. δ digambarkan sebagai :

  1. q0 adalah kondisi awal, dan
  2. F = {q0}
Multiple Run


 Lembar Jawaban





Rabu, 30 Oktober 2019

Grammar and FSA


GRAMMAR
Grammar adalah bentuk mesin abstrak yang dapat diterima (accept) untuk membangkitkan suatu kalimat otomata berdasarkan suatu kalimat berdasarkan suatu aturan tertentu.
Tata Bahasa (grammar) didefinisikan dengan empat (4) tupel
G = ({V, T, P, S}) dimana :
V = Himpunan simbol variabel / non terminal
T = Himpunan simbol terminal
P = Kumpulan aturan produksi
S = Simbol  awal


V = {S, A, B, C, D}
T = { x, y }
P = { S → λ, A → λ, B → λ, C → λ, S → xA, A →yB, B → xC, C→ yS, S → yC, A →xS, B →
         yA, C→ xB, D → λ, D → yA, D → xB }
S = S (start)

Convert Right Linier Grammar to FA



FSA
Finite State Automata (FSA)
Finite State Automata (FSA) adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.

Bahasa yang paling sederhana adalah bahasa reguler (tipe 3). Mesin yang bisa mengenalinya adalah Finite Automata. Finite Automata adalah mesin komputasi. Pada bahasan ini mesin komputasi yang dimaksud adalah mesin abstrak bukan mesin fisik, namun memadai untuk diimplementasikan secara nyata.

DEFINISI SECARA FORMAL
Secara formal FSA dinyatakan dengan 5-tuple atau M =(Q, Σ, δ, q0, F):
1. Q = himpunan state/kedudukan
2. Σ = abjad, himpunan simbol input
3. δ = transition function
4. q0 Q = start state
5. F
Q = set of accept (or final) states

v  Gambar di atas disebut diagram keadaan M1
v  Ia memiliki enam status, berlabel q0,q1, q2, q3, q4 dan q5
v  Status awal, q2, ditunjukkan oleh panah yang menunjuknya entah dari mana
v  Status terima, q5, adalah negara dengan lingkaran ganda
v  Panah yang berpindah dari satu kondisi ke kondisi lain disebut transisi


Kita dapat menggambarkan secara formal dengan menulis M1 = (Q, Σ, δ, q0, F)), di mana:
  1. Q=  {q0, q1, q2, q3, q4, q5}
  2. Σ = {x, y, λ}
  3. δ digambarkan sebagai :

  1. q2 adalah kondisi awal, dan
  2. F = {q5}
Multiple Run

 Lembar Jawaban




Senin, 23 September 2019

Fine State Automata

Finite State Automata (FSA)
Finite State Automata (FSA) adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.

Bahasa yang paling sederhana adalah bahasa reguler (tipe 3). Mesin yang bisa mengenalinya adalah Finite Automata. Finite Automata adalah mesin komputasi. Pada bahasan ini mesin komputasi yang dimaksud adalah mesin abstrak bukan mesin fisik, namun memadai untuk diimplementasikan secara nyata.

DEFINISI SECARA FORMAL
Secara formal FSA dinyatakan dengan 5-tuple atau M =(Q, Σ, δ, q0, F):
1. Q = himpunan state/kedudukan
2. Σ = abjad, himpunan simbol input
3. δ = transition function
4. q0 Q = start state
5. F Q = set of accept (or final) states
DEFINISI SECARA FORMAL



v  Gambar di atas disebut diagram keadaan M1
v  Ia memiliki empat status, berlabel q0,q1, q2, dan q3
v  Status awal, q0, ditunjukkan oleh panah yang menunjuknya entah dari mana
v  Status terima, q0, adalah negara dengan lingkaran ganda
v  Panah yang berpindah dari satu kondisi ke kondisi lain disebut transisi
Contoh fsa



Kita dapat menggambarkan secara formal dengan menulis M1 = (Q, Σ, δ, q0, F)), di mana:
  1. Q=  {q0,q1, q2, q3}
  2. Σ = {0, 1}
  3. δ digambarkan sebagai :
  4. q0 adalah kondisi awal, dan
  5. F = {q0}


0
1
Q0
Q2
Q1
Q1
Q3
Q0
Q2
Q0
Q3
Q3
Q1
Q2

-          Uji Input Step With Closure
1101
Ditolak





-          Uji Input Step By Step
0101
Diterima





-          Uji Input Fast Run
1001
Diterima


-          Uji Input Multiple Run
1110
Direject