NIM : 2017470021
3. Sebutkan register-register baru pada SAP-3 yang tidak dapat pada SAP-2!
6. Misalkan terdapat data 124byte yang di simpan pada alamat memori 100H
rotasi
tumpukan? Jelaskan!
C ----------------A---------------
Jawab
akumulator. Dalam hal ini, bit-bit akumulator diputar kekanan dan LSB
14. Kompersi paralel – ke serial dan operasi sebaliknya merupakan salah satu
dengan bendera pindahan dalam keadaan reset, sebuah instruksi RAL akan
jika
CY = 0 A = 0010 0001
CY = 0 A = 0100 0010
CY = 0 A = 0000 1100
1. Register Alamat
Insruksi MOV dan MVI mempunyai prinsip kerja yang sama seperti didalam SAP-2. Perbedaannya hanya
terletak pada jumlah register yang lebih besar untuk dilibatkan dalam pemindahan data. Format dari
suatu instruksi pemindahan dalam kasus ini berbentuk :
Instruksi MOV mengirimkan data dari reg2 ke reg1. Secara simbolis hal ini diungkapkan oleh tanda :
Reg1 reg2
Tanda panah menyatakan bahwa data didalam register 2 disalin tanpa merusak kedalam register 1. Pada
akhir eksekusi akan didapatkan
Reg1 = reg2
MOV L,A
Demikian pula,
MOV E,H
Memberikan hasil
E=H
MVI reg,byte
MVI D,0EH
Akan menghasilkan
D = 0EH
MVI L,FFH
Memberi hasil
L = FFH
Apa keuntungan dengan register CPU yang lebih banyak ? sebagaimana dapat kita ingat kembali,
instruksi MOV dan MVI memerlukan keadaan T lebih sedikit daripada instruksi-instruksi acuan – memori
(MRI ). Adanya regoister CPU ekstra berarti bahwa kita dapat menggunakan lebih banyak instruksi MOV
dan MVI dan mengurangi jumlah MRI yang dipakai. Karena itu, program-program SAP-3 beroperasi lebih
cepat daripada program-program SAP-2. Selian itu, mempunyai register CPU lebih banyak. Untuk
penyimpanan sementara akan menyederhanakan penulisan program.
Ada dua instruksi yang dapat kita gunakan untuk mengendalikan bendera pindahan. Instruksi STC akan
mereset bendera CY jika belum diset sebelumnya. (STC berarti set Carry atau pasang pindahan). Dengan
demikian jika
CY = 0
CY = 1
Instruksi bendera pindahan yang lain adalah CMS, yang merupakan singkatan dari complement the Carry
(komplemenkan pindahan). Apabila dilaksanakan, instruksi CMC akan mengkomplemenkan nilai CY. Jadi,
jika CY = 1, CMC akan menghasilkan CY = 0; dipihak lain, jika CY = 0, CNC akan menghasilkan CY = 1.
Bila kita ingin mereset bendera pindahan tanpa mengetahui statusnya maka kita harus mensetnya
dahulu dan kemudian mengambil komplemennya.
STC
CMC
Akan menjamin bahwa nilai akhir CY akan menjadi nol jika nilai awalnya tidak diketahui.
Instruksi ADD
ADD reg
Dengan reg = A,B,C,D,E,H atau L. Instruksi ini menjumlahkan isi dari register yang ditunjuk, dengan isi
akumulator. Hasil penjumlahan disimpan dalam akumulator dan keadaan bendera pindahan (set atau
reset), bergantung pada ada atau tidaknya pindahan yang dihasilkan pada akhir operasi.
Instruksi
ADD E
7. A.PERKALIAN
Mov al, 5h
Mul bl
Mov ax,val1
Mul val2
……
…..
Val 1 dw 2000h
Val 2 dw 0010h
Perkalian intergen 1 dengan byte 1 dan menyimpan hasilnya dalam variable 32-bit yang diberi nama
result:
Mov bh, 0
Mul bx
……
…..
Byte1 db 20h
Integer 1 dw 1234h
Result dd ?
B.PEMBAGIAN
DX berisi nilai yang akan dibagi pada posisi tinggi, jadi kita harus menggosongkannya sebelum
pembagian. Sesudah pembagian, hasil baginya disimpan dalam register AX dan sisanya dalam register
DX:
Mov dx, 0
Div cx
Mov dx, 0
Div divisor
Dividend dw 8003h
Divisor dw 100h
Perintah JNC menguji bit Carry, dan jika tidak di-set, maka sebuah lompatan akan dilakukan ke alamat
relatif yang telah ditentukan. Sebagai contoh, perintah berikut akan menyebabkan loop tanpa henti,
karena Carry dibersihkan oleh perintah CLR C dan JNC akan selalu menyebabkan lompatan ke lokasi yang
sama yang berlabel ‘LOOP’.
19.MOV (Move)
Contoh : MOV A, B
Instruksi ini menyalin isi register B ke dalam register A, Setelah intuksi dijalankan maka isi A=B
cin>>input;
dectohex(input);
dectobin(input);
dectooc(input);
getch();
{
cout << input <<" dalam Biner adalah ";
++counter;
c[counter] = input % 2;
input = input / 2;
while(counter>0)
--counter;
cout<<"\n";
++counter;
while(counter>0)
if(c[counter]==15)
{
cout<<"F";
else if(c[counter]==14)
cout<<"E";
else if(c[counter]==13)
cout<<"D";
else if(c[counter]==12)
cout<<"C";
else if(c[counter]==11)
cout<<"B";
else if(c[counter]==10)
cout<<"A";
else
cout<<c[counter];
--counter;
cout<<"\n";
}
++counter;
c[counter] = input % 8;
input = input / 8;
while(counter>0)
--counter;
cout<<"\n";
Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi, yang
digunakan untuk menyimpan data dan/atau instruksi yang sedang diproses, dan dibentuk oleh 16 titik
elektronis di dalam chip mikroprosessor itu sendiri. Dengan adanya tempat-tempat penampungan data
sementara ini, proses pengolahan akan bisa dilakukan secara jauh lebih cepat dibandingkan apabila data-
data tersebut harus diambil langsung dari lokasi-lokasi memori.
Pengertian Register :
Deklarasi pointer
Typedata *namavariabel;
Untuk lebih jelasnya adalah :
int *pint;
float *pfloat;
Tmhs *pmhs;
TOP merupakan sebutan untuk elemen paling atas dari suatu stack
Elemen TOP merupakan elemen yang paling akhir ditambahkan
Elemen TOP diketahui
penambahan dan penghapusan elemen selalu dilakukan di TOP
LIFO
Pemanfaatan tumpukan:
1. InsertFirst () biasa disebut Push (input E : typeelmt, input/output data : stack): menambahkan
sebuah elemen ke tumpukan
2. DeleteFirst () biasa disebut Pop (output E : typeelmt, input/output data : stack ) : menghapus
sebuah elemen tumpukan
3. IsEmpty () : mengecek apakah stack kosong atau ada elemennya
4. IsFull () : mengecek apakah stack telah penuh atau belum
5. Clear () : menghapus semua data
6. Peek () : melihat data TOP
15. ISA
merupakan sebuah spesifikasi dari Pullman semua kode-kode biner (opcode) yang
diimplementasikan dalam bentuk aslinya (native form) dalam sebuah desain prosesor tertentu.
Kumpulan opcode tersebut, umumnya disebut sebagai bahasa mesin (machine language)
untuk ISA yang bersangkutan. ISA yang populer digunakan adalah set instruksi untuk chip Intel
x86, IA-64, IBM PowerPC, Motorola 68000, Sun SPARC, DEC Alpha, dan lain-lain.
13. 19 -28
-28 SP 17
17 STACK 739
739 SP ..
. 43
.
43
dalam (bahasa Inggris: Instruction Set, atau Instruction Set Architecture (ISA)) adalah suatu aspek
dalam arsitektur komputer yang dapat dilihat oleh para pemrogram. Secara umum, ISA ini mencakup jenis
data yang didukung, jenis instruksi yang dipakai, jenis register, mode pengalamatan, arsitektur memori,
penanganan interupsi, eksepsi, dan operasi I/O eksternalnya (jika ada).
9.STACK (TUMPUKAN)
Stack (tumpukan) sebenarnya secara mudah dapat diartikan sebagai list (urutan) dimana
penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari
stack.
Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO (Last In First Out),
yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang dapat
dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-
piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya,
selsnjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita
hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang
terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).
Dua operasi dasar pada stack adalah PUSH (operasi pemasukan elemen ke dalam stack) dan POP
(operasi pengambilan satu elemen dari dalam stack). Di bawah ini diberikan contoh pemakaian operasi
PUSH dan POP dan isi stack untuk setiap selesai eksekusi satu operasi.
8. Instruksi ADD
Format instruksi ADD adalah :
ADD reg
Dengan reg = A,B,C,D,E,H atau L. Instruksi ini menjumlahkan isi dari register yang ditunjuk, dengan isi
akumulator. Hasil penjumlahan disimpan dalam akumulator dan keadaan bendera pindahan (set atau
reset), bergantung pada ada atau tidaknya pindahan yang dihasilkan pada akhir operasi.
Instruksi
ADD E
1111 0001
+ 0000 1001
1111 1001
Dalam hal ini tidak dihasilkanpindahan akhir. Karena itu., pada akhir siklus instruksi akan
diperoleh
CY = 0 dan A = 1111 1001
1111 1111
+ 0000 0001
10000 0000
while(counter>0)
{
if(c[counter]==15)
{
cout<<"F";
}
else if(c[counter]==14)
{
cout<<"E";
}
else if(c[counter]==13)
{
cout<<"D";
}
else if(c[counter]==12)
{
cout<<"C";
}
else if(c[counter]==11)
{
cout<<"B";
}
else if(c[counter]==10)
{
cout<<"A";
}
else
{
cout<<c[counter];
}
--counter;
}
cout<<"\n";
}
6. ; ********************************************
; LPM.ASM
; ********************************************
.include “C:\MICROC~1\VMLAB\include\m8def.inc”
.def temp =r16
reset:
rjmp start
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
start:
ser r16
point_to:
forever:
lpm temp, z+
com temp
breq point_to
rcall delay
rjmp forever
delay:
ldi temp, 3
satu:
dec temp
brne satu
ret
tabel: