Saturday, October 23, 2010

Perihal Flag Part 3(Katak Ikut Arahan)

Sebelum ni kita faham JMP iaitu JUMP atau lompat berfungsi. Jadi apa kaitannya?
Segalanya berkaitan dengan arahan CMP. Sebagai contoh

mula:
CMP AX,5
JE mati
JMP mula
mati:

Jika anda memahami post yang sebelum ini mengenai uncondition jump(JMP) anda pasti faham JMP mula bermaksud apa. Sila rujuk ilustrasi dalam pos terdahulu mengania JMP.

Untuk meneruskan pemahaman kita. Anda tertanya apa dia JE? JE atau Jump Equal bermaksud arahan untuk melakukan operasi sama seperti JMP tetapi dengan syarat AX = 5. Walau bagaimanapun dalam Pos yang sebelum ini telah dinyatakan bahawa CMP serupa dengan SUB di mana nilai kiri akan ditolak dengan yang kanan. sebagai cth:
SUB kiri, kanan sama dengan kiri=kiri-kanan
SUB AX, 5 sama dengan AX=AX-5

perbezaan SUB dengan CMP adalah SUB mengubah nilai sebelah kiri tetapi CMP tidak. Walaubagaimanapun kedua-duanya akan mengubah nilai flag.

Seperti contoh yang tadi iaitu:

mula: ;label mula
CMP AX,5 ;Lakukan perbandingan sila rujuk Perihal Flag Part 1
JE mati ; JMP ke mati
JMP mula ;kembali ke mula.
mati: ;label mati

Di atas menunjukkan CMP AX, 5 bermaksud untuk membandingkan nilai AX dengan 5(rujuk Perihal Flag Part 1). JE akan berfungsi seperti JMP seandainya AX = 5 kerana Jump if Equal(JE) bermaksud lompat jika sama. Dalam arti kata lainnya kalau AX = 5 ia akan pergi ke label 'mati'. Jika tidak JMP akan kembali ke mula dan meneruskan operasi.

JE memerlukan AX=5 oleh yang demikian CMP AX,5 akan memastikan AX=AX-5 dan ia akan memberikan nilai 0 yang menyebabkan Zero Flag(ZF) = 1. Arahan seperti JE akan melaksanakan operasi dengan melihat nilai di dalam Flag, bukan perubahan nilai dalam register seperti AX kerana fungsi CMP bukannya mengubah AX.

Selain dari JE terdapat arahan lain seperti JA(Jump if above). Di mana fungsinya sama seperti JE tetapi dengan syarat nilai berpandingan lebih besar. Sebagai contoh

mula:
CMP AX,5
JA mati
JMP mula
mati:

Arahan di atas adalah untuk membandingkan AX dengan 5 tetapi kali ini AX mestilah lebih besar dari 5 (AX>5) untuk ke label 'mati'. Jika tidak ia lompat(JMP) ke label mula. Seperti yang kita fahami sebelum ini ia bergantung pada perubahan flag. Dalam keadaan ini sudah pasti nilai AX lebih besar dari 5. Oleh itu jika AX=AX-5 akan menghasilkan nilai positif tetapi bukan kosong. Dalam post Perihal Flag Part 1 telak dinyatakan keadaan ini menyebabkan ZF=0 dan CF=0. Perubahan flag inilah yang menyebabkan arahan JA melakukan operasinya.

Untuk rujukan lanjut sila rujuk jadual di bawah.















































Arahan Penerangan Flag untunk lompat(JUMP) CMP kiri, kanan
ja jump if above CF=0 dan ZF=0 kiri > kanan
jnbe jump if not below or equal CF=0 dan ZF=0 kiri > kanan
jae jump if above or equal CF=0 kiri >= kanan
jb jump if below CF=1 kiri < kanan
jbe jump if below or equal CF=1 atau ZF=1 kiri <= kanan
je jump if equal ZF=1 kiri == kanan


Jika ada apa-apa komen serta cadangan sila jangan segan silu memberi komen serta menghubungi penulis.
Wassalam.
,  

Friday, October 22, 2010

Perihal Flag Part 2(Lompat Si Katak Lompat)

Sekarang kita tau apa yang berlaku pada Flag semasa operasi Compare(CMP).
Dari sudut bahasa Compare bermaksud Banding. Oleh itu:
CMP AX,2 bermaksud Bandingkan AX dengan 2
CMP kiri, kanan bermaksud Bandingkan kiri dengan kanan.

Seperti yang kita fahami dari artikel yang sebelumnya(Perihal Flag Part 1):
Flag berubah kalau kita Compare(CMP) atau Subtitute(SUB). JUMP(JMP,JE, JB, JG, JGE, JBE) bergantung dengan flag.
Apa gunanya JUMP? Untuk melompat la dari satu 'Label' ke 'Label' yang lain.

Unconditional Jump

Pertama sekali, kita kena faham konsep unconditional JUMP yang menggunakan arahan JMP.

bentuk asas arahan JMP adalah seperti di bawah.
JMP Label
Label: (operasi)

dibawah adalah ilustrasi bagaimana arahan JMP berfungsi

Pertama,

0. JMP pergi ke Label

1. Dalam 'Label' ada arahan JMP ke 'Mahmud'

2.Pergi ke 'Mahmud', dalam ada arahan JMP ke 'Ali'

3.Berakhir dekat 'Ali' sebab takde arahan JMP.

Paham tak?
,  

Perihal Flag Part 1(CMP dan SUB)

Pertama kita akan concentrate dengan 2 jenis Flag:
  1. Carry Flag(CF)
  2. Zero Flag(ZF)
  3. Sign Flag(SF)
Kedua kita akan tengok apa berlaku pada kedua-dua flag ni bila seru command:
  1. Compare(CMP)
  2. Subtitute(SUB)
Command Compare(CMP) dengan Subtitute(SUB) ada persamaan iaitu kedua-duanya melakukan operasi TOLAK. Cth.

SUB AX, BX adalah AX= AX-BX
SUB AX,2 adalah AX=AX-2

beza CMP dengan SUB adalah CMP takkan ubah nilai kecuali flag.
Cth:
CMP AX, BX tidak akan ubah nilai AX seperti sub tetapi akan melakukan operasi sama
CMP AX, 2 juga tidak akan ubah nilai AX seperti diterangkan tadi.

Sekarang mari kita lihat apa yang berlaku pada Flag.
Sebagai contoh sekarang nilai AX= 0002



















ASSEMBLY
AX
Carry Flag(CF)
Zero Flag(ZF)
Sign Flag(SF)
SUB AX,2
0000
0
1
0
CMP AX,2
0002
0
1
0
Di atas kita dapat lihat perbezaan antara SUB dengan CMP dimana CMP tidak mengubah nilai AX tetapi kedua-duanya akan mengubah nilai FLAG.

Cuba perhatikan contoh seterusnya
AX=0002


















ASSEMBLY
AX
Carry Flag(CF)
Zero Flag(ZF)
Sign Flag(SF)
SUB AX,4
FFFE
1
0
1
CMP AX,4
0002
1
0
1

AX=0002 lagi

















ASSEMBLY
AX
Carry Flag(CF)
Zero Flag(ZF)
Sign Flag(SF)
SUB AX,1
0001
0
0
0
CMP AX,1
0002
0
0
0

Berdasarkan pada ketiga-tiga contoh kita dapat rumuskan sebagai:
SUB kiri,kanan sebagai:





















ASSEMBLY
Nilai Kiri
Carry Flag(CF)
Zero Flag(ZF)
Sign Flag(SF)
Kiri = Kanan
0
0
1
0
Kiri < Kanan Negatif
1
0
1
Kiri > Kanan Positif
0
0
0
CMP kiri, kanan sebagai





















ASSEMBLY
Nilai Kiri
Carry Flag(CF)
Zero Flag(ZF)
Sign Flag(SF)
Kiri = Kanan
Tak Berubah
0
1
0
Kiri < Kanan Tak Berubah1
0
1
Kiri > Kanan Tak Berubah0
0
0
Buat masa sekarang itu saja yang mampu diterangkan perihal FLAG. Ada apa-apa persoalan sila nyatakan pada comment atau e-mail atau twitter.
Wallahua'lam.
,  

Monday, September 20, 2010

7 Tips Kegagalan sebagai Seorang Pelajar

Mari kita berkongsi bersama tips-tips kegagalan terutamanya kepada pelajar di luar sana. Kita sudah puas mendengar tips kejayaan tetapi amat sukar untuk mencapainya. Adakah anda pernah terfikir alternatif lain selain dari kejayaan? Sudah pasti kegagalan menjadi sesuatu yang pasti jika kejayaan tidak kecapi. Apakah itu kegagalan? Sudah pasti definisinya tidak mencapai matlamat sebagai contoh, Ali nak makan tapi dia tak ada makanan. Oleh itu Ali gagal makan. Jika seorang pelajar dia mesti menghabiskan pengajiannya untuk berjaya. Jika dia tidak memenuhi syarat untuk tamat belajar, pelajar itu gagal. Di sini saya akan berkongsi tips-tips untuk pelajar terutamanya yang berada di Universiti. Ini adalah untuk kamu.

  1. Katakan "tidak" kepada semua subjek yang anda ambil. Kalau susah tak perlu kata "tidak" kalau cakap "boleh" pun tak guna sebab memang subjek susah, siapa suruh amik.
  2. Pastikan anda membazirkan masa dengan apa-apa aktiviti dari malam sampai pagi. Pastikan tidur lepas matahari terbit, pastikan semangat untuk ke kelas hilang. Kalau ada kelas malam, tidur atau melepak pada waktu terbabit terutamanya waktu kelas.
  3. Hisap dadah kuat-kuat. Hisap dadah banyak-banyak mesti buat anda kurang prestasi. Kalau anda masih lagi berjaya dengan jumlah dadah yang anda ambil sekarang, sila ambil lagi sehingga anda tak mampu lagi.
  4. Tumbuk leturer sampai gigi dia berdarah. Menumbuk Leturer mungkin akan mengakibatkan anda digantung atau kebiasaannya dibuang. Ini adalah tiket kegagalan yang pantas.
  5. Jangan hantar assignment, lab atau tutorial. Jika kehadiran ke kelas memastikan markah gunakan kaedah yang ke-dua tadi.
  6. Bakar terus Fakulti anda, jika anda tak berhati perut bakar dengan staff bersama student sekali. Kalau takde fakulti nak belajar dekat mana? Tak ada lecturer, siapa nak mengajar?
  7. Bunuh diri sebab kalau anda mati anda pasti gagal dalam segala skop kehidupan dunia ini.
