Anda di halaman 1dari 6

Instruksi Mesin P 8088

Instruksi mesin (machine instruction) adalah instruksi-instruksi yg dapat dikerjakan oleh


suatu mikroprosesor.
Suatu program bahasa Pascal tidak akan dapat dieksekusi secara langsung oleh
mikroprosesor, sehingga agar mikroprosesor dapat mengerti isi program tersebut, terlebih
dahulu kita harus meng-compile program tersebut agar menjadi instruksi mesin.
Bahasa PASCAL
Begin

inline($90/
$90/
$90);
exit;
inline($90/
$90/
$90);
end.

Hasil Compile
0F9C:0000
0F9C:0005
0F9C:0006
0F9C:0008
0F9C:000A
0F9C:000F
0F9C:0010
0F9C:0011
0F9C:0012
0F9C:0014
0F9C:0015
0F9C:0016
0F9C:0017

9A00009E0F
55
89E5
31C0
9ACD029E0F
90
90
90
EB03
90
90
90
5D

CALL
PUSH
MOV
XOR
CALL
NOP
NOP
NOP
JMP
NOP
NOP
NOP
POP

0F9E:0000
BP
BP,SP
AX,AX
0F9E:02CD

0017

BP

Pada contoh diatas tampak bahwa hasil penterjemahan instruksi PASCAL exit
adalah instruksi mesin JMP.
Dilihat dari fungsi yg dilakukannya, instruksi mesin di P 8088 dapat dibedakan menjadi
3, yaitu :
Data transfer
digunakan untuk (1) memindahkan data dari suatu elemen memory ke elemen memory
lainnya atau (2) mengisi register data dengan suatu data. Contoh: MOV, PUSH, POP
Aritmetika dan Logika
digunakan untuk mengkalkulasi suatu perhitungan aritmetika (contoh: ADD, SUB, MUL,
DIV) dan logika (contoh: AND, OR, NOT, XOR, SHL, SHR)
Kontrol
digunakan untuk memindahkan kontrol instruksi ke suatu lokasi baru (tidak lagi secara
sekuensial). Contoh: JMP, JZ, JE

Instruksi MOV
1. Register ! Data (data yg akan ditulis ke register ditulis langsung di instruksi)
2. Register ! Register (data yg akan ditulis ke register berasal dari register lainnya)
3. Register ! Memory (data yg akan ditulis ke register berasal dari memory,
dan alamat dari data disimpan di register alamat)
4. Memory ! Register (data yg akan ditulis ke memory berasal dari register,
dan alamat memory yg akan ditulis disimpan di register alamat)
Contoh instruksi MOV untuk pengisian langsung (1) dan transfer antar register (2)
-a
0F6C:0100
0F6C:0103
0F6C:0105
0F6C:0107
0F6C:0109

mov
mov
mov
mov

bx,abcd
ah,56
bl,ah
ax,bx

"
"
"
"

mengisi reg.
mengisi reg.
mengcopy isi
mengcopy isi

AX dgn data ABCDH


AH dgn data 56H
reg. AH ke reg. BL
reg. BX ke reg. AX

-r
AX=0000 BX=0000
DS=0F6C ES=0F6C
0F6C:0100 BBCDAB

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0100
MOV
BX,ABCD

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
AX=0000 BX=ABCD
DS=0F6C ES=0F6C
0F6C:0103 B456

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0103
MOV
AH,56

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
AX=5600 BX=ABCD
DS=0F6C ES=0F6C
0F6C:0105 88E3

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0105
MOV
BL,AH

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
AX=5600 BX=AB56
DS=0F6C ES=0F6C
0F6C:0107 89D8

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0107
MOV
AX,BX

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
AX=AB56
DS=0F6C

CX=0000
SS=0F6C

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

BX=AB56
ES=0F6C

DX=0000
CS=0F6C

SP=FFEE
IP=0109

