P. 1
Bab5-Instruksi Kontrol Program

Bab5-Instruksi Kontrol Program

|Views: 250|Likes:
Published by docthiiana

More info:

Published by: docthiiana on Sep 17, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/01/2013

pdf

text

original

Sections

Bagian ini menyajikan beberapa program sampel yang menggambarkan bagai-
mana menata sebuah program untuk digunakan dengan makroperakit (MASM)
atau perakit (ASM). Bagian ini juga menjelaskan beberapa teknik programing
yang umum yang berguna dalam berbagai aplikasi.

Membuat Program untuk EXE File

File execute (EXE) sebenarnya sebuah perintah DOS (sistem operasi disk) yang
baru. Misalnya, jika anda menciptakan sebuah file EXE bernama DOG.EXE,
maka yang anda perlu ketikan untuk melaksanakan program ini adalah DOG.
Bagaimanapunjuga, tidak mudah untuk membuat program untuk perakit IBM-PC
sebagai file execute, karena ini untuk mesin yang lain. Setiap segmen hams dije-
laskan dan banyak rincian lainnya yang kecil yang harus diatasi atau perakit tidak
akan menerima program itu. Contoh 5-11 menunjukkan sebuah template yang
digunakan untuk sebagian besar program bahasa rakitan bila program itu dan
semua subrutin muncul bersamaan.

·

.

" " " " " " " ," " ,," " " " " ,," " " ,,

·

.

,

,

;Example program that will display a few;
;messages in the video screen.

·

.

" " " " " " ,," " " " " ," " " " " " " "

CONTOH 5-11

Instruksi Kontrol Program 167

= 0024
= 0000
OOOA
0009

·,

M!S_END
CR
LF
NINE

EQU
EQU
EQU
EQU

,$'

13
10

9

·

.

" " " " " " " " " " " " " " " ,,1 " " " "

Stack segment

·

.

" " " " " " " " " ,,1 1 1 '," " " " " " " "

0000

0000 0100[

????

i

STAC~_SEG

SEGMENT STACK

ow

256 DUP (?)

= 0200

0200

STACK_TOP

STACK_SEG

EQU

THISWORO

ENDS

·

.

" " " " " " " " " " " " " " " " " " " " ,

Data segment

·

.

"""""""""""""""""""",

i

0000

OATA_SEG

SEGMENT

0000 00

MESSAGE_l

08

CR

0001 0005[

08

5 OUP (OAH)

OA

]

0006 42 41 52 52 59 20

08

'BARRY B. BREY'

42 2E 20 42 52 45
59
0013 00

08

CR

0014 OA

08

LF

0015 24

08

MES END

0016 77 61 73 20 68 65 MESSAGE_2

D8

'was here! !'

72 65 21 21

0020 24

08

MES end

0021

OATA_SEG

ENDS

;;i ; ; ; ; ; ; ; i ; ; ;; ;;; ; ;-j ; i ;;;;i ; ; ; ; ; ; ; ;

Code segment

·

.

""""""""""""""""""

0000

i

COOE_SEG

SEGMENT

ASSUME
ASSUME

CS:SEG,SS:STACK_SEG
DS:DATA_SEG

0000

MAIN

PRQC FAR

168 Pengantar Mikroprosesor

0000 BC 0200 R

MAIN

MOV

SP,OFFSET STACK_TOP

0003 B8 ---T

MOV

AX,DATA_SEG

0006 8E 08

MOV

DS,AX

0008 BA 0000 R

MOV

DX,OFFSET MESSAGE_l

0006 8E 0018 R

MOV

AX,DATA_SEG

OOOE BA 0016 R

MOV

DX,OFFSET MESSAGE_2

0011 E8 0018 R

CALL DISPLAY

0014 B4 4C

MOV

AH,4CH

0016 CD 21

INT

2lH

0018

MAIN

ENDP

0018

DISPLAY

PROC NEAR

0018 B4 09

MOV

AH,NINE

OOIA CD 21

INT

21H

OOIC C3

RET

0010

DISPLAY

ENDP

0010

CODE_SEG ENDS

END MAIN

Setelah program, yang disebut name (NAME,ASM) di dalam contoh ini,
dimasukkan ke dalam file disket dengan editor, dia kemudian akan dirakit dengan
langkah berikut ini:

1. Ketikan MASM NAME; atau ASM NAME; (bergantung pada yang mana
yang anda miliki) untuk merakit program itu. Ini menciptakan file barn
bemama NAME.OBJ, yang tidak bisa dilakukan.
2. Ketikan LINK NAME; untuk menghubungkan program ini dengan modul
lainnyajika ada dan mengubahnya ke dalam file execute, NAME. EXE.
3. Ketikan NAME untuk melaksanakan program ini. Apa yang akan anda lihat
di layar setelah 5 line feeds adalah LIST DATA

BARRY B. BREY
was here!!

Prosedur yang sarna akan merakit, menghubungkan dan melaksanakan setiap
XXXXXXXX yang diedit. File program ASM yang anda buat dengan editor apapun

Instrukst Kontrol Program 169

akan anda miliki pada disposal anda. Editor berkisar dari sistem yang sederhana, seperti
EDLIN, hingga prosesor kata yang rumit, seperti WORDSTAR uang digunakan di
dalam mode operasi nondokumen. Setelah anda menggunakan prosesor kata untuk
membuat dan mengedit program, anda tidak akan pemah lagi menggunakan sebuah
editor seperti EDLIN. Prosesor kata jauh lebih mudah digunakan dan mereka me-
mungkinkan informasi di dalam sebuah program dipindahkan dengan mudah.

Program Equates. Bagian pertama dari program listing adalah yang disebut pro-
gram equates.
Bagian ini digunakan untuk menyamakan (equate) (EQU) label
dengan berbagai nilai yang digunakan di dalam seluruh program. EQU ini menje-
laskan instruksi yang digunakan di dalam program utama dan juga di dalam
prosedur dan bagian definisi data dari program listing. Program equates bersifat
opsional, namun mereka membuat program ini lebih bisa terbaca dan sebab itu
lebih bisa terdokumentasi sendiri. Perhatikan betapa lebih bisa terbacanya MES-
SAGE_END daripada hanya '$' MESSAGE_END yang berarti sesuatu bagi para
pembaca awam; '$' lebih berarti hanya bagi para pembaca yang telah akrab
dengan komouter dan sistem operasi. Coba anda lihat pada Apendiks A, yang
membahas mengenai DOS dengan lebih rinci.

Stack Segmen. Bagian berikutnya dari program listing adalah stack segmen. Di
sini stack area dibentuk untuk memungkinkan program menggunakan instruksi
CALL dan return (RET) dan operasi stack lainnya (PUSH dan POP) yang mung-
kin perlu untuk operasi.
Pernyataan pertama di dalam stack segmen adalah SEGMENT pseudo-operasi
(pernyataan yang tidak menghasilkan kode mesin, namun menginstruksikan pera-
kit atau penghubung/linker). SEGMENT pseudo-operasi mengidentifikasi dimu-
lainya segmen untuk perakit dan menunjukkan bahwa sudah saatnya dimulai pada
paragraph boundary (PARA), yang muncul pada setiap 16 bytes di seluruh memori

8086/8088.

Pernyataan SEGMENT juga menunjukkan kepada linker bahwa segmen yang
disebut STACK_SEG adalah PUBLIC- yaitu, dia bisa dikombinasikan dengan
segmen lainnya dari nama yang sarna. Meskipun ini bukanlah ciri dari program
ini, segmen memungkinkan program ini oleh masyarakat ditambahkan atau dihu-
bungkan dengan segmen lainnya dengan nama yang sarna jika mereka digabung-
kan dengan program ini dengan program linker.
Pernyataan berikutnya adalah DB 256 DUP (?), yang menentukan byte me-
mori. Dalam contoh ini, 256 bytes memori telah disiapkan untuk stack segmen

170 Pengantar Mikroprosesor

dan stack dari semua nilai untuk pernyataan ini.? yang digunakan untuk pernya-
taan duplikat (DUP) menunjukkan bahwa perakit tidak boleh mengisi byte ini
dengan data apapun; melainkan mereka tetap tidak berubah.
Bila linker mengubah file ke EXE, dia secara otomatis membentuk stack seg-
men register (SS) untuk menunjuk pada segmen ini dan program ini menginisiali-
sasi stack pointer (SP), yang selalu diinisialisasi pada lokasi area yang disiapkan
untuk stack di dalam stack segmen. Nama STACK _SEG sering digunakan untuk
menjelaskan stack segmen seperti yang digambarkan.
Pernyataan terakhir di dalam stack segmen, end segmen (ENDS), mengidenti-
fikasi akhir segmen. Ini hams digunakan untuk mengakhiri setiap segmen yang
diidentifikasi di dalam sebuah program, dan dia hams memiliki label yang sarna
seperti pernyataan SEGMENT selanjutnya yang digunakan untuk membuka seg-
men.

Segmen Data. Segmen data di dalam contoh ini disebut DATA_SEG, namun dia
bisa disebut apa saja sesuka si programer. Seperti di dalam stack segmen, pernya-
taan pertama haruslah SEGMENT, dan pernyataan terakhir haruslah ENDS.
Segmen data membentuk semua variabel segmen data yang digunakan dengan
program. Dalam contoh ini, segmen data mengandung sejumlah pernyataan DB
yang menyimpan string atau data ASCII di dalam segmen data.
Program sampel ini tidak mengandung segmen tambahan. Jika dia mengan-
dung se~men tambahan, dia juga akan dimulai dengan pernyataan SEGMENT
dan berakhir dengan ENDS. Programer juga bebas untuk memilih nama segmen
tambahan.

Segmen Kode. Segmen kode mengandung program tersebut. Pemilihan nama-
nya bersifat opsional. Perhatikan bahwa segmen kode juga dimulai dengan per-
nyataan SEGMENT dan berakhir dengan pernyataan ENDS.
Pernyataan kedua di dalam segmen kode ASSUME, memberitahu perakit
bahwa nama yang telah anda pilih untuk segmen kode (CS) adalah CODE_SEG
dan nama untuk segmen data (DS) adalah DATA_SEG. Diajuga memberitahu
perakit (SS) adalah STACK_SEG. Jika program ini telah mencakup segmen
. tambahan (ES), dia juga akan dinyatakan kepada perakit pada bagian ini dengan
pernyataan ASSUME .
., Software riil yang pertama di dalam segmen kode adalah program utama pro-
sedur, yang diidentifikasi sebagai prosedur jauh yang disebut MAIN. (Prosedur
utama biasanya diidentifikasi sebagai prosedur jauh).

Instruksi Kontrol Program 171

Pernyataan pertama menginisialisasi pointer stack. Dua pern'yataan berikutnya
membentuk register DS. (Register segmen yang hanya secara otomatis dimasuk-
kan oleh DOS adalah CS dan SS). Di dalam contoh ini, register DS dimasukkan
dengan DATA_SEG, awal dari segmen data. Jika segmen tambahan di dalam se-
buah program, dia harus dimasukkan dengan cara yang sarna.
Akhirnya, program riil muncul. Dua pesan disajikan oleh program ini: MES-
SAGE ONE dan MESSAGE TWO.
Prosedur selanjutnya disebut DISPLAY _MESSAGE. Dia dibentuk sebagai
prosedur dekat, dan di dalam contoh ini dia sangat pendek.
Di sini PC-DOS fungsi 9 digunakan untuk menyajikan string karakter pada
layar CRT. Fungsi yang terpadu disebut dengan instruksi INT 21H, dengan
bilangan fungsi ditempatkan pada AH sebelum call. Dalam hal ini, fungsi terpadu
9 menyajikan string karakter yang ditangani oleh register DX. Jika anda kembali
ke MAIN, anda akan tahu bahwa address pesan dimasukkan ke dalam DX
sebelum panggilan ke prosedur ini terjadi.
Pernyataan terakhir dari file ini adalah pernyataan END. Dia memberitahu
perakit bahwa akhir dari file ini telah tiba, dan dia juga memberitahu linker di
mana pernyataan pertama dari program ini berada.

Program Sampel Input/Output

Program sampel pertama ini (lihat Contoh 5-12) membuat IBM-PC tampak
seperti mesin ketik. Ini adalah program yang sangat seder hana, namun dia meng-
gambarkan bagaimana template pertama kali disajikan di dalam Contoh 5-11
digunakan, dengan sedikit modifikasi.
Di sini bagian equate hanya mengandung tiga pernyataan. Dalam p~ogram
yang sangat besar, dia mungkin mengandung ratusan equates.
Menarik sekalijika kita memperhatikan bahwa program ini tidak mengandung
segmen data. Dalam hal ini, ini tidak diperlukan karena program tidak menyim-
pan data di dalam memori, atau juga dia tidak membaca data dari memori. Dia
hanya melanjutkan membaca key dari keyboard hingga tanda dolar diketik, me-
ngembalikan komputer ke DOS sehingga program lainnya bisa dilaksanakan.
Program bahasa rakitan dasar yang digambarkan di sini memanggil subrutin
key baca yang menggunakan salah satu fungsi PC-DOS terpadu-nomor 6, fungsi
input keyboard, dan kembali dengan karakter yang diketik di dalam register AL.
Diajuga menyajikan karakter apapun yang telah diketik.

172 Pengantar Mikroprosesor

·

.

" " " " " " " " " " " " " " " " ," " ,"

;

iExample program that will accept data
;from the keyboard and display them on
;the monitor until a $ is typed.

·..'

.

r r r r r r r """"

'" '" r r r r r r r r r I'" I" ,,,

0006
0024

SIX
DOLLAR

EQU
EQU

6

,$'

Stack segment

·

.

" " " " " " " " ,',1 1 ," " " " " ,,,," '"

·

.

,," " " " " " " " " " ," " " " " " " " ,,

0000
0000 0100(

????

STACK_SEG

SEGMENT STACK

0200

STACK_TOP

STACK_SEG

EQU

ENDS

THIS WORD

iiiiiijiiiiiijjiiijiiiiijiiiijiiiijiijiii

Code segment

• •••••••••••••

G ••••••••••••••••••••••••••

" " " " " '/" " '1 " " " " " " " " " " '"

;

CODE SEG

SEGMENT
ASsuME CS:CODE_SEG,SS:STACK_SEG

0000

0000

0000 BC 0200 R

0003

0003 E8 OOOE R
0006 3C 24
0008 75 F9

OOOA 84 4C
OOOC CD 21

DaDE

DaDE

CONTOHS-12

MAIN

PROC

MOV

SP,OFFSET STACK_TOP

FAR

AGAIN:

CALL
CMP
JNE

MOV
INT

MAIN

ENDP

READ KEY

PROC

READ_KEY
AL,DOLLAR SIGN
AGAIN _

AH,4CH
21H

NEAR

Instruksi Kontrol Program 173

OOOE B4 06

MOV

AH,SIX

0010 B2 FF

MOV

DI,OFFH

0012 CD 21

INT

21H

0014 74 F8

JZ

READ_KEY

0016 8A DO

MOV

DL,AL

0018 CD 21

RET

001B

READ_KEY

ENDP

OOlB

CODE_SEG

ENDS

END

MAIN

Bila key telah diketik, program MAIN memanggil prosedur key read dab
mengecek untuk melihat apakah ini adalah lambang dolar. Jika lambang dolar
telah diketik, dia akan kembali ke DOS: jika tidak, dia akan membaca key lain
dari keyboard.

Program Penambahan Dua Bilangan Sampel

Program sampel ini (lihat Contoh 5-13) menerima dua bilangan dari keyboard,
menambahkannya, dan menyajikan hasilnya pada layar CRT. Ini program yang
lebih kompleks daripada yang sebelumnya.
Di dalam contoh ini, perhatikan bahwa baik ES maupun DS dianggap sebagai
DATA_SEG dan keduanya juga dimasukkan dengan lokasi DATA_SEG. Ini
dilakukan karen a operasi string digunakan di dalam program ini, dan kurang
cocokjika kita menciptakan segmen terpisah untuk DS dan ES.
Program itu sendiri menerima dia bilangan, hingga panjangnya 40 digit, dari
keyboard. Bilangan pertama diterima hingga tanda plus (+) diketik: bilangan
kedua diterima hingga tanda sarna dengan (=) diketik. Setelah tanda sarna dengan
diketik, program menambahkan kedua bilangan itu dengan penambahan ASCII.
Hasilnya ditempatkan dio buffer yang disebut ANSWER dan disajikan di moni-
tor. Bentuk data yang dimasukkan ke dalam program itu adalah

23 + 33 =56

Menciptakaan Modul Kepustakaan

Satu keuntungan utama dari komputer dengan disk drive, perakit dan linker
adalah modul kepustakaan bisa di bentuk dan secara permanen disimpan di dalam

174 Pengantar Mikroprosesor

disket. Nantinya pada satu waktu, modul ini bisa digunakan untuk membentuk
banyak bagian dalam sebuah program. Modul kepustakaan adalah cara yang
paling tepat untuk menyimpan semua prosedur yang biasa dipakai.
Contoh 5-14 menggambarkan modul kepustakaan dari sebuah prosedur yang
menyajikan sebuah pesan di layar CRT. Prosedur ini menggunakan fungsi PC-
DOS nomor 9, yang menyajikan pesan yang ditangani oleh register DX.
Pernyataan pertama, PUBLIC menunjukkan kepada linker bahwa modul ini
bisa digunakan oleh modul yang lain sewaktu mereka dihubungkan. Sebab itu,
prosedur ini bisa digunakan di masa mendatang oleh program lainnya setelah dia
mengalami debugged dan disimpan di dalam disket. Juga perhatikan bahwa
pernyataan LIB_SEG adalah PUBLIC dan juga disebut CODE. Bila prosedur ini

;; ;;;;;; i; i;;; iii i;;;;;;;;;;;;

iii i;;;;;;;;;;;

;

;Example program that will add two numbe~s
ithat are entered through the keyboard and
ithen display the result on the CRT screen ;
iThe maximum size of the number is 2 digits.;

; ; ; ; ; ; ; ; ; i ; ; ; i ; i ; i ; ; i ; ; ; ;,; i ; ; ; ; ; ; ; i ; i ; ; ; ; ; ; i ;

0006
0009
0002
0000
OOOA
0024
0021
004E
0059
002B
0030
0030
0039

;

SIX

EQU

6

NINE

EQU

9

TWO

EQU

2

CR

EQU

13

LF

EQU

10

EOM

EQU

'$,

OOS_FUNC

EQU

21H

NO

EQU

'N'

YES

EQU

'Y'

PLUS

EQU

'+'

EQUAL

EQU

'='

ZERO ASCII

EQU

'0'

NINE=ASCII

EQU

'9'

..........................................

I , , , I , I I , , I I I , , , , , , , , , , I , , , , I , , , , , I I , , , , , I

Stack segment

..........................................

" " " " " " " " " " " " " " " 1 1 " " " " '/

0000

0000 0100[

;

STACK_SEG

SEGMENT STACK

ow

256 OUP (?)

CONTOH5-13

Instruksi Kontrol Program 175

= 0200

0200

0000

0000 00 OA OA
0003 41 64 64
6F 20 6E
65 72 73
2F 4E 29

OOlB 24
OOlC 00 OA OA
0020 0002[

??

0022 0002[

??

0024

0000

0000
0000 BC 0200 R
0003 B8

0006 8E 08
0008 8E CO

OOOA

OOOA BA 0000 R
0000 E8 00A4 R

0010

0010 E8 OOBO R
00A9 8A DO
OOAB B4 06
OOAD CO 21
OOAF C3

OOBO

OOBO

1???

STACK_TOP

STACK_SEG

THISWORO

EQU

ENDS

i;;;i;i;ii;;;;;;;;;;;;;;;;;;;;;;ii;;;;;;;

Data segment

;;;;;;;;;;;;;;;;;;;;

i i;;; i;;;;;; i;;; il;;;

;

OATA_SEG SEGMENT

SIGN ON DB CR,LF,LF
20 74 i7 DB 'Add two numbers(Y/N)?' ,a
75 60 62
20 28 59
3F 20 00

DB EOM
24 NEXT MES DB CR,LF,LF,EOM
NUMBI DB 2 DUP (?)

NUMB2 DB 2 DUP (? )

OATA_SEG ENDS

.........................................

"",

"""'"

""

r r r r r r r I " "

" "

" "

'"

Code segment

.........................................

" " " " " " " " " " " " " " " 1 " " " " "

CODE_SEG SEGMENT

ASSUME CS:CODE SEG,SS:STACK SEG
ASSUME OS:DATA:SEG

_

MAIN

PROC

FAR

MOV

SP,OFFSET STACK TOP

MOV

AX,DATA_SEG

MOV

DS,AX

MOV

ES,AX

TOP:

MOV

DX,OFFSET SIGN_ON

CALL

DISP_MES

AGAIN:

CALL READ_KEY
MOV

DL,AL

MOV

AH,SIX

INT

DOS_FUNC

RET

OUT_CHAR ENDP

READ_KEY PROC NEAR

176 Pengantar Mikroprosesor

OOBO B4 06

MOV

AH,SIX

00B2 B2 FF

MOV

DL,OFFH

00B4 CD 21

INT

DOS FUNC

00B6 74 F8

JZ

READ_KEY

00B8 C3

RET

00B9

READ_KEY

ENDP

00B9

CODE_SEG

ENDS

END

MAIN

NEXT1 :

0077

0077 58

POP

AX

0078 E8 00A9 R

CALL

OUT_CHAR

007B FE C9

DEC

CL

0070 75 F8

JNE

NEXT1

007F EB 89

JMP

TOP

0081

l-f.AIN_END:

0081 B4 4C

MOV

AH,4CH

0083 CD 21

INT

DOS_FUNC

0085

MAIN

ENDP

0085

READ_Nm.fB

PROC

NEAR

0085 B5 02

MOV

CH,TWO

0087

READ_NUMB1 :

0087 E8 OOBO R

CALL

READ KEY

008A 2C 30

SUB

AL, ZERO_ASC I!

008C 8C 8C 72 F9

JB

READ NUMB1

008E 3C 39

CMP

AL ,NINE ASC I!

0090 7-7 F5

JA

READ NUMB1

0092 88 05

MOV

[DIj-;AL

0094 04 30

ADD

AL, ZERO_ASCI!

009A FE CD

DEC

CH

09C 75 E9

JNE

READ_NUMB 1

009E 8A C3

MOV

AL,BL

OOAO E8 00A9 R

CALL

OUT_CHAR

00A3 C3

RET

00A4

READ_NUMB

ENDP

00A4

DISP_MES PROC NEAR

00A4 B4 09

MOV

AH,NINE

00A6 CD 21

INT

DOS_FUNC

00A8 C3

RET

00A9

DISP MES ENDP

00A9

OUT_CHAR PROC NEAR

0013 24 OF

AND

AL,ODFH

0015 3C 4E

CMF

AL,NO

0017 74 68

JE

MAIN_END

Instruksi Kontrol Program 177

0019 3C 59

CMP

AL,YES

001B 75 F3

JNE

AGAIN

0010 E8 00A9 R

CALL

OUT_CHAR

0020 BA 001C R

MOV

OX,OFFSET NEXT_MES

0023 E8 OOM R

CALL

OISP_MES

0026 32 CO

XOR

AL,AL

028 A2 0020 R

MOV

NUMB1,AL

002B A2 0021 R

MOV

NUMB1+1,AL

002E A2 0022 R

MOV

NUMB2,AL

0031 A2 0023 R

MOV

NUMB 2+1"AL

0034 B3 2B

MOV

BI,PLUS

0036 BF 0200 R

MOV

OI,OFFSET N1Jlof..B1

0039 E8 0085 R

CALL

READ_NUMB

.

003C B3 30

MOV

CL,2

003E BF 0022 R

MOV

BL,O

0041 E8 0085 R

CALL

READ NUMB

0044 B1 02

MOV

CL,2

0046 B3 00

MOV

BL,O

0048 AO ·0021 R

MOV

AL,NUMB1+1

004B 02 06 0023 R

ADD

AL,NUMB2+1

004F 27

OAA

0050 8A F8

MOV

BH,AL

0052 OC 30

OR

AL,ZERO_ASCII

0054 50

PUSH AX

0055 8A C7

MOV

AL,BH

0059 3C OA

CMP

AL,10

005B B3 01

MOV

BL,l

0050

NEXT:

0050 AO 0020 R

MOV

AL,NUMB1

0060 02 06 0022 R

ADD

AL,NUMB2

0064 02 C3

ADO

AL,BL

0066 27

OAA

0067 8A 08

MOV

BL,AL

0069 OC 30

OR

AL, ZERO_ASCII

006B 50

PUSH

AX

006C 8A C3

MOV

AL,BL

006E 3C OA

CMP

AL,10

0070 72 05

JB

NEXT1

0072 BO 31

MOV AL,' l'

0074 50

PUSH AX

0075 FE C1

INC

CL

178 Pengantar Mikroprosesor

dihubungkan, dia hanya akan memasukkan segmen PUBLIC yang disebut CODE.
Juga perhatian bahwa pern~ataan END tidak memiliki label awal seperti yang
dimiliki program.

= 0009

0000

0000

0000 53
0001 51
0002 52
0003 55
0004 56
0005 57
0006 B4 09
0008 CD 21
OOOA SF
OOOB 5E
OOOC 5D
OOOD SA
OOOE 59
OOOF 5B
0010 CB

0011

0011

CONTOH 5-14

.

.

" " " " " " " " " " " " " " " " " " " ,

;

;Library Module
;DISPLAY message addressed by DX

.......................................

" " " " " " " " " ,," " " ,,," " " " "

NINE

PUBLIC
EQU

DISPLAY

9

• LIB_SEG

SEGMENT

ASSUME CS:LIB_SEG

DISPLAY

PROC

FAR

PUSH

BX

PUSH

CX

PUSH

DX

PUSH

BP

PUSH

SI

PUSH

DI

MOV

AH,NINE

INT

21H

POP

DI

POP

SI

POP

BP

POP

DX

POP

CX

POP

BX

RET

DISPLAY ENDP

LIB_SEG ENDS

END

Instruksi Kontrol Program 179

Program Modul Kepustakaan SampeL Modul kepustakaan (prosedur DIS-
PLAY~MESSAGE) yang diciptakan dan disimpan di dalam disket di dalam Con-
toh 5-14 digunakan oleh program pendek dalam Contoh 5-15. Contoh ini mem-
perkenalkan sebuah pernyataan baru, EXTRN, atau eksternal.

..............................................

" " " " " " " " " " " " ,,," " " " ," " " " ,,

i

iPROGRAM to display HELLO on the CRT
iuses DISPLAY

..............................................

,,," " " " " " " " " " " " " " " " ,,,," " " ,

= 0024

EOM

EQU

' $'

= 0000

ZERO

EQU

0

0000

DATA_SEG SEGMENT

0000 48 45 4C 4C 4F

MESSAGE

DB

DB 'HELLO'

0005 24

DB

EOM

0006

DATA_SEG ENDS

0000

CODE_SEG SEGMENT

ASSUME

CS:CODE_SEG,DS:DATA_SEG

EXTRNDISPLAY:FAR

0000

PROGRAM PROC FAR

0000 B8 --- R

MOV AX,OATA_SEG

0003 8E 08

MOV DS,AX

0005 BA 0000 R

MOV OX,OFFSET MESSAGE

0008 9A 0000

E

CALL

DISPLAY

0000 B4 4C

INT 21H

0011

PROGRAM ENDP

0011

CODE_SEG ENDS

END PROGRAM

CONTOH5-15

180 Pengantar Mikroprosesor

Pernyataan EXTRN menyatakan prosedur eksternal - prosedur yang ditemu-
kan di dalam file kepustakaan. Dia muncul di dalam segmen yang disebut
LIB_SEG, yang memiliki nama yang sarna seperti yang ada di dalam segmen
kepustakaan. Bila linker menggabungkan modul, kode dari modul kepustakaan
dengan DISPLAY_MESSAGE akan dimasukkan, Dia kemudian akan dipindah-
kan ke dalam segmen yang disebut CODE-SEG karena keduanya adalah PUBLIC
dan keduanya diberi tanda 'CODE.'

Linkage. Bagi modul kepustakaan untuk dihubungkan dengan modul program,
keduanya harus menerima nama-nama dari editor. Misalkan anda telah mencipta-
kan modul kepustakaan itu yang mengandung DISPLA Y_MESSAGE dan mena-
makannya LIBRARY.ASM. Dia dirakit dengan MASM LIBRARY: untuk
mengubahnya menjadi sebuah file obyek bernama LIBRARY.OBJ. Selanjutnya,
program ini disimpan di dalam disket dengan editor dan disebut PROGRAM.
ASM. Setelah MASM PROGRAM: diketik, file program diubah menjadi sebuah
file obyek, PROGRAM.OBJ.
Baris berikut ini akan menghubungkan file obyek ini menjadi satu file utama:

LINK PROGRAM + $LIBRARY;

Kalimat ini menghasilkan sebuah file execute yang disebut PROGRAM.EXE.
Untuk menjalankannya, ketiklah PROGRAM dan kata hello akan muncul pada
display. Anda bisa menghubungkan sebanyak mungkin file kepustakaan sesuka
anda pada file program.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->