Anda di halaman 1dari 19

NAMA : Dendy Septiadi Prayoga

NIM : 2017470021

1. Register apakah yang di gunakan untuk menyimpan alamat data pada

instruksi pengalamatan tidak langsung?

2. Dapatkah register pada nomer 1 diganti dengan sembarang register

dengan ukuran yang sama?

3. Sebutkan register-register baru pada SAP-3 yang tidak dapat pada SAP-2!

4. Tulislah program untuk mengurungkan bilangan decimal 250 dengan 46!

5. Tuslah program untuk menguruangkan bilangan decimal 45 dari 130!

6. Misalkan terdapat data 124byte yang di simpan pada alamat memori 100H

sampai 13FF. buatlah program untuk menyalin data tersebut ke alamat

memori 4000H sampai 43FF

7. Buatlah program perkalian dan pembagian dengan menggunakan instruksi

rotasi

8. Bendera apa saja yang terpengaruh oleh instruksi ADD! Jelaskan!

9. Di manakah alamat tumpukan (stack) disimpan?

10. Jelaskan pengertian istilah “tumpukan tumbuh ke bawah”

11. Berapakah lebar register yang di datanya akan di simpan dalam

tumpukan? Jelaskan!

12. Jelaskan pengertian instruksi register yang di perluas!

13. Gambarkan mekanisme instruksi push dan pop

14. Jelaskan fungsi instruksi rotasi pada perkalian dan pembagian 2!

15. Jelaskan instruksi-instruksi register yang di perluas!

16. Jelaskan konsep LIFO pada stank!

17. Jelaskan instruksi yang sesuai dengan diagram berikut


18. Jelaskan instruksi berikut JNC!

19. Jelaskan register-register yang terdapat dalam SAP-3

20. Jelaskan fungsi register stack pointer!

C ----------------A---------------

Jawab

17. memperlihatkan bagaimana instruksi RRC memutar bit-bit dalam

akumulator. Dalam hal ini, bit-bit akumulator diputar kekanan dan LSB

disimpan didalam bendera CY. Dengan demikian bila diberikan harga-harga

awal : CY = 1 A = 0111 0100

Maka sebuah instruksi RRC akan menghasilkan : CY = 0 A = 0011 1010

14. Kompersi paralel – ke serial dan operasi sebaliknya merupakan salah satu

penggunaan utama dari instruksi putar/rotasi. Perputaran bit-bit menimbulkan

efek perkalian atau pembagian isi akumulator dengan faktor 2. Khususnya

dengan bendera pindahan dalam keadaan reset, sebuah instruksi RAL akan

menghasilkan operasi perkalian dengan 2, dan sebuah instruksi RAR akan

menghasilkan operasi pembagian dengan 2 terhadap isi akumulator. Ini dapat

dibuktikan secara aljabar, contoh:

jika

CY = 0 A = 0010 0001

Maka eksekusi RAL akan menghasilkan :

CY = 0 A = 0100 0010

Dalam hal ini, A telah diubah dari desimal 33 menjadi 66.

Instruksi RAR mempunyai pengaruh yang berlawanan, instruksi ini

menghasilkan operasi membagi dengan 2. Jika


CY 0 A = 0001 1000

Maka dengan instruksi RAR akan diperoleh :

CY = 0 A = 0000 1100

Isi desimal dari akumulator telah berubah dari 24 desimal menjadi 12

1. Register Alamat

 Digunakan untuk mode pengalamatan


 Segment Register (Code Segment, Data Segment, Stack Segment, Extra Segment)
 Register Index (Stack Index, Data Index)
 Stack Pointer

3. MOV dan MVI

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 :

MOV reg 1, reg2.

Dengan reg1 = A,B,C,D,E,H atau L

reg2 = A,B,C,D,E,H atau L

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

Sebagai contoh, instruksi

MOV L,A

Menyalinkan A kedalam L, sehingga


L=A

Demikian pula,

MOV E,H

Memberikan hasil

E=H

Instruksi pemindahan segera memiliki format :

MVI reg,byte

Dengan reg = A,B,C,D,E,H atau L. dengan ini eksekusi dari

MVI D,0EH

Akan menghasilkan

D = 0EH

Demikian pula instruksi

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.

Instruksi Bendera Pindahan

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

Eksekusi dari instruksi STC menghasilkan

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.

Dengan kata lain, pelaksanaan dari

STC

CMC

Akan menjamin bahwa nilai akhir CY akan menjadi nol jika nilai awalnya tidak diketahui.

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.

Sebagai contoh umpamakan

A=1111 0001 dan E = 0000 1000

Instruksi

ADD E

7. A.PERKALIAN

Contoh perkalian AL dengan 10h:

Mov al, 5h

Mov bl, 10h

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 ax, integer 1

Mov bh, 0

Mov bl, byte 1

Mul bx

Mov word ptr result, ax

Mov word ptr result+2, dx

……

…..

Byte1 db 20h

Integer 1 dw 1234h

Result dd ?

B.PEMBAGIAN

Pembagian 16-bit (8003h/100h = 80h, sisa 3)

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

Mov ax, 8003h

Mov cx, 100h

Div cx

Contoh 3. pembagian 16-bit menggunakan operand memori sebagai pembagi:

Mov dx, 0

Mov ax, dividend

Div divisor

Dividend dw 8003h
Divisor dw 100h

18. NC (Jump if Carry Not Set)

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)

 Instruksi untuk memindahkan data antar-register.


 Format intruksi : MOV register, register

Contoh : MOV A, B

Instruksi ini menyalin isi register B ke dalam register A, Setelah intuksi dijalankan maka isi A=B

MVI (Move Immediate)

 Intruksi untuk memindahkan 8 bit data ke dalam register.


 Format instruksi : MVI register, byte.

Contoh : MVI A,4E H

Setelah intruksi ini dilaksanakan maka register A= 4E H

5. cout<<"Program Konversi Bilangan\n\n";

cout<<"Masukkan bilangan desimal : ";

cin>>input;

dectohex(input);

dectobin(input);

dectooc(input);

getch();

void dectobin(int input)

{
cout << input <<" dalam Biner adalah ";

for(int x=0; x<input;)

++counter;

c[counter] = input % 2;

input = input / 2;

while(counter>0)

cout << c[counter];

--counter;

cout<<"\n";

void dectohex(int input)

cout << input <<" dalam Hexadesimal adalah ";

for(int x=0; x<input;)

++counter;

c[counter] = input % 16;

input = input / 16;

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";
}

void dectooc(int input)

cout << input <<" dalam Oktal adalah ";

for(int x=0; x<input;)

++counter;

c[counter] = input % 8;

input = input / 8;

while(counter>0)

cout << c[counter];

--counter;

cout<<"\n";

20. penjelasan tentang register stack pointer

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

Untuk mendeklarasikan sebuah pointer, perintah dasarnya adalah :

Typedata *namavariabel;
Untuk lebih jelasnya adalah :

int *pint;

float *pfloat;

Tmhs *pmhs;

16.STACK (STRUKTUR DATA)


Dalam ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan
prinsip LIFO (Last In First Out), yaitu data yang terakhir kali dimasukkan akan pertama kali keluar
dari tumpukan tersebut. Tumpukan dapat diimplementasikan sebagai representasi berkait atau
kontigu (dengan tabel fix). Ciri tumpukan:

 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:

 Perhitungan ekspresi aritmetika (posfix)


 algoritme backtraking (runut balik)
 algoritme rekursif
Operasi 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

19 New item item 19

Operasi yang dilakukan Isi Stack Keterangan


Kondisi Awal kosong -
PUSH('A',S) A -
PUSH('B',S) AB -
PUSH('C',S) ABC -
POP(Data,S) AB Variabel Data berisi 'C'
PUSH('D',S) ABD -
POP(Data,S) AB Data berisi 'D'
POP(Data,S) A Data berisi 'B'

12. Pengertian Set Instruksi

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).

11. Ukuran register

Tabel berikit berisi ukuran register dan padanan prosesornya


Register Prosesor
4-bit Intel 4004
8-bit Intel 8080
16-bit Intel 8086, Intel 8088, Intel 80286
Intel 80386, Intel 80486, Intel Pentium Pro, Intel Pentium, Intel Pentium 2,Intel
Pentium 3, Intel Pentium 4, Intel Celeron, Intel Xeon, AMD K5, AMD K6, AMD
32-bit
Athlon, AMD Athlon MP, AMD Athlon XP, AMD Athlon 4, AMD Duron, AMD
Sempron
Intel Itanium, Intel Itanium 2, Intel Xeon, Intel Core, Intel Core 2, AMD Athlon
64-bit 64, AMD Athlon X2, AMD Athlon FX, AMD Turion 64, AMD Turion X2, AMD
Sempron

10. Perilaku tumpukan (tumbuh atau tumbuh)


tergantung pada antarmuka biner aplikasi (ABI) dan bagaimana tumpukan panggilan (alias
catatan aktivasi) diatur. Sepanjang masa hidupnya sebuah program terikat untuk berkomunikasi
dengan program lain seperti OS. ABI menentukan bagaimana suatu program dapat berkomunikasi
dengan program lain. Tumpukan untuk arsitektur yang berbeda dapat tumbuh dengan cara yang
baik, tetapi untuk arsitektur itu akan konsisten. Tapi, pertumbuhan stack ditentukan oleh ABI dari
arsitektur itu.

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.

Sebagai contoh umpamakan

A=1111 0001 dan E = 0000 1000

Instruksi
ADD E

Menghasilkan penjumlahan biner :

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

Sebagai contoh yang lain, misalkan

A = 1111 1111 dan L = 0000 0001

Eksekusi dari ADDL menghasilkan

1111 1111

+ 0000 0001

10000 0000

Pada akhir siklus instruksi akan didapatkan :

CY = 1 dan A = 0000 0000

2. TIDAK, Karna masing-masing register memiliki peran/tugasnya masing-masing.

4. cout<<"Program Konversi Bilangan\n\n";


cout<<"Masukkan bilangan desimal : ";
cin>>input;
dectohex(input);
dectobin(input);
dectooc(input);
getch();
}

void dectobin(int input)


{
cout << input <<" dalam Biner adalah ";
for(int x=0; x<input;)
{
++counter;
c[counter] = input % 2;
input = input / 2;
}
while(counter>0)
{
cout << c[counter];
--counter;
}
cout<<"\n";
}

void dectohex(int input)


{
cout << input <<" dalam Hexadesimal adalah ";
for(int x=0; x<input;)
{
++counter;
c[counter] = input % 16;
input = input / 16;
}

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";
}

void dectooc(int input)


{
cout << input <<" dalam Oktal adalah ";
for(int x=0; x<input;)
{
++counter;
c[counter] = input % 8;
input = input / 8;
}
while(counter>0)
{
cout << c[counter];
--counter;
}
cout<<"\n";
}

6. ; ********************************************

; LPM.ASM

; Contoh aplikasi LPM pada program Running LED

; ********************************************

.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

; Program starts here after Reset

start:

ldi temp, low (ramend)

out spl, temp

ldi temp, high (ramend)


out sph, temp

ser r16

out ddrb, temp

point_to:

ldi zl, low (tabel<<1)

ldi zh, high (tabel<<1)

forever:

lpm temp, z+

com temp

out portb, temp

cpi temp, $7f

breq point_to

rcall delay

rjmp forever

delay:

ldi temp, 3

satu:

dec temp

brne satu

ret
tabel:

.db 1, 2, 4, 8, 16, 32, 64, 128

Anda mungkin juga menyukai