catatan:
Instruksi berikut akan menimbulkan Error :
mov ch,5678 :
tidak bisa karena CH = 1 byte dan datanya 2 byte
mov dl,ax
:
tidak bisa karena AX = 2 byte dan DL = 1 byte
mov dx,al
:
tidak bisa karena AL = 1 byte dan DX = 2 byte

Contoh instruksi MOV untuk transfer Register ! Memory (3) dan


transfer Memory ! Register (4)
-a
0F6C:0100
0F6C:0103
0F6C:0105
0F6C:0107
0F6C:010A
0F6C:010C
-d
0F6C:0000
0F6C:0010
0F6C:0020
0F6C:0030
0F6C:0040
0F6C:0050
0F6C:0060
0F6C:0070

mov
mov
mov
mov
mov

00
10
20
30
40
50
60
70

bx,0002
ah,[bx]
ax,[bx]
ax,[bx+1]
[bx],ax

01
11
21
31
41
51
61
71

02
12
22
32
42
52
62
72

03
13
23
33
43
53
63
73

"
"
"
"
"

04
14
24
34
44
54
64
74

mengisi
membaca
membaca
membaca
menulis

05
15
25
35
45
55
65
75

06
16
26
36
46
56
66
76

reg. BX dgn
memori pada
memori pada
memori pada
isi reg. AX

07-08
17-18
27-28
37-38
47-48
57-58
67-68
77-78

09
19
29
39
49
59
69
79

0A
1A
2A
3A
4A
5A
6A
7A

0B
1B
2B
3B
4B
5B
6B
7B

data 0002H
alamat BX sebanyak 1 byte (AH)
alamat BX sebanyak 2 byte (AX)
alamat BX+1 sbanyak 2 byte (AX)
ke memori pada alamat BX

0C
1C
2C
3C
4C
5C
6C
7C

0D
1D
2D
3D
4D
5D
6D
7D

0E
1E
2E
3E
4E
5E
6E
7E

0F
1F
2F
3F
4F
5F
6F
7F

................
................
!#$%&()*+,-./
0123456789:;#?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~.

-r
AX=0000 BX=0000
DS=0F6C ES=0F6C
0F6C:0100 BB0200

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0100
MOV
BX,0002

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
AX=0000 BX=0002
DS=0F6C ES=0F6C
0F6C:0103 8A27

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0103
MOV
AH,[BX]

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC
DS:0002=02

-t
AX=0200 BX=0002
DS=0F6C ES=0F6C
0F6C:0105 8B07

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0105
MOV
AX,[BX]

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC
DS:0002=0302

-t
AX=0302 BX=0002
DS=0F6C ES=0F6C
0F6C:0107 8B4701

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=0107
MOV
AX,[BX+01]

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC
DS:0003=0403

-t
AX=0403 BX=0002
DS=0F6C ES=0F6C
0F6C:010A 8907

CX=0000 DX=0000 SP=FFEE


SS=0F6C CS=0F6C IP=010A
MOV
[BX],AX

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC
DS:0002=0302

-t
AX=00A0 BX=0002
DS=0F6C ES=0F6C
0F6C:010C 90

CX=0000 DX=0000
SS=0F6C CS=0F6C
NOP

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-d
0F6C:0000
0F6C:0010
0F6C:0020
0F6C:0030

00
10
20
30

01
11
21
31

03
12
22
32

04
13
23
33

04
14
24
34

05
15
25
35

06
16
26
36

SP=FFEE
IP=010C

07-08
17-18
27-28
37-38

09
19
29
39

0A
1A
2A
3A

0B
1B
2B
3B

0C
1C
2C
3C

0D
1D
2D
3D

0E
1E
2E
3E

0F
1F
2F
3F

................
................
!#$%&()*+,-./
0123456789:;#?

0F6C:0040
0F6C:0050
0F6C:0060
0F6C:0070

40
50
60
70

41
51
61
71

42
52
62
72

43
53
63
73

44
54
64
74

45
55
65
75

46
56
66
76

47-48
57-58
67-68
77-78

49
59
69
79

4A
5A
6A
7A

4B
5B
6B
7B

4C
5C
6C
7C

4D
5D
6D
7D

4E
5E
6E
7E

4F
5F
6F
7F

@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~.

Catatan:
Instruksi berikut akan menimbulkan Error :
mov [bx],[bx+1]
:
transfer data dari memori ke memori secara langsung
mov [bx],12
:
transfer data langsung ke memori
kesimpulan : semua transfer yg melibatkan memori harus via register
mov ah,[bl]
mov [ax],bx
mov [cx],bx
mov [dx],bx

:
:
:
:

register alamat harus digunakan dalam format 2 byte


reg. AX bukan register alamat
reg. CX bukan register alamat
reg. DX bukan register alamat

Instruksi PUSH & POP


Instruksi PUSH dan POP akan dipelajari lebih lanjut di bagian mengenai STACK
(halaman berikutnya).
Instruksi ADD dan SUB
Contoh Penggunaan Instruksi Aritmatika (ADD dan SUB)
-a
0DA0:0100
0DA0:0103
0DA0:0106
0DA0:0108
0DA0:010A

mov
mov
add
sub

ax,1234
bx,5678
ax,bx
ax,bx

-t
" trace MOV AX,1234
AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE
DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0103
0DA0:0103 BB7856
MOV
BX,5678

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
" trace MOV BX,5678
AX=1234 BX=5678 CX=0000 DX=0000 SP=FFEE
DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0106
0DA0:0106 01D8
ADD
AX,BX

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
" trace ADD AX,BX
AX=68AC BX=5678 CX=0000 DX=0000 SP=FFEE
DS=0DA0 ES=0DA0 SS=0DA0 CS=0DA0 IP=0108
0DA0:0108 29D8
SUB
AX,BX

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PE NC

-t
" trace SUB AX,BX
AX=1234 BX=5678 CX=0000
DS=0DA0 ES=0DA0 SS=0DA0

DX=0000
CS=0DA0

SP=FFEE
IP=010A

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

Instruksi JMP dan JZ


Contoh Penggunaan Instruksi Control (JMP dan JZ)
-a
0F6C:0100
0F6C:0103
0F6C:0106
0F6C:0108
0F6C:010A
0F6C:010C
0F6C:010E

MOV
MOV
XOR
JMP
MOV
JZ

AX,ABCD
BX,DCBA
AL,AL
010C
AL,BH
010E

-t
" trace MOV AX,ABCD
AX=ABCD BX=0000 CX=0000 DX=0000
DS=0F6C ES=0F6C SS=0F6C CS=0F6C

SP=FFEE
IP=0103

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
" trace MOV BX,DCBA
AX=ABCD BX=DCBA CX=0000 DX=0000
DS=0F6C ES=0F6C SS=0F6C CS=0F6C

SP=FFEE
IP=0106

BP=0000 SI=0000 DI=0000


NV UP EI PL NZ NA PO NC

-t
" trace XOR AL,AL
AX=AB00 BX=DCBA CX=0000
DS=0F6C ES=0F6C SS=0F6C

DX=0000
CS=0F6C

SP=FFEE
IP=0108

BP=0000 SI=0000 DI=0000


NV UP EI PL ZR NA PE NC

-t
" trace JMP 010C
AX=AB00 BX=DCBA CX=0000
DS=0F6C ES=0F6C SS=0F6C

DX=0000
CS=0F6C

SP=FFEE
IP=010C

BP=0000 SI=0000 DI=0000


NV UP EI PL ZR NA PE NC

-t
" trace JZ 010E
AX=AB00 BX=DCBA CX=0000
DS=0F6C ES=0F6C SS=0F6C

DX=0000
CS=0F6C

SP=FFEE
IP=010E

BP=0000 SI=0000 DI=0000


NV UP EI PL ZR NA PE NC

Anda mungkin juga menyukai