Operasi perpindahan data mikroprosesor
Instruksi perpindahan data • •
Push Instruksi untuk memasukkan (menyimpan ) sebuah data ke dalam tumpukan (stack). • Data asal berupa isi dari sebuah register , atau isi dari suatu lokasi memori, atau data langsung (mentah). Ukuran data mentah 8, ! atau "# bit. • $intaks % PU$& ' PU$& *alamat+ PU$& data ontoh PU$& - PU$& *DI+
/ menyimpan isi register - ke stack / menyimpan isi lokasi memori beralamat (D$01 2DI) ke stack PU$& #h / menyimpan data #h ke stack 3lamat stack dibentuk oleh register $$ dan $P ($$%$P)
• POP • •
Instruksi untuk mengambil kembali sebuah data dari dalam tumpukan (stack) untuk diletakkan kembali kedalam suatu register ! bit atau ke lokasi memori ! bit tertentu $intaks % POP ' 4 POP *alamat+ 4 POP5 4 ontoh 4 POP - / mengambil isi stack paling atas dan meletakkannya di register - 4 POP *DI+ / mengambil isi stack paling atas dan meletakkannya di lokasi memori beralamat (D$%DI) 4 POP *$I+ / mengambil isi stack paling atas dan meletakkannya dilokasi memori yang beralamat *D$%$I+
3lamat stack dibentuk oleh register $$ dan $P ($$%$P)
ontoh program operasi PU$& 6POP
Sebelum instruksi PUSH AX dapat dilihat isi stack dengan mengetikkan perintah alamat stack yaitu DFFEE !erlihat isi stack masih k"s"ng
Setelah instruksi PUSH AX dapat dilihat isi stack berisi 5699H
$etelah instruksi PU$& - dapat dilihat isi stack men7adi #"& pada alamat 553 dan 9!::& pada alamat 55
(nstruksi P#P )X menyebakan isi stack paling atas $*+,-H% disalin ke register )X $register )X berisi *+,-H% dan alamat stack men'adi FFE)
instruksi P#P DX menyebabkan isi stack $5699H% disalin ke register DX $ register DX berisi 5699H% & kemudian stack kembali k"s"ng dan alamat stack kembali men'adi FFEE
Contoh program memakai operasi stack untuk mencetak huru; dari 3 <=
&asil Program
Penjelasan program:
-aris >O? -@,D@ di baris kelima diatas diganti dengan PU$& D yang berarti melakukan operasi penyimpanan register stack , dan baris >O? D@,-@ diganti dengan POP D yang berarti mengambil isi stack .
•
& (&3A)
•
Instruksi & ber;ungsi untuk menukarkan isi suatu register dengan register lainnya atau isi suatu register dengan isi suatu memori
•
$intaks
• • • • • •
& reg, reg & reg, *almat+ ontoh & 3,- / menukarkan isi register 3 dan - & D,*DI+ / menukarkan isi register D dan isi lokasi memori beralamat (D$01 2DI) & *$I+,& / menukarkan isi lokasi memori yang beralamat (D$01 2$I) dengan isi register &
•
@3 (@oad ;;ectiBe 3ddress)
•
Instruksi @3 akan mengambil alamat suatu data pada lokasi memori tertentu dan meletakkannya di suatu register ! bit
•
$intaks
• • •
@3 reg, *alamat+ ontoh @3 -,*DI+ / alamat o;;set yang ditun7ukkan oleh DI (isi register DI ) diambil dan diletakkan di - @3 3,*$I+ / alamat o;;set yang ditun7ukkan oleh $I (isi register $I ) diambil dan diletakkan di 3
• @OD$ (@oad string) 4 Instruksi lods akan memindahkan data string pada segmen data yang alamat o;;setnya ditun7ukkan oleh isi register $I ke accumulator (3@,3). $etelah memindahkan data isi register $I akan diincrement ( bila DC1) atau decerement (DC) 4 ontoh • @OD$- / data pada lokasi memori beralamat (D$012$I) dipindahkan ke register 3@ / $IC$I2 • @OD$ / data pada lokasi memori beralamat (D$012$I) dipindahkan ke register 3 / $IC$I2# • @OD$D / data pada lokasi memori beralamat (D$012$I) dipindahkan ke register 3 / $IC$I2
• $EO$ ($EO' string) 4 Instruksi $EO$ akan memindahkan string dari accumulator (3@,3, 3) ke e0tra segmen yang alamat o;;setnya ditun7ukkan oleh isi register DI ($%DI). 4 ontoh • $EO$- / isi register 3@ dipindahkan ke lokasi memori beralamat ($012DI) / DICDI2 • $EO$ / isi register 3 dipindahkan ke lokasi memori beralamat ($012DI) / DICDI2#
• $EO$D / isi register 3 dipindahkan ke lokasi memori beralamat ($012DI) / DICDI2
• >O?$ (>oBe string) 4 Instruksi >O?$ akan memindahkan string ke suatu lokasi memori lain Instruksi ini memindahkan sebuah byte, Ford, double Ford dari suatu segmen beralamat o;;set $I ke e0tra segmen DI . 4 ontoh • >O?$- / isi lokasi memori beralamat ($012DI) dipindahkan ke alamat ($012DI) / DICDI2, $IC $I2 • >O?$ / isi lokasi memori beralamat ($012DI) dipindahkan ke alamat ($012DI) / DICDI2#, $IC $I2#
• >O?$D / isi lokasi memori beralamat ($012DI) dipindahkan ke alamat ($012DI) / DICDI2, $IC $I2
(si mem"ri D(.*// dan isi mem"ri S(.*/0 sebelum pr"gram di'alankan
(si mem"ri D(.*// dan isi mem"ri S(.*/0 Setelah pr"gram di'alankan
• • • • • • • • • • • • • •
Gelaskan barisO? -,8""# PU$& - POP 3 & 3,- >O? DI,111 >O? $I,#11 @3 -,*DI+ @OD$@OD$ $EO$ >O?$IAE #1