Adakah anda ingin gagal? Jika senarai ini tidak mencukupi, pandangan serta cadangan amat dialu-alukan.
,  

Saturday, August 28, 2010

Assembly: Tambah Nombor Genap & Dapatkan purata

Kadang-kadang aku pun konpius tapi soalan mcm ni biasa keluar:
Write an assembly language program segment to add two even number N1 and N2. The average is computed and stored in a varible named AVG(Assume AVG has been declared as an 8 bit length)
jawapan(aku rasa x berapa bagus):
.MODEL SMALL
.STACK 64
.DATA
TWO db ?
i dw ?
count dw ?
Sum dw ?
AVG db ?
N1 dw ?
N2 dw ?
.CODE
main proc far
MOV Sum,0
MOV TWO,2
MOV count, 0
MOV i,0
start: INC i
Mov AX,i
Mov N2, AX ;AX to N2
DIV TWO
CMP AH, 1 ;Kalau nombor ganjil bahagi dua mesti dapat baki 1
JE start
ADD BX, i ;N1 + N2
Mov N1, BX
INC count ;Kira berapa kali nombor genap ditambah
CMP i, 10
JGE stop
JMP start
stop: MOV Sum, BX
Mov AX, Sum
DIV count ; Bahagi jumlah dengan bilangan tambah
MOV AVG, AL; Masuk nilai purata ke dalam AVG
INT 21h
main endp
end main

Mari kita fahamkan sesama:
Bila bahagi degan operasi DIV, AX akan ada dua nilai berbeza dekat AH & AL.
Dalam AL akan ada nilai bahagi, dalam AH akan ada baki.
Oleh itu, kita CMP(compare) AH dengan 1 sebab setiap nombor ganjil kalau dibahagi 2 akan ada baki 1.

P/S: Rasanya pos yang aku buat sebelum ni patut kena rombak.

Masih banyak lagi kena belajar. ......bersambung
,  

Tuesday, August 17, 2010

Interior Monologue

I am Nothing and God is Everything.

Most of the time I am writing in the form of an 'interior monologue' or Stream-of-consciousness. It is in my logbook and diary, I do keep a yearly diary, one book per year. In which I prefer to convey my thought processes while reminiscing a particular incident.

I think what I see in my own view, yet in your point of view it might be said differently. We might get mutual understanding if you're persuaded to realize a common theme is happening for instance this written word. It is my way of conveying my understanding of reality to you, the reader. Do I reach the target of making you understand? I am not concerned upon it because most might skip reading this because reading this might be a waste of time for them. If you are willing, please continue reading this then its up to you, I am very democratic about it.

First, I would like to try my best to avoid the association of my perspective with absolute truth and reality. It mustn't be as such because it came out from my own mind which the source might be inspired from memory or instantaneous miracle. That previous statement was just my perception of what I am trying to convey for the time being.

I have personal concern like pain, but I realize that pain is just a mind game. Even a broken heart, I view it as not so different to an empty stomach. It all came to down to the component of the mind and emotion.
Most of the time we are beaten down by emotion. The mind just submit and creates all of this fairytale just to agree with emotion.

Since the mind so concern with logic and emotion concern with other's opinion, it will find facts which widely acceptable to compliment the low emotion so the guilt can be minimized. Usually, it requires us to demonize someone or something as the supreme evil which causes our bad emotion. Why a bad emotion? We just don't understand it.


So try to sit, not judge and wait. God will come out with an answer.

Yes, I am just jumbling it all apart, but I believe there's something good in this. Everyone have a decoder or compiler in their mind. Life is a mind game and the world worth nothing at all.

Saturday, August 14, 2010

Contemplating Nothing

We conceptualize nothing so the sensation was a mere creation like a new word to describe the absence. Does it constitute nothing? Does it equal to zero, yet we can go beyond the negative infinitely. Just a mere conception, a mere method of measurement. Just another method to mention this and that like the word I am typing.

When we say we feel nothing, usually it constitute the unknown which in most cases physiological. We crave something and we perceive it as sustenance. All mere conception as we believe we need substitute for it. Drugs, sex and over eating were just sedative against reality. Numbing our perception which sometimes contribute illness.

Nothing never belong in this physical realm as there is something which create and administer it. To ever understand nothing will be unattainable as we begin with something which is GOD almighty.

I guess this can be constituted as nothing, so throw it in the dust bin. How can you throw something which doesn't exist?
 

Monday, May 3, 2010