Belajar Bahasa Rakitan

Kategori: Resume Tugas
Diposting oleh merzcharmy pada Rabu, 14 April 2010
[1822 Dibaca] [4 Komentar]Post to TwitterPost to Facebook

 1. KONVERSI BILANGAN


1.1       Konversi bilangan Biner ke Desimal

 Untuk bilangan bulat, setiap bilangan dikalikan dengan faktor 2

Contoh:

(N)10     = (111001)2

            = (1 x 25 + 1 x 24 + 1x 23 + 0 x 22 + 0 x 21 + 1 x 20)

            = (32 + 16 + 8 + 0 + 0 + 1)

(N)10 = (57)10

 

 Untuk bilangan pecahan, caranya sama hanya nilai setiap bit biner dikalikan dengan faktor setengah bilangan biner

Contoh:

(N)10     = (0,11001)2

            = (1 x 2-1 + 1 x 2-2 + 0x 2-3 + 0 x 2-4 + 1x 2-5)

            = (0,5+0,25+0+0+0,03125)

(N)10 = (0,78125)10

 

1.2.      Konversi bilangan Desimal ke Biner

Untuk bilangan bulat, bilangan tersebut dibagi 2, sisanya menyatakan bit biner. Sisa pertama adalah Least Significant bit (LSB)

Contoh:

(N)2     = (167)10                      = (10100111)2

            167 : 2 = 83 sisa 1                   LSB

            83   : 2 = 41 sisa 1

            41  :  2 = 20 sisa 1

            20  :  2 = 10 sisa 0

            10  :  2 = 5   sisa 0

            2   :  2 =  1   sisa 0

            1   :  2 =  0   sisa 0                   MSB

 

Untuk bilangan pecahan, bilangan tersebut dikali 2, kemudian hasilnya diperoleh dengan membaca kolom pindahan (carry) dari atas ke bawah

Contoh:

(N)2     = (0,57)10                     = (0,10010001)2  + e

0,57 x 2=  1,14     pindahan      1         2-1       MSB

0,14 x 2=  0,28     pindahan      0         2-2

0,28 x 2=  0,56     pindahan      0         2-3

0,56 x 2=  1,12     pindahan      1         2-4

0,12 x 2=  0,24     pindahan      0         2-5

0,24 x 2=  0,48     pindahan      0         2-6

0,48 x 2=  0,96     pindahan      0         2-7

0,96 x 2=  1,92     pindahan      1         2-8       LSB

 

1.3       Konversi bilangan Biner ke Oktal

Cara konversinya: atur bit-bit integer bilangan biner menjadi kelompok-kelompok dimana setiap kelompok terdiri dari tiga bit. Dimulai dari bit integer paling kanan dan untuk bit pecahan sama dikelompokkan tetapi dimulai dari bit paling kiri.

Contoh :

Nyatakan bil.biner (11100011,1011)2 jadi oktal

Biner               : 011  100  011,  101 100

Oktal               :   3       4      3,     5      4        

Jadi                  : (11100011,1011)2 = (343,54)8

 

1.4.      Konversi bilangan Biner ke Heksadesimal

Untuk bilangan bulat.dan pecahan,  kelompokkanlah bit biner dimana masing terdiri dari 4 bit dimulai dari yang paling kanan (bulat), Dimulai dari kiri (pecahan)

Contoh:

Nyatakan bil.biner (11100011,1011)2 jadi Heksadesimal

Biner               : 1110   0011,  1011

Heksa              :   E         3   ,     B      

Jadi                  : (11100011,1011)2 = (E3,B)16

 

1.5.      Konversi bilangan Desimal ke Oktal

Untuk bilangan bulat. bilangan tersebut dibagi 8, kemudian dilakukan perulangan samapai hasilnya 0

Contoh:

(N)8 = (443)10                          = (673)8

443 : 8=  55     sisa      3            LSB

  55 : 8=  6       sisa      7

    6 : 8=  0       sisa      6            MSB

 

Untuk bilangan pecahan, bilangan tersebut dikali 8, kemudian hasilnya diperoleh dengan membaca kolom pindahan (carry) dari atas ke bawah

Contoh:

(N)8 = (0,15625)10       = (0,12)8

0,15625 x 8=  1,25000     pindahan      1         8-1  MSB

0,25000 x 8=  2,00000     pindahan      2         8-2   LSB

 

1.6.      Konversi bilangan Desimal ke Heksadesimal

Untuk bilangan bulat, mengubah bilangan desimal ke bilangan heksa dilakukan pembagian berulang-ulang dengan bil. Dasar 16

Contoh:

(N)16 = (3901)10           = (F3D)16

3901 : 16 =  243     sisa      (13)10 = (D)16     160      LSB

  243 : 16 =    15     sisa        (3)10 = (3)16      161

    15 : 16 =      0     sisa      (15)10 = (F)16      162      MSB

Untuk bilangan pecahan, bilangan tersebut dikali 16, kemudian hasilnya diperoleh dengan membaca kolom pindahan (carry) dari atas ke bawah

Contoh:

(N)16 = (0,78125)10      = (0,C8)16

 

0,78125 x 16 =  12,5    pindahan   (12)10=(C )16   16-1  MSB

        0,5 x 16 =    8       pindahan     (8)10=(8 )16   16-2   LSB

 

 

 

 

 

 

 

 

2. PROCESSOR REGISTER

2.1       Register-register umum

Ø      AX (accumulator), register ini melakukan proses aritmatika, proses input dan output

Ø      BX (base register), register ini melakukan proses aritmatika, sama seperti register AX

Ø      CX (register counter), register ini melakukan proses mencacah yang selalu menunjukan lokasi memori dari instruksi yang akan diakses

Ø      DX , register yang melakukan proses aritmatika khusus perkalian dan pembagian

 

2.2       Segment Register

digunakan untuk menunjukan alamat dari satu segment, terdiri dari :

Ø      CS (code segment),  digunakan untuk menunjukkan tempat dari segmen yang sedang aktif

Ø      DS (data segment),  untuk menunjukkan tempat segmen dimana data-data pada program disimpan.

Ø      ES (extra segment) digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video

Ø      SS (stack segment) menunjukkan letak dari segmen yang digunakan oleh stack

 

2.3       Instruksi (IP)

merupakan sebagai lokasi memory dari tempat instruksi yang akan dieksekusi. register ini  berpasang dengan cs

 

2.4       Pointer dan Indeks

Berfungsi sebagai pointer terhadap suatu lokasi memory yang terdiri dari  SP(stack pointer),BP (break pointer), SI(stack index) dan DI(destination index)  SI dan DI biasanya digunakan untuk mencatat alamat di memory

 

 

 

 

 

  1. TRANSFER DATA

3.1        Transfer Segera

Masing-masing type transer segera (Move, Load, Store) terdiri dari OpCode segera diikuti oleh data. Data segera mungkin pindah juga ke register atau ke momori.

-     Pemindahan Segera Data ke Register

Mnemonic untuk pindah satu huruf segera data ke register BX adalah :

                  MOV BX, data

                  Opcode BBh

Mnemonic pemindahan satu byte segera data ke register BL adalah :

                  MOV BL, data

                  Opcode B7h

-     Pemindahan Segera Data ke Memori

Perintah ini terdiri dari dua byte, diikuti oleh lokasi memori, diikuti oleh satu atau dua byte data. Mnemonic untuk pemindahan dua byte segera data ke memori:

                  MOV M, data

                  Opcode C7h 06h

Mnemonic utuk pemindahan satu byte segera data ke memori

                  MOV M, data

                  Opcode C6h 06h

 

3.2        Transfer Data Langsung

Tidak seperti transfer segera, perintah transfer langsug berisi alamat dimana data perlu disimpan, atau dimana data untuk disimpan. Transfer langsung berisi Opcode diikuti oleh dua byte iformasi lokasi memori.

-     Pemindahan Akumulator Langsung

Instruksi ini dipindahka ke lokasi memori dengan alamat khusus didalam 3 dan 4 byte dimasukan ke akumulator.

Mnemonic untuk pembebanan langsung akumulator adalah :

                  LAD alamat

                  Opcode A0h atau A1h

Opcode untuk 2 byte (huruf) : A1 / untuk 1 byte = A0

-     Pennyimpanan Langsung Dari Akumulator

Mnemonic

                  STA alamat

                  Opcode A2h atau A3h

Opcode untuk 1 byte : A2h / untuk data huruf : A3h

-     Pemindahan Secara Langsung Dari Register Ke Register

Mnnemoic untu pindah isi register AX ke BX adalah :

                  MOV BX, AX

                  Opcode 8Bh D8h

 

3.3        Transfer Data tak Langsung

Didalam transfer data tak langsung, lokasi memori data dipindahkan ke atau dari register. Register yang terpengaruh oleh transfer data tak langsung register BX, Destination Index (DI), Source Index (SI), Base Pointer (BP).

-     Pemindahan Ke Register Dari Memori

Mnemonic unntuk pindah isi di memori ke register AX :

                  MOV AX,  M

                  Opcode 8Bh  XXh

XX = 04 h jika lokasi memori berasa dalam SI

XX = 05 h jika lokasi memori berada dalam DI

XX = 46 h jika lokasi memori berada dalam BP

XX = 07 h jika lokasi memori berada dalam BX

-     Pemindahann Ke memori Dari Register

Mnemonic untuk memindahkan isi register AX ke lokasi memori adalah :

                  MOV M, AX

                  Opcode 89 h XX h

XX = 04 h jika lokasi memori berada didalam SI

XX = 05 h jika lokasi memori berada didalam DI

XX = 48 h jika lokasi memori berada didalam BP

XX = 07 h jika lokasi memori berada didalam BX

 

 

 

 

 

 

4.    PROGRAM DAN ANALISA

 

4.1 Perintah yang ada pada debug

A : merakit instruksi simbolik (kode mesin)

D : menampilkan isi memory

E : memasukan data ke memori pada lokasi tertentu

G : menjalankan eksekusi program ke memori

N : menamai program

P : Eksekusi sekumpulan instruksi yang terkait

Q : quit yaitu keluar dari debug

R : menampilkan isi satu atau lebih register

 T : trace isi sebuah register

U : menampilkan kode mesin ke kode simbolik

W : menulis program ke disk

=============================================================

Dibawah ini merupakan isi awal memori 0120 – 0130 pada Data Segmen 0800



-   Dengan menggunakan debug, pindahkan isi 0120 ke 0130 pada data segment 0080

 

MOV AX,0080

MOV DS,AX

MOV SI,0120

MOV DI,0130

MOV AX,[SI]

MOV [DI],AX

INT 20

Analisa :

·         MOV AX,0080 , artinya register AX berisi 0080

·         MOV DS,AX, nilai 0080 pada register AX disalin nilainya pada data segmen

·         MOV SI,0120,  artinya nilai SI sama dengan 0120

·         MOV DI,0130, artinya nilai DI sama dengan 0120

·         MOV AX,[SI], artinya isi memori SI disalin pada register AX

·         MOV [DI],AX, artinya nilai register AX dipindahkan pada isi memori DI

·         INT 20 , artinya akhir dari program dimana program dapat keluar dari proses debug program tersebut.

Sehingga hasil akhirnya berupa 16 bit nilai pada alamat memori 0120 dan 0130 akan bernilai sama. Karena terjadi penyalinan isi memori SI yang dilakukan oleh DI.

 

-    Dengan menggunakan debug, berdasarkan soal sebelumnya tukarkan isi pointer SI dan pointer DI.

MOV AX,0080

MOV DS,AX

MOV SI,0120

MOV DI,0130

MOV AX,[SI]

MOV BX,[DI]

MOV [SI],BX

MOV [DI],AX

INT 20

 

Analisa :

proses ini mirip dengan program sebelumnya hanya bedanya disini adalah melakukan penukaran antara kedua indeks bukan melakukan penyalinan. Nilai indeks SI ditransfer ke register AX, nilai indeks DI ditransfer ke register BX. Selanjutnya register BX yang berisi nilai DI ditransfer ke isi indeks SI, register AX yang berisi nilai SI ditransfer ke isi indeks DI. Sehingga akhir dari program ini adalah menukarkan nilai pada indeks SI dan nilai indeks DI.

Sehingga akan tampak pada outputnya berupa nilai pada memori 0120 dan 0130 akan bertukar sebanyak 16 bit yaitu dimulai dari 0120 – 0121 dengan 0130 - 0131

 

Proses Aritmatika, untuk manipulasi bit

ADD  = penjumlahan

SUB = penguarangan

CMP = perbandingan

ADC = penjumlahan ada sisa (carry)

SBB = pengurangan dengan borrow

INC = penjumlahan dengan satu

DEC = pengurangan dengan satu

MUL = perkalian

DIV = pembagian

 

-  Menggunakan debug, memindahkan isi SI (0120) dimulai dari 0120-0126 dan DI (0130) dimulai dari 0130-0136 pada data segmen 0080

 

MOV AX,0080

MOV DS,AX

MOV SI,0120

MOV DI,0130

MOV CX,0007 

MOV AX,[SI]

MOV [DI],AX

INC SI

INC DI

DEC CX

JNZ 010E

INT 20

Analisa :

Pada program kali ini kita telah menggunakan proses aritmatika dan proses lompatan.

Program ini merupakan program penyalinan nilai SI pada DI dengan lompatan sebanyak 7 kali yang dimulai dari 0120-0121 dengan 0130-0131. Register CX digunakan sebagai pencacah untuk menyimpan banyaknya pengulangan yang akan dilakukan. Dengan adanya pengulangan maka akan terjadi proses penyalinan data pada SI terhadap DI. Proses penyalinan datanya akan disesuaikan pada tiap lompatan, karena pada tiap lompatan SI dan DI akan mengalami increment yaitu penjumlahan memori ditambah dengan satu. Lompatan dilakukan kembali pada proses MOV AX,[SI] dimana proses ini ada pada IP 010E, saat melakukan lompatan nilai SI telah berubah menjadi increment dari yang sebelumnya, sehingga proses ini tidak akan menyebabkan nilai memori sebelumnya terganti. Begitu seterusnya lompatan terus dilakukan sampai nilai CX bernilai 0, lompatan berheti dan program selesai.

 

-   Soal :

Menukarkan isi SI dan DI pada data segmen 0900

SI 0110 – 011F

DI 0140 – 014F

 

MOV AX,0080

MOV DS,AX

MOV SI,0120

MOV DI,0130

MOV CX,0010

MOV AX,[SI]

MOV BX,[DI]

MOV [SI],BX

MOV [DI],AX

INC SI

INC DI

DEC  CX

JNZ 011E

INT 20

Analisa :

Pada program ini bermaksud ingin menukarkan nilai memori 0120-012F dengan nilai memori 0130-013F. Agar dapat melakukan pengulangan sebanyak 15 kali maka register counter diisi dengan nilai CX,0010 artinya 0010 heksanya adalah 16. sedangkan jika kita membuat CX,000F maka untuk memori 012F dan 013F tidak akan terjadi pertukaran. Selanjutnya sama seperti proses penukaran sebelumnya memerlukan dua buah register. Sebagai tempat penampungan sementara. Dalam proses pengulangan terjadi INC SI dan INC DI artinya setiap kali dia melompat untuk melakukan penukaran memori SI dan DI mengalami penjumlahan dengan 1. proses ini berlagsung terus hingga nilai CX pada DEC CX bernilai nol dan program selesai.

 

 

-  Buatlah program untuk menjumlahkan data pada alamat memori 0120-012F dengan data pada alamata memori 0130-013F dan hasilnya disimpan di alamat 0150-015F

 

MOV AX,0800

MOV DS,AX

MOV SI,0120

MOV DI,0130

MOV BX,0150

MOV CX,0010

MOV AX,[SI]

ADD AX,[DI]

MOV [BX],AX

INC SI

INC DI

INC BX

DEC CX

JNZ 010E

INT 20

 

Analisa :

Pada program ini merupakan program menjumlahkan isi register SI dan DI dan hasilnya akan disimpan pada BX. Program ini hampir sama seperti program sebelumnya. Hanya bedanya pada program ini terdapat proses aritmatika berupa ADD AX,[DI] artinya nilai AX yang berisi memori SI dijumlahkan dengan memori DI dan hasil penjumlahannya disimpan pada register AX. Baru kemudian register AX disalin isinya pada  register BX yang memiliki lokasi memori pada 0150-015F. Sehingga terjadilah proses penjumlahan yang hasilnya disimpan pada register BX. Sama seperti sebelumnya proses perulangan akan belangsung hingga nilai CX sama dengan 0.

Note :

Proses add bisa dilakukan antar register seperti : ADD AX,BX

Proses add bisa dilakukan antara register dengan memori seperti : ADD AX,[SI]

 

4. 2  Langkah membuat program pada turbo assembler (TASM)

.MODEL SMALL

.CODE

ORG 100H

LABEL1 :

//PROGRAM

END LABEL1

 

Cara menjalankan file TASM :

Setelah meng-copy isi TASM portable pada salah satu dirictory di komputer,  lakukanlah pengetikkan program pada text editor dan file tersebut disimpan dalam file yang berekstensi *.asm. lakukan compile dan running melalui cmd tasm file.asm  ; melakukan pengecekan apabila ada kesalahan pada program (pada saat ini akan muncul file.obj). tlink/t file.obj ; akan muncul file berupa file.com, yang berarti program sudah bisa dijalankan. Selanjutnya tinggal ketikan nama file nya saja setelah itu program akan berjalan

 

;Menampilkan ke layar berupa karakter ”a”

.MODEL SMALL

.CODE

ORG 100H

TAMPIL :

            MOV AH,02H

            MOV DL,61H

            INT 21H

            INT 20H

END TAMPIL

Analisis :

Merupakan suatu program menampilkan karakter ”a”. Pada sub proses terdapat MOV AH,02H memiliki fungsi untuk menampilkan satu karakter ke layar. MOV DL,61H artinya DL berisi ASCII yang diubah ke dalam heksa dari karakter ”a”, INT 21H berfungsi untuk menampilkan karakter  ”a” ke layar, Sehingga tampillah ke layar berupa tampilan satu karakter dan selanjutnya INT 20H berfungsi untuk berhenti dan keluar dari dos.

;Program menampilkan karakter a c e

.MODEL SMALL

.CODE

ORG 100H

PROSES:

            MOV AH,02H            ; untuk menampilkan 1 karakter

            MOV CX,0003           ; pencacah untuk banyaknya pengulangan

            MOV DL,61H                        ; 61h untuk karakter ”a”

 ULANG:       

INT 21H

            ADD DL,2H

            DEC CX

            JNZ ULANG              ; melakukan pengulangan

            INT 20H                     ; keluar dari program

END PROSES

 

Analisis :

Pada program ini akan menampilkan karakter a, c, e . untuk menampilkan karakter ini memerlukan pengulangan. Pada awal program akan menampilkan karakter ”a” kemudian proses penjumlahan dengan 2 nilai ASCII dari karakter a, sehingga dapat hasilnya berupa karakter a c e. Karena tiap penjumlahan tersebut yang membuat nilai ASCII bertambah menjadi 2 dan kemudian menampilkan karakternya.

 

4.3    Gerbang- gerbang Logika

yaitu AND, OR, XOR, NOT, SHL, SHR, ROL, ROR

 

INSTRUKSI GESER

            Ada empat instruksi geser pada mikroprosesor 8088 / 8086 dan dua type dasar dapat dijalankan pada operasi geser yaitu geser logika  dan geser aritmatika. Selain itu, masing-masing operasi dapat dijalankan ke kanan atau ke kiri. Perintah geser adalah

        shift logical left (SHL)

        shift arichmetic left (SAL)

        shift logical right (SHR)

        shift arichmetic right (SAR).

 

range geser diperbolehkan dari 1 sampai 255 bit

 

Mnemonic

Maksud

Format

Flag Effect

SAL / SHL

Geser ke kiri aritmatik  / logic

SAL/SHL, D, Count

0F, CF

SHL

Geser ke kanan logical

SHL D, Count

0F, CF

SAR

Geser ke kanan

SAR D, Count

0F, SF, ZF, AF, PF, C

 

INSTRUKSI PUTAR

            Group dari instruksi yang lain adalah instruksi putar. Pada dasarnya instruksi ini sama dengan instruksi geser. Group ini terdiri dari :

         putar ke kiri (ROL)

         putar ke kanan (ROR)

         putar ke kiri dengan carry (RCL)

         putar ke kanan dengan carry (RCR).

 

            perputaran itu dapat diambil tempat dari 1 sampai 255 posisi bit ke kiri atau ke kanan

 

;PROGRAM : menampilkan karakter angka 2 dengan manipulasi bit

.MODEL SMALL

.CODE

ORG 100H

 

PROSES:

MOV AH,02H

MOV BL,01H                        ; register BL berisi nilai 01h

ROL BL,1                   ; memanipulasi bit

MOV DL,BL

ADD DL,30H

INT 21H

MOV AH,4CH

INT 21H

END PROSES

Analisis :

Program menampilkan angka 2 dengan menggunakan manipulasi bit, saat register BL berisi nilai 01h kemudian dilakukan manipulasi dengan memutar kekanan sebesar satu bit dari nilai register BL, setelah perputaran nilai register BL menjadi bernilai 2h.selanjutnya nilai dari register BL disalin pada register DL.kemudian terdapat penjumlahan nilai BL dengan nilai 30h sehingga hasilnya 32h yang merupakan ASCII dari angka 2. sehingga tampillah ke layar berupa angka 2.

 

;Program Menampilkan bilangan genap dengan manipulasi bit

.MODEL SMALL

.CODE

ORG 100H

 

PROSES:

MOV AH,02H

MOV CX,02

MOV BL,01H

SHL BL,1

MOV DL,BL

ADD DL,30H

INT 21H

 

ULANG :

ADD DL,2H

INT 21H

DEC CX

JNZ ULANG

INT 20H

END PROSES

Analisis :

Program untuk menampilkan bilangan genap ini menggunak manipulasi bit dengan menggunakan intruksi geser kekiri sebesar 1 bit dan menggunakan pengulangan juga. Pada program ini sama seperti program menampilkan angka 2 tadi. Bedanya pada program ini dilakukan pengulangan dengan menambahkan nilai DL yang sebelumny sudah berisi 32h dijumlahkan dengan 2h, sehingga akan tampil karakter dua tingkat dari angka 2 yaitu angka 4 begitu pula untuk angka 6 sehingga tampil bilangan genap tersebut.

Program ini juga berlaku untuk bilangan ganjil, bedanya hanya pada penempatan nilai awal dari ASCII angkanya saja.

 

;Program menampilkan alfabet dari Z sampai A 

.MODEL SMALL

.CODE

ORG 100H

 

PROSES:

        MOV AH,02H

        MOV DL,'Z'

        MOV CX, 26

ULANG:

        INT 21H

        DEC DL

        LOOP ULANG

        INT 20H

END   PROSES

Analisis :

Merupakan program menampilkan karakter dari Z sampai A, menggunakan pengulangan dan langsung menggunakan lambang karakternya jika kita tidak mengetahui kode ASCII terhadap simbol tertentu. Pengulangan terjadi sebanyak 26 kali dari Z sampai A. Sehingga tampillah keluaran seperti diatas.

 

4.4    Subrotine Instruction

Subrutin merupakan suatu program yang terpisah dari program utamanya, dimana program tersebut akan dipanggil dengan CALL jika akan menjalankan operasinya dan menggunakan RET (return) untuk kembali ke program utamanya.

POLA PROGRAM :

-------------------------------------------------------------

NamaP CALL NEAR/FAR

+---------+

| Program |

+---------+

RET

NamaP ENDP

-------------------------------------------------------------

 

 

Contoh programnya :

.MODEL SMALL

.CODE

ORG 100h

            Proses :            CALL Cetak_Kar                   ; Panggil Cetak_Kar

                                    INT 20h

Cetak_Kar       PROC NEAR

                                    MOV AH,02h

                                    MOV DL,'S'

                                    INT 21h                                  ; Cetak karakter

                                    RET                                         ; Kembali kepada si pemanggil

Cetak_Kar                   ENDP                                     ; END Procedures

END Proses

Analisis :

Program untuk menampilkan S dengan menggunakan prosedur dan makro. Program ini menggunakan subroutine menggunakan proses call dan ret yang. Pada program ini terdapat proses CALL cetak kar, artinya program utama menuju pada subrotine Cetak_kar. Dalam subroutine Cetak_kar juga terdapat RET yang berarti kembali ke program utama.

 

4.5    Condition Instruction

Yaitu suatu instruksi yang terjadi pada saat kondisi tertentu. Dalam bahasa C kita mengenal penggunaan if, while, do while, for, dan sebagainya. Dalam bahasa mesin kita mengenal condition instruction berupa lompatan. Ada dua jenis instruksi lompatan yaitu :

 

Lompatan tak bersyarat ; yaitu suatu instruksi yang melakukan pengulangan tanpa memerlukan syarat tertentu. Contoh : JMP , CALL, RET

Lompatan bersyarat : yaitu suatu instruksi pengulangan yang terjadi jika ada kondisi yang mempengaruhinya.

Contoh

JA/JNBE – Jump if above

JAE/JNB – Jump if above or equal

JB/JNA – Jump if below

JBE/JNA – Jump if below or equal

JG/JNLE – Jump if greater

JGE/JNL – Jump if greater or equal

JL/JNGE – Jump if less

JLE/JNG – Jump if less or equal

JE/JZ – Jump if equal

JNE/JNZ – Jump if not equal

JC – Jump if carry

JNC – Jump if not carry

JS – Jump if sign

JNS – Jump if not sign

JO – Jump if overflow

JNO – Jump if not overflow

JP/JPE – Jump if parity/parity even

JNP/JPO – Jump if not parity/parity odd

 

4.6    Stack Instruction

Menggunakan instruksi PUSH dan POP, instruksi PUSH berfungsi  untuk menyimpan nilai dari suatu counter, sedangkan instruksi POP berfungsi untuk mengambil nilai dari conter untuk dipakai kembali

Contoh program yang diketik pada debug untuk melihat fungsi subroutine dari program.

                        MOV CX,0002

                        MOV BX,1A00

                        MOV SP,1FFF

LOOP1           PUSH CX

                        MOV AL,[BX]

                        MOV CX,0004

LOOP2           ADD AL,AL

                        DEC CX

                        JNZ LOOP2

                        MOV [BX],AL

                        POP CX

                        DEC CX

                        JENZ LOOP1  ; merupakan subroutin ke instruksi loop1

                        INT 20H

Analisis :

Pada program ini counter bernilai 2, register BX berisi 1A00, dan register Sp 1FFF. Kemudian nilai CX disimpan dengan menggunakan instruksi PUSH, selanjutnya memori BX disalin ke register AL, kemudian counter dinyatakan bernilai 4. kemudian DEC CX hingga CX bernilai 0,  register AL memindahkan nilai ke memori BX, selanjutnya ada proses POP CX artinya memnggil POP yang bernilai 2 tadi dan kemudian melakukan pengulangan kembali ke LOOP1 sehingga dalam program ini AL melakukan penjumlahan sebanyak 8 kali.

 

4.7    Input Keyboard

Prosedur dan Macro

 
 
 

 

 

 

 

 

 

 

 

 

 

.MODEL SMALL

.CODE

ORG 100h

TData : JMP Proses

Kar DB ?

Klm DB ’CINTA MENYEBABKAN RINDU YANG PALING SENGSARA '

Proses :            MOV CX,45

                        XOR BX,BX

Ulang :

                        MOV DL,Klm[BX]

                        MOV Kar,DL

                        CALL Cetak_Kar

                        INC BX

                        LOOP Ulang

                        INT 20h

Cetak_Kar PROC NEAR

                        PUSH AX

                        PUSH DX                  

                        MOV AH,02h

                        MOV DL,Kar

                        INT 21h

                        POP DX

                        POP AX

                        RET

Cetak_Kar ENDP

                        END TData

 

Analisis :

Program untuk menampilkan tulisan ini dilakukan dengan mencetak per karakter dimana DB (double byte) langsung diisi dengan string dan proses penampilan string itu tetap dicetak per-karakternya.



PDF | DOC | DOCX


Komentar:

03 April 2012 pukul 13:47 WIB
adi mengatakan...
mantap..buat referensi ngerjain tugas..

02 Maret 2012 pukul 15:47 WIB
rik_ruli mengatakan...
Trims..yah..ijin copas..buat belajar..

07 Oktober 2010 pukul 10:08 WIB
tifani mengatakan...
terima kasih, artikelnya sangat membantu :iloveindonesia

24 Juli 2010 pukul 04:49 WIB
areef mengatakan...
artikel mantab.ijin copy ya...


Kirim Komentar Anda:

Nama Anda (wajib diisi) E-Mail (tidak dipublikasikan) http:// Website, Blog, Facebook, dll (wajib diisi)


<-- isi kode di atas (wajib diisi)

grinLOLcheesesmilewinksmirkrolleyesconfused
surprisedbig surprisetongue laughtongue rolleyetongue winkraspberryblank starelong face
ohhgrrrgulpoh ohdownerred facesickshut eye
hmmmmadangryzipperkissshockcool smilecool smirk
cool grincool hmmcool madcool cheesevampiresnakeexcaimquestion