Kuliah 2: 2.1. Struktur Register 2.2. Mode Pengalamatan 2.3. Set Instruksi
Bahasa Rakitan
ABM 1
2.1. Struktur Register Register: • •
Lokasi memori yang sangat khusus terkonstruksi dari Flip-Flop Didesain u/ menampung data, data tsb. dapat diakses dan diakses dalam berbagai operasi dgn kecepatan tinggi. –– –– ––
•
U/ U/ prosessor prosessor 8088/8086, 8088/8086, 80188/80186, 80188/80186, 80286 80286 Æ Æ register register 16 16 bit bit U/ U/ prosessor prosessor 80386/80486/80586/Pentium 80386/80486/80586/Pentium Æ Æ register register 32 32 bit bit Optional Optional u/ u/ general general purpose purpose register register Æ Æ not not independent independent 88 bit bit registers registers u/ u/ High High Order Order Byte Byte dan dan Low Low Order Order Byte Byte
Jenis-Jenis Register: ––
General-purpose General-purpose registers registers ((data data registers registers): ): –– ––
–– –– –– ––
16 16 bit: bit: AX, AX, BX, BX, CX, CX, DX DX 88 bit bit :: AH, AH, AL, AL, BH, BH, BL, BL, CH, CH, CL, CL, DH, DH, DL DL
Segment Segment registers registers :: CS, CS, DS, DS, SS, SS, ES ES Index Index register register:: SI, SI, DI, DI, IP IP Pointer Pointer register register:: IP, IP, SP SP Flags Flags registers registers:: Overflow, Overflow, Direction, Direction, Interrupt, Interrupt, Trap, Trap, Sign, Sign, Zero, Zero, Auxiliary Auxiliary Carry, Carry, Parity, Parity, Carry Carry ––
16 16 bit, bit, tetapi tetapi hanya hanya 99 bit bit yang yang digunakan digunakan
Bahasa Rakitan
ABM 2
2.1. Struktur Register (cont’d)
2.1.1 General-purpose register (data register) – Digunakan u/ operasi aritmatik dan data movement – Setiap register dapat dialamatkan sebagai suatu nilai 16 bit atau 8 bit •• Contoh: Contoh: AX AX (16 (16 bit) bit) Æ Æ upper upper 88 bit bit AH AH dan dan lower lower 88 bit bit AL AL
Bahasa Rakitan
ABM 3
2.1. Struktur Register (cont’d) – Posisi bit selalu di nomori dari kiri kekanan, dimulai dgn 0: 16 bit AX register AH register
AL register
7 07 0 – Instruksi dpt beralamat 16-bit atau 8-bit data registers: AX AH
AL
BX BH
BL
CX CH
CL
DX DH
DL
– Jika suatu 16-bit register dimodifikasi Æ otomatis terkait ke 8-bit-nya • Contoh: andaikan AX berisi 0000h. Jika suatu nilai data 126Fh di-move ke AX, maka AL beurbah menjadi 6Fh
– Atribut khusus GP-register: • AX (accumulator): operasi aritmatik, (operasi lain juga lebih effisien jk dilakukan di resgiter ini) • BX (base): – Operasi aritmatik dan data movement – Kemampuan pengalamatan khusus; yaitu berisi alamat memori yang menunjuk ke variabel lain. – Catatan: SI, DI, dan BP juga memiliki kemampuan khusus ini Bahasa Rakitan
ABM 4
2.1. Struktur Register (cont’d) •• CX CX ((counter counter): ): counter counter u/ u/ instruksi instruksi repeating repeating atau atau looping looping –– Instruksi Instruksi ini ini otomatis otomatis mengulang mengulang dan dan menurunkan menurunkan (decrement) (decrement) CX CX dan dan “quit” “quit” jika jika CX CX Æ Æ 00
•• DX DX ((data data): ): berperan berperan khusus khusus dalam dalam operasi operasi perkalian perkalian dan dan pembagian. pembagian. Dalam Dalam perkalian, perkalian, sabgai sabgai contoh, contoh, DX DX berisi berisi high high 16-bits 16-bits dari dari produk. produk.
2.1.2. Segment Registers • •
Digunakan sebagai base locations u/ intruksi-2 program, data, dan stack. Segment-2 register: ––
––
CS CS ((code code segment segment): ): berisi berisi base base location location seluruh seluruh instruksi/kode instruksi/kode yang yang dapat dapat dieksekusi dieksekusi (executable) (executable) dalam dalam suatu suatu program program DS data segment segment): ): default default base base location location u/ u/ DS ((data variabel-2 variabel-2 memori. memori. ••
–– ––
CPU CPU menghitung menghitung “offsets” “offsets” variabel variabel menggunakan menggunakan nilai nilai DS DS yang yang sedang sedang berlaku berlaku (current (current value value of of DS) DS)
SS SS ((stack stack segmen segmen): ): berisi berisi base base location location u/ u/ current current program program stack stack ES ES (extra (extra segment): segment): additional additional base base location location u/ u/ variabel-2 variabel-2 memori memori
Bahasa Rakitan
ABM 5
2.1. Struktur Register (cont’d) 2.1.3. Indeks Registers •
Berisi offsets variabel-2 ––
• •
Offset Offset merujuk merujuk pada pada jarak jarak suatu suatu variabel, variabel, label, label, atau atau instruksi instruksi dari dari base base segment-nya. segment-nya.
U/ speed up pemrosesan strings, arrays, dan struktur data lainnya yang mengandung multiple elements. Index-2 register: ––
SI SI ((source source index index): ): ••
––
DI DI ((destination destination index index): ): •• ••
––
8088’s 8088’s string string movement movement instruction, instruction, dimana dimana string string sumber sumber dituju dituju oleh oleh register register SI SI biasanya biasanya mengandung mengandung suatu suatu nilai nilai offset offset dari dari register register DS, DS, namun namun ia ia dapat dapat beralamat beralamat variabel variabel manapun manapun destination destination u/ u/ 8088’s 8088’s string string movement movement instruction. instruction. Biasanya Biasanya berisi berisi suatu suatu offset offset dari dari register register ES, ES, namun namun ia ia dapat dapat beralamat beralamat variabel variabel manapun manapun
BP BP (( base base pointer pointer): ): •• ••
Berisi Berisi offset offset yang yang diasumsikan diasumsikan dari dari register register SS SS Æ Æ bekerja bekerja seperti seperti stack stack pointer pointer Digunakan Digunakan oleh oleh suatu suatu subroutine subroutine u/ u/ menempatkan menempatkan variabel-2 variabel-2 yang yang di-passed di-passed ke ke stack stack melalui melalui suatu suatu “calling” “calling” program program
Bahasa Rakitan
ABM 6
2.1. Struktur Register (cont’d) 2.1.4. Pointer Registers • Antara lain: –– IP IP ((instruction instruction pointer pointer): ): •• Berisi Berisi lokasi lokasi dari dari instruksi instruksi berikut berikut yang yang akan akan diekskusi. diekskusi. •• CS CS dan dan IP IP berkombinasi berkombinasi membentuk membentuk alamat alamat instruksi instruksi berikut berikut yang yang akan akan diekskusi diekskusi
–– SP SP ((stack stack pointer pointer): ): •• Berisi Berisi offset offset atau atau jarak jarak (distance) (distance) dari dari awal awal stack stack ke ke top top stack. stack. •• SS SS dan dan SP SP berkombinasi berkombinasi membentuk membentuk “complete “complete top-of top-of stack stack address” address”
2.1.5. Flags Regsiters • Register 16-bit khusus dgn posisi bit tunggal yang dipekerjakan (assigned) u/ menunjukkan status CPU atau hasil-hasil operasi aritmatik. • Dari 16 bit posisi hanya 9 bit posisi yang digunakan dan diberi nama 15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
X
X
X
X
O
D
I
T
S
Z
X
A
X
P
X
C
Bahasa Rakitan
ABM 7
2.1. Struktur Register (cont’d) O O= = Overflow Overflow D D= = Direction Direction II = = Interrupt Interrupt TT = = Trap Trap X X= = undefined undefined
•
• • •
S S= = Sign Sign ZZ = = Zero Zero A A= = Auxiliary Auxiliary Carry Carry P P= = Parity Parity C C= = Carry Carry
Catatan: posisi diatas tidak perlu diingat, karena terdapat instruki yng didesain u/ mentes dan memanipulasi flags Sebuah Flags atau bit Æ set jika nilainya 1, clear jk nilainya 0 CPU menset flags melalui “turning” pada bit-2 indvidual dlm register flags Terdapat dua tipe flags dasar: –– ––
Control Control flags flags Status Status flags flags
Control Flags: –– ––
Fungsinya Fungsinya u/ u/ mengontrol mengontrol operasi operasi CPU CPU (( diset diset oleh oleh programmer) programmer) Antara Antara lain: lain: –– –– ––
Direction: Direction: Mengontrol Mengontrol arah arah yang yang digunakan digunakan pada pada pemrosesan pemrosesan string string Nilai Nilai :: up up (1) (1) dan dan down down (0) (0) (( diset diset melalui melalui instruski instruski STD STD dan dan CLD CLD
Bahasa Rakitan
ABM 8
2.1. Struktur Register (cont’d) –– –– –– –– –– –– ––
Interrupt Interrupt flags: flags: Memungkinan Memungkinan external external interrupt interrupt berlaku berlaku Disebabkan Disebabkan oleh oleh devais devais HW HW misalkan misalkan keyboard, keyboard, disk disk drive, drive, system system clock clock timer timer Nilai: Nilai: 11 enable(EI), enable(EI), 00 disable disable (DI) (DI) (dikontrol (dikontrol melalui melalui instruksi instruksi CLI CLI dan dan STI) STI) Trap Trap flags: flags: Menentukan Menentukan apakah apakah CPU CPU perlu perlu dihentikan dihentikan setelah setelah setiap setiap instruksi instruksi dilaksanakan dilaksanakan Digunakan Digunakan pada pada saat saat Debugging Debugging program program Æ Æ TRACING TRACING
Status Flags: –– ––
Merefleksikan Merefleksikan outcome outcome dari dari operasi operasi aritmatik aritmatik dan dan logika logika Antara Antara lain lain –– –– ––
–– –– ––
Carry Carry Flags: Flags: Diset Diset jika jika hasil hasil op. op. aritmatik aritmatik terlalu terlalu besar besar u/ u/ di di fit-kan fit-kan ke ke destination destination Contoh: Contoh: Jika Jika nilai nilai 200 200 dn dn 56 56 dijumlahkan, dijumlahkan, kemudian kemudian diletakkan diletakkan ke ke suatu suatu 8-bit 8-bit destination, destination, 256 256 terlalu terlalu besar besar sehingga sehingga CF CF ini ini harus harus diset diset Æ Æ 11 (CY) (CY) atau atau 00 (No (No Carry(NC)) Carry(NC)) Overflow Overflow Flags: Flags: Diset Diset jika jika hasil hasil operasi operasi aritmatik aritmatik yang yang bertanda bertanda terlalu terlalu besar besar u/ u/ di-fitkan di-fitkan ke ke destination destination area area Nilai: Nilai: 11 (OV), (OV), 00 (NV) (NV)
Bahasa Rakitan
ABM 9
2.1. Struktur Register (cont’d) ––
Sign Sign Flag Flag
––
Diset Diset jika jika hasil hasil operasi operasi aritmatik aritmatik atau atau logika logika Æ Æ negatif negatif
––
Karena Karena bil. bil. negatif negatif memiliki memiliki suatu suatu tertinggi, tertinggi, sign sign flag flag selalu selalu merupakan merupakan tanda tanda destination destination
––
Nilai: Nilai: negatif negatif (NG) (NG) dan dan positif positif (PL) (PL)
––
Zero Zero Flag Flag
––
Diset Diset jika jika hasil hasil operasi operasi aritmatik aritmatik atau atau logika logika Æ Æ zero zero
––
Terutama Terutama digunakan digunakan pada pada instruksi-2 instruksi-2 jump jump dan dan loop loop,, supaya supaya memungkinkan memungkinkan percabangan percabangan ke ke suatu suatu lokasi lokasi baru baru dalam dalam suatu suatu program program yang yang berbasis berbasis “perbandingan “perbandingan antara antara dua dua nilai” nilai”
––
Nilai: Nilai: zero zero (ZR), (ZR), Not Not Zero Zero (NZ) (NZ)
––
Auxilairy Auxilairy Flag Flag
––
Diset Diset jika jika suatu suatu operasi operasi mengakibatkan mengakibatkan suatu suatu Carry, Carry, dari dari bit bit 33 ke ke bit bit 4, 4, (( atau atau Borrow Borrow dari dari bit bit 33 ke ke bit bit 4) 4) dari dari sebuah sebuah operand operand
––
Nilai: Nilai: Aux Aux Carry Carry (AC), (AC), No No Aux Aux Carry Carry (NA) (NA)
––
Parity Parity Flag Flag
––
Merefleksi Merefleksi jumlah jumlah bit bit hasil hasil dari dari operasi operasi aritmatik aritmatik yang yang diset. diset. •• ••
11 pada pada posisi posisi suatu suatu copy copy dari dari
Jika Jika terdapat terdapat jumlah jumlah bit bit genap genap (even) (even) Æ Æ PE PE Jika Jika terdapat terdapat jumlah jumlah bits bits ganjil ganjil (odd) (odd) Æ Æ PO PO
Bahasa Rakitan
ABM 10
bit bit bit bit
2.1. Struktur Register (cont’d) ––
Digunakan Digunakan ••
oleh oleh SO SO u/ u/ memverifikasi memverifikasi integritas integritas memori memori dan dan
••
oleh oleh Software Software komunikasi komunikasi u/ u/ memverifikasi memverifikasi kebenaran kebenaran transmisi transmisi data data
2.1.6. Perhitungan Alamat •
Prosessor 8086/8088 Æ kapasitas memori 1 MB = 20 = 1048576 Byte 220 0000 0000 Æ Æ terendah terendah :: FFFF FFFF Æ Æ tertinggi tertinggi
• •
Alamat merujuk pada suatu lokasi memori 8 bit !! Alamat dieskpresikan dalam 1 diantara 2 format hexdesimal berikut: ––
Alamat Alamat segment:offset segment:offset 16-bit 16-bit Æ Æ kombinasi kombinasi suatu suatu base base location location (segment) (segment) dgn dgn offset offset u/ u/ merepresntasikan merepresntasikan actual actual location location –– ––
––
Segmet Segmet register: register: digit digit terendah terendah (16 (1611)) tertinggi tertinggi (16 (1644)) Offset Offset register: register: digit digit terendah terendah (16 (1600)) tertinggi tertinggi (16 (1633))
Alamat Alamat absolute absolute 20-bit 20-bit Æ Æ merujuk merujuk ke ke suatu suatu lokasi lokasi memori memori yang yang eksak eksak (alamat (alamat fisik) fisik)
Bahasa Rakitan
ABM 11
2.1. Struktur Register (cont’d) • Catatan: –– digunakan digunakan segment:offset segment:offset u/ u/ mengatasi mengatasi dilema: dilema: bhw bhw CPU CPU dapat dapat beralamat beralamat 1048576 1048576 byte byte (20 (20 bits) bits) sedangkan sedangkan register register hanya hanya 16 16 bits bits –– Dimengert: Dimengert: segment segment register register memiliki memiliki “4 “4 implied implied zero zero bits bits to to right right
• Contoh:
4 implied Zero bits
segment:offset 08F1:0100 Nilai segment Æ 0 8 F 1(0) Nilai offset Æ 0 1 0 0 ------------ + 0 9 0 1 0 Alamat fisik (H)
segment:offset
Alamat fisik (D)
00000 : 7FFFF : FFFFD : FFFFF
0000 : 0000 : 7000 : FFFF : F000 : FFFD : F000 : FFFF
0 : 524288 : 1048573 : 1048575
Bahasa Rakitan
ABM 12
2.2. Mode Pengalamatan •
•
Ada beberapa cara (mode) untuk mengakses operand; Operand dapat terdapat di register, dalam instruksi, dalam memori atau I/O 8088 mempunyai sekitar 24 addressing mode Æ dikelompok menjadi 7: •• •• •• •• •• •• ••
Register Register Addressing Addressing Immediate Immediate Addressing Addressing Direct Direct Addressing Addressing Register Register Indirect Indirect Addressing Addressing Base Base Relative Relative Addressing Addressing Direct Direct Indexed Indexed Addressing Addressing Base Base Indexed Indexed Addressing Addressing
2.2.1. Register dan Immediate Addressing ••
••
Register Register Add.: Add.: Operand Operand disimpan/diambil disimpan/diambil dari dari register register MOV MOV AX,CX AX,CX ;; copy copy 16 16 bit bit isi isi CX CX (count (count regs) regs) ke ke AX AX (acc. (acc. regs) regs) Immediate Immediate Add.: Add.: source source operand operand dapat dapat berbentuk berbentuk konstanta konstanta 8/16 8/16 bit; bit; Konstanta Konstanta ini ini terdapat terdapat dalam dalam instruksi. instruksi. MOV MOV CX,500 CX,500 MOV MOV CL,-30 CL,-30 ;; simpan simpan –30 –30 ke ke reg. reg. AL AL Bahasa Rakitan
ABM 13
2.2. Mode Pengalamatan (cont’d) KK EQU EQU 1024 1024
;; ;; ;;
source source operand operand dapat dapat berbentuk berbentuk simbol simbol yg yg didefine didefine dgn dgn EQU EQU
•• INGAT: INGAT: –– –– –– ––
88 bit bit signed signed number: number: 127(7H) 127(7H) s/d s/d –128(80H) –128(80H) 16 16 bit bit signed signed number: number: 32767(7FFFH) 32767(7FFFH) s/d s/d –32768(8000H) –32768(8000H) Max Max 88 bit bit unsigned unsigned #: #: 255 255 (0FFH) (0FFH) Max Max 16 16 bit bit unsigned unsigned #: #: 65535 65535 (0FFFFH) (0FFFFH)
2.2.2 Direct Addressing MOV MOV AX, AX, TABLE TABLE 0000 0001 0002 0003 0004 0005
AA BB
;; load load isi isi lokasi lokasi memori memori ;; Table Table ke ke AX AX TABLE
AABB AX
TABLE+2
Data segment
Bahasa Rakitan
ABM 14
2.2. Mode Pengalamatan (cont’d) 2.2.3. Register Indirect Addressing •• Offset: Offset: effectives effectives address address (EA) (EA) Æ Æ jarak jarak letak letak operand, operand, dalam dalam byte byte terhitung terhitung dari dari awal awal segment segment •• Address Address memory memory = = offset offset + + isi isi DS DS digeser digeser dgn dgn 0000 0000 MOV ;; load MOV AX,[BX] AX,[BX] load isi isi memory memory yang yang ;; ditunjuk ditunjuk BX BX ke ke AX AX •• Pertanyaan: Pertanyaan: bagaimana bagaimana meletekkan meletekkan EA EA ke ke BX? BX? MOV MOV BX,OFFSET BX,OFFSET TABLE TABLE MOV MOV BX,OFFSET BX,OFFSET TABLE TABLE MOV MOV AX,[BX] AX,[BX] Data segment
= MOV 0001
AX,TABLE
BX
0000 0001
BB
0002
AA
TABLE
AABB
AX
0003 0004 0005
Bahasa Rakitan
ABM 15
2.2. Mode Pengalamatan (cont’d) 2.2.4. Base Relative Addressing •• EA EA dihitung: dihitung: Displacment Displacment + + isi isi BX BX atau atau BP BP –– BX BX cocok cocok dipakai dipakai jika jika data data yang yang hendak hendak diakses diakses terdapat terdapat di di beberapa beberapa lokasi lokasi memori memori (terpisah) (terpisah)
MOV MOV AX,[BX]+4 AX,[BX]+4
;;Load Load
isi isi field field record record yang yang ;terdapat ;terdapat di di byte byte ke ke 55 dan dan 6, 6, ;dimana ;dimana awal awal address address record record di di ;BX ;BX ke ke AX AX
Displacement (mulai byte 0) Data segment
001A
BX
+
001A
001B 001C 001D 001E
BB
001F
AA
Bahasa Rakitan
AABB
AX
ABM 16
2.2. Mode Pengalamatan (cont’d) 2.2.5. Direct Indexed Addressing •• EA EA = = Displacement Displacement + + Index Index Reg Reg DI DI atau atau SI SI –– –– ––
DI DI atau atau SI SI cocok cocok untuk untuk akses akses elemen elemen dalam dalam Tabel Tabel Displacement Displacement ke ke awal awal TABLE TABLE Index Index reg: reg: ke ke Æ Æ elemen elemen di di dalam dalam Tabel Tabel
MOV MOV DI,4 DI,4 MOV oad elemen elemen ke3 ke3 ke ke AX AX MOV AX,TABLE[DI] AX,TABLE[DI] ;L ;Load ;TABLE ;TABLE adalah adalah Tabel Tabel 11 Byte Byte
0000 0001
DI 0004
0002
+ TABLE
0003
TABLE+2
0004 0005
BB
0006
AA
AABB
AX
TABLE+4
Catatan: Diandaikan kita punya tabel dg Bahasa Rakitan
ABM 17
2.2. Mode Pengalamatan (cont’d) 2.2.6. Base Indexed Addressing • Cocok untuk akses “two dimensional array” • EA = Base regs + Index regs + Displ. Starting Adresss of array
column
row
• Contoh: MOV MOV MOV MOV MOV MOV MOV MOV
AX,[BX+2+DI] operand dapat dapat ditulis ditulis AX,[BX+2+DI] ;;operand AX,[DI+BX+2] dlm [],urutan [],urutan sembarang sembarang AX,[DI+BX+2] ;;dlm AX,[BX+2][DI]; displacemnent dpt dpt digabung digabung AX,[BX+2][DI];displacemnent AX,[BX][DI+2]; dgn salah salah satu satu register register AX,[BX][DI+2];dgn
Bahasa Rakitan
ABM 18
2.3. Set Instruksi • Tipe-tipe instruksi: • Data Transfer (Register, Memory, I/O port) • Operasi Aritmatik (bil. Binary atau Bil. BCD) • Manipulasi Bit (op. SHIFT, ROTATE, Logical dalam regs dan memory) • Control Transfer • String • Interrupt • Process Control
2.3.1 Data Transfer •• ••
Berfungsi Berfungsi memindahkan memindahkan (mengkopi) (mengkopi) data data dan dan address address diantara diantara regs regs dan dan lokasi lokasi memori memori atau atau I/O I/O port port Terbagi Terbagi menjadi: menjadi: –– General General Purpose Purpose :: MOV, MOV, PUSH, PUSH, POP, POP, XCHG, XCHG, XLAT XLAT –– I/O :: IN,OUT I/O IN,OUT –– Address Address Transfer Transfer :: LEA, LEA, LDS, LDS, LES LES –– Flag :: LAHF, Flag Transfer Transfer LAHF, SAHF, SAHF, PUSHF, PUSHF, POPF POPF
Bahasa Rakitan
ABM 19
2.3. Set Instruksi (cont’d) General-Purpose Instructions 1. MOV Æ format: MOV destination,Source IMMEDIATE REGISTER AX,BX,CX,DX SI,DI,BP,SP
MEMORY
Segement register CS,DS,ES,SS
• Contoh: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
AX.TABLE AX.TABLE TABLE,AX TABLE,AX ES:[BX],AX ES:[BX],AX DS,AX DS,AX BL,AL BL,AL CL,-30 CL,-30 DEST,25H DEST,25H
Bahasa Rakitan
Transfer Data: 1 Byte/1 Word Antara Reg ÅÆ Memory Reg ÅÆ Reg Immediate Æ reg/memory data value
;;dari dari mem mem Æ Æ reg reg ;;dari dari reg reg Æ Æ mem mem ;;regÆsegment regÆsegment reg reg (override) (override) ;; 16 16 bit bit reg reg Æ Æ 16 16 seg. seg. Reg Reg ;; 88 bit bit reg reg Æ Æ 88 bit bit reg reg
;;konstanta konstanta Æ Æ reg reg ;;konstanta konstanta Æ Æ mem mem
ABM 20
2.3. Set Instruksi (cont’d) • Perkecualian/tidak dapat dikerjakan: –– Move Move data data antar antar 22 lokasi lokasi memori memori secara secara langsung langsung Æ Æ tidak tidak kangsung kangsung via via general general purpose purpose reg. reg. MOV MOV MOV MOV
AX,POUNDS AX,POUNDS WEIGHT,AX WEIGHT,AX
–– Load, Load, immediate immediate value value ke ke segment segment reg. reg. Via Via GP GP reg. reg. MOV MOV AX, AX, DATA_SEG DATA_SEG MOV MOV DS, DS, AX AX
;load ;load nomor nomor seg. seg. dari dari ;data ;data seg seg ke ke DS DS menunjukan menunjukan ;letak ;letak data data seg. seg.
–– Move Move isi isi 11 seg.reg seg.reg ke ke seg-reg seg-reg yag yag lain lain secara secara langsung langsung Æ Æ tidak tidak langsung langsung via via GP GP reg. reg. MOV MOV AX,ES AX,ES MOV MOV DS,AX DS,AX
;Membuat ;Membuat DS DS menunjuk menunjuk ke ke ;seg. ;seg. yang yang di di ;tunjuk ;tunjuk oleh oleh ES ES
–– Segement Segement register: register: •• CS CS tidak tidak dapat dapat dipakai dipakai sbg sbg destination destination
2. PUSH dan POP • Stack –– dipakai dipakai u/ u/ menyimpan menyimpan address address Æ Æ instruksi instruksi Call Call dan dan return return –– Sbg Sbg penyimpan penyimpan sementara sementara dari dari operand: operand: datadatareg reg atau atau memori memori
Bahasa Rakitan
ABM 21
2.3. Set Instruksi (cont’d) •• Format Format PUSH simpan 11 word word reg. reg. operand operand PUSH source; source;simpan
;atau ;atau 11 word word memori memori operand operand ;di topstack ;di topstack POP ;;biasnya biasnya PUSH PUSH dan dan POP POP POP destination destination ;dipakai bersama ;dipakai bersama
•• Contoh: Contoh: PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH
SI ;;kedalam SI kedalam stack stack dpt dpt simpan simpan DS ;;GP DS GP reg./seg.reg/CS reg./seg.reg/CS CS CS COUNTER ;;dapat COUNTER dapat pula pula lokasi lokasi memori memori TABLE[BX][DI]; TABLE[BX][DI];
STACK
STACK SS:01F8
SS:01F8
SS:01F8
SS:01FA
SS:01FA
SS:01FA
SS:01FC SP
STACK
SP Æ(AX)
SS:01FE Berfore PUSH AX
After PUSH AX
SS:01FC
(AX)
SS:01FC
SS:01FE
SP
SS:01FE
After POP AX
PUSH PUSH AX; AX; transfer transfer 11 word word yang yang ditunjuk ditunjuk AX AX POP POP AX; AX; SP SP menunjuk menunjuk address, address, byte byte yang yang dipakai dipakai untuk untuk menyimpan menyimpan isi isi AX AX
Bahasa Rakitan
SP SP ke ke operand operand semula semula kosong kosong
ABM 22
2.3. Set Instruksi (cont’d) •• PUSH PUSH dan dan POP POP dipakai dipakai u/ u/ copy copy 11 seg-reg seg-reg ke ke seg-reg seg-reg langsung langsung PUSH ;; copy PUSH ES ES copy ES ES ke ke DS DS Æ Æ lambat lambat jika jika POP ;; dibandingkan POP DS DS dibandingkan dgn dgn inst. inst. MOV MOV •• Stack Stack biasa biasa dipakai dipakai diawal diawal subroutine subroutine
3. EXCHANGE (XCHG) •• Instruksi Instruksi u/ u/ mempertukarkan mempertukarkan isi isi source source operand operand dgn dgn destination destination operand, operand, dalam dalam ukuran ukuran byte byte atau atau word word •• Dapat Dapat mempertukarkan mempertukarkan isi isi 22 memori memori dan dan isi isi suatu suatu reg reg dan dan lokasi lokasi memori memori •• Isi Isi segemetn segemetn reg. reg. tidak tidak dapat dapat dipertukarkan dipertukarkan (dgn (dgn instruksi instruksi XCHG) XCHG) XCHG ;pertukaran XCHG AX,BX AX,BX ;pertukaran 22 word word reg reg XCHG ;pertukaran XCHG AL,BH AL,BH ;pertukaran 22 Byte Byte reg reg XCHG XCHG WORD_LOC,DX WORD_LOC,DX ;pertukaran ;pertukaran dgn dgn lok. lok. Mem Mem XCHG XCHG DL,BYTE_LOC DL,BYTE_LOC ;pertukaran ;pertukaran dgn dgn reg. reg.
4. TRANSLATE (XLAT) •• Instruksi Instruksi u/ u/ membaca/memeriksa membaca/memeriksa nilai-2 nilai-2 (byte) (byte) yang yang terdpt terdpt dalam dalam suatu suatu TABEL TABEL dan dan kemudian kemudian mengkopi mengkopi (load) (load) ke ke dalam dalam register register AL AL (ukuran (ukuran max max TABElL=256 TABElL=256 byte) byte) •• Sebelum Sebelum eksekusi eksekusi XLAT XLAT Æ Æ starting starting address address daripada daripada tabelnya tabelnya harus harus disimpan(load) disimpan(load) ke ke BX BX dan dan index index dari dari byte byte yang yang dimaksud dimaksud ke ke dalam dalam AL AL Bahasa Rakitan
ABM 23
2.3. Set Instruksi (cont’d) •• Format: Format: XLAT XLAT source_table source_table •• Urutan Urutan instruksi instruksi u/ u/ memeriksa memeriksa byte byte ke ke 10 10 dari dari tabel tabel S_TAB: S_TAB: MOV MOV AL,10 AL,10 MOV MOV BX,OFFSETS_TAB BX,OFFSETS_TAB XLAT XLAT S_TAB S_TAB
;load ;load harga harga index index AL AL ;load ;load starting starting add. add. S_TAB S_TAB ;ke ;ke BX BX ;ambil ;ambil harga harga dlm dlm tabel tabel ke ke ;AL ;AL
•• XLAT XLAT cocok cocok u/ u/ konversi konversi yang yang membutuhkan membutuhkan waktu waktu perhitungan perhitungan yang yang lama, lama, mislakan mislakan konversi konversi ASCII ASCII display display code code dari dari hexadesimal hexadesimal digit digit
INPUT/OUTPUT instructions •• Dipakai Dipakai u/ u/ berkomunikasi berkomunikasi dgn dgn peripheral peripheral devices devices •• Format: IN Format: IN accumulator, accumulator, port port OUT OUT port, port, accumulator accumulator –– Accumulator Accumulator Æ Æ AL AL = = byte byte trans.; trans.; AX= AX= Word Word transf. transf. –– PORT PORT Æ Æ bil bil desimal(0-255) desimal(0-255) yang yang menunjukkan menunjukkan walah walah satu satu dari dari 256 256 device device dalam dalam sistem sistem
•• Reg Reg DX DX –– Dapat Dapat dipakai dipakai sbg sbg PORT PORT operand operand (64 (64 KK port) port) –– Mudah Mudah merubah merubah nomor nomor prot prot dan dan dapt dapt mengirim mengirim 11 data data je je beberapa beberapa port port yang yang berbeda berbeda
Bahasa Rakitan
ABM 24
2.3. Set Instruksi (cont’d) ••
CONTOH: CONTOH: IN IN AL,200 AL,200 IN IN AL,Port_val AL,Port_val OUT OUT 30H,AX 30H,AX OUT OUT DX, DX, AX AX
;; input input dari dari port port 200 200 dgn dgn ;ukuran ;ukuran 11 byte byte atau atau dari dari ;nama ;nama portnya. portnya. ;output ;output 11 word word ke ke port port 30H 30H ;atau ;atau ke ke port port yang yang si si ;tunjuk ;tunjuk DX DX
Address Transfer Instructions •• ••
Transfer Transfer address address suatu suatu variabel variabel Æ Æ load load address address ke ke reg reg mirip mirip dgn dgn instruksi instruksi move move LEA LEA (Load (Load Effective Effective Address) Address) Mis: Mis: DI DI = = 55
••
LEA LEA BX,TABLE[DI]; BX,TABLE[DI]; load load offset offset address address dari dari TABLE+5 TABLE+5 ke ke BX BX LDS LDS (Load (Load Pointe Pointe using using DS) DS) ––
••
Membaca Membaca 32 32 bit bit dari dari memori, memori, kemudian kemudian load load 16 16 bit bit pertama pertama ke ke reg reg tertentu tertentu dan dan 16 16 bit bit ke ke dua dua ke ke DS DS LDS LDS reg16, reg16, mem32 mem32
LES LES (load (load pointer pointer using using ES) ES) ––
Idem Idem LDS, LDS, tetapi tetapi tidak tidak ke ke DS DS tetapi tetapi ke ke ES ES
Bahasa Rakitan
ABM 25
2.3. Set Instruksi (cont’d) 2.3.2. Instruksi Aritmatik •
8088 dapat melaksanakan operasi aritmatik terhadap: –– ––
•
Bil. Bil. Binary Binary (bertanda/tidak) (bertanda/tidak) Bil. Bil. Desimal Desimal tak tak bertanda bertanda (packed/unpacked) (packed/unpacked)
Penyimpanan bil dalam memori: –– –– ––
Low Low data-lowa data-lowa Address; Address; High High data-high data-high Address Address Contoh: Contoh: Menyimpan Menyimpan 1234H 1234H dilokasi dilokasi memori memori NUM NUM 34 34 H H di di NUM NUM low 12 high 12 H H di di NUM+1 NUM+1
•
ADD (adding), ADC (add with carry) –– –– –– ––
ADD ADD AX,CX AX,CX ;; terbatas terbatas hanya hanya s/d s/d 16 16 bit bit ADC ADC BX,DX BX,DX ;; bila bila hanya hanya >16bit >16bit Æ Æ bit bit ke ke 17 17 di di CF CF dest=dest+source+carry dest=dest+source+carry ADD ADD AX,MEM_Word AX,MEM_Word ADD ;; konstanta ADD AL,10 AL,10 konstanta ke ke reg reg
ADD ADD dan dan ADC ADC memperngaruhi memperngaruhi Flag Flag register: register: CF, CF, PF, PF, AF, AF, ZF, ZF, SF, SF, OF OF Bahasa Rakitan
ABM 26
2.3. Set Instruksi (cont’d) • SUB (subtract), SBB(subract with borrow) –– SUB SUB AX,BX AX,BX –– SBB SBB BX,DX BX,DX
;; dest=dest dest=dest -- source source ;; dest=dest-soruce-carry dest=dest-soruce-carry
•• Perintah Perintah lainnya: lainnya: –– –– ––
DEC DEC (decrement (decrement destination destination by by one) one) MUL, MUL, IMUL IMUL (integer (integer mult.) mult.) DIV DIV (divide, (divide, unsigned), unsigned), IDIB IDIB (integer (integer divide divide signed) signed)
Bahasa Rakitan
ABM 27