Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;::NAMA PROGRAM : BAGI.ASM::
- ;::FUNGSI :PEMBAGIAN SATU ANGKA::
- .MODEL SMALL
- .CODE
- ORG 100H
- Tulis MACRO Kalimat ;Macro untuk mecetak kalimat
- MOV AH,09H
- LEA DX,Kalimat ;(Load Effective Address) perintah untuk mendapatkan alamat dr sebuah variabel
- INT 21H
- ENDM
- Cetak MACRO Karakter ;Macro untuk mencetak karakter
- MOV AH,02H
- MOV DL,Karakter
- INT 21H
- ENDM
- Start: JMP Proses
- Kal0 DB 13,10,'PROGRAM PEMBAGIAN 1 ANGKA$'
- Kal1 DB 13,10,'ESC Untuk Keluar$'
- Input1 DB 13,10,'MASUKAN ANGKA PERTAMA : $'
- Input2 DB 13,10,'MASUKAN ANGKA KEDUA : $'
- Hsl DB 13,10,'HASIL PEMBAGIANNYA ADALAH : $'
- Angka1 DB ? ;Buffer untuk angka yang akan dibagi
- Angka2 DB ? ;Buffer untuk angka pembagi
- Hasil DB ? ;Buffer untuk menampung moduls
- Sisa DB ? ;Buffer untuk menampung sisa
- A1 DW ? ;Buffer untuk operasi pembagian 1
- A2 DB ? ;Buffer untuk operasi pembagian 2
- Proses: Tulis Kal0
- Tulis Kal1
- Tulis Input1
- JMP Var1 ;Lompat ke label Var1
- Keluar: INT 20H ;Bila ESC ditekan maka hentikan program
- Var1: MOV AH,07H ;Service untuk input 1 karakter tanpa ditampilkan
- INT 21H ;Input Karakternya
- CMP AL,27 ;Bandingkan dengan ESC(ASCII 27)
- JE Keluar ;Bila sama lompat ke label Keluar
- CMP AL,30H ;Bandingkan dengan 0(ASCII 30H->batas Bawah)
- JB Var1 ;Bila dibawahnya lompat ke label Var12
- CMP AL,39H ;Bandingkan dengan 9(ASCII 34H->Batas Atas)
- JA Var1 ;Bila diatasnya lompat ke label Var12
- Cetak AL
- MOV Angka1,AL;Masukan karakter di AL pada Angka1
- Tulis Input2
- Var2: MOV AH,07H ;Service untuk input 1 karakter tanpa ditampilkan
- INT 21H ;Input Karakternya
- CMP AL,27 ;Bandingkan dengan ESC(ASCII 27)
- JE Keluar ;Bila sama lompat ke label Keluar
- CMP AL,30H ;Bandingkan dengan 0(ASCII 30H->batas Bawah)
- JB Var2 ;Bila dibawahnya lompat ke label Var12
- CMP AL,39H ;Bandingkan dengan 9(ASCII 34H->Batas Atas)
- JA Var2 ;Bila diatasnya lompat ke label Var12
- Cetak AL
- MOV Angka2,AL;Masukan karakter di AL pada Angka2
- Bagi: MOV AL,Angka1 ;Simpan angka1 di AL, Masih dalam bentuk ASCII
- SUB AL,30H ;Kurangi dengan 30H untuk mendapatkan nilainya
- MOV AH,0 ;Berikan nilai 0 untuk AH
- MOV A1,AX ;Nilai pada AX disimmpen ke A1
- MOV AL,Angka2 ;Simpan Angka2 di AL (masih dalam bentuk ASCII
- SUB AL,30H ;Kurangi dengan 30H untuk mendapatkan nilainya
- MOV A2,AL ;Simpan nilai AL ke A2
- MOV AX,A1 ;AX di isi dengan nilai A1
- DIV A2 ;Bagi dengan A2 -> Modulus di AL dan sisa di AH
- MOV Hasil,AL ;Simpan nilai AL di Hasil
- MOV Sisa,AH ;Simpan nilai pada AH di Sisa
- ADD Hasil,30H ;tambahkan 30H untuk mendapatkan ASCIInya
- Tulis Hsl
- MOV AL,10 ;Sisa kemudian dikalikan dengan 10 agar bisa dibagi lagi dengan pembagi yang sama
- MUL Sisa ;
- MOV Sisa,AL ;Untuk menentukan angka dibelakang koma
- MOV AH,0 ;
- MOV AL,Sisa ;
- DIV A2 ;Sisa yang sudah dikalikan 10 dibagi lagi
- ADD AL,30H ;dengan A2 tambahkan dengan 30H untuk mendapatkan ASCIInya
- MOV Sisa,AL
- Cetak Hasil
- Cetak ','
- Cetak Sisa
- JMP Proses ;Langsung lompat ke label proses begitu selesai
- END Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement