Advertisement
PengenTau

pembagian 1 angka

May 28th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASP 3.07 KB | None | 0 0
  1. ;::NAMA PROGRAM : BAGI.ASM::
  2. ;::FUNGSI   :PEMBAGIAN SATU ANGKA::
  3. .MODEL SMALL
  4. .CODE
  5. ORG 100H
  6.  
  7. Tulis   MACRO Kalimat ;Macro untuk mecetak kalimat
  8.         MOV AH,09H
  9.         LEA DX,Kalimat ;(Load Effective Address) perintah untuk mendapatkan alamat dr sebuah variabel
  10.         INT 21H
  11.         ENDM
  12.  
  13. Cetak   MACRO Karakter ;Macro untuk mencetak karakter
  14.         MOV AH,02H
  15.         MOV DL,Karakter
  16.         INT 21H
  17.         ENDM
  18.        
  19. Start:  JMP Proses
  20.         Kal0    DB 13,10,'PROGRAM PEMBAGIAN 1 ANGKA$'
  21.         Kal1    DB 13,10,'ESC Untuk Keluar$'
  22.         Input1  DB 13,10,'MASUKAN ANGKA PERTAMA : $'
  23.         Input2  DB 13,10,'MASUKAN ANGKA KEDUA : $'
  24.         Hsl     DB 13,10,'HASIL PEMBAGIANNYA ADALAH : $'
  25.         Angka1  DB ? ;Buffer untuk angka yang akan dibagi
  26.         Angka2  DB ? ;Buffer untuk angka pembagi
  27.         Hasil   DB ? ;Buffer untuk menampung moduls
  28.         Sisa    DB ? ;Buffer untuk menampung sisa
  29.         A1      DW ? ;Buffer untuk operasi pembagian 1
  30.         A2      DB ? ;Buffer untuk operasi pembagian 2
  31.        
  32. Proses: Tulis Kal0
  33.         Tulis Kal1
  34.         Tulis Input1
  35.         JMP Var1    ;Lompat ke label Var1
  36.        
  37. Keluar: INT 20H     ;Bila ESC ditekan maka hentikan program
  38.  
  39. Var1:   MOV AH,07H  ;Service untuk input 1 karakter tanpa ditampilkan
  40.         INT 21H     ;Input Karakternya
  41.         CMP AL,27   ;Bandingkan dengan ESC(ASCII 27)
  42.         JE Keluar   ;Bila sama lompat ke label Keluar
  43.         CMP AL,30H  ;Bandingkan dengan 0(ASCII 30H->batas Bawah)
  44.         JB Var1     ;Bila dibawahnya lompat ke label Var12
  45.         CMP AL,39H  ;Bandingkan dengan 9(ASCII 34H->Batas Atas)
  46.         JA Var1     ;Bila diatasnya lompat ke label Var12
  47.        
  48.         Cetak AL
  49.         MOV Angka1,AL;Masukan karakter di AL pada Angka1
  50.        
  51.         Tulis Input2
  52. Var2:   MOV AH,07H  ;Service untuk input 1 karakter tanpa ditampilkan
  53.         INT 21H     ;Input Karakternya
  54.         CMP AL,27   ;Bandingkan dengan ESC(ASCII 27)
  55.         JE Keluar   ;Bila sama lompat ke label Keluar
  56.         CMP AL,30H  ;Bandingkan dengan 0(ASCII 30H->batas Bawah)
  57.         JB Var2     ;Bila dibawahnya lompat ke label Var12
  58.         CMP AL,39H  ;Bandingkan dengan 9(ASCII 34H->Batas Atas)
  59.         JA Var2     ;Bila diatasnya lompat ke label Var12
  60.        
  61.         Cetak AL
  62.         MOV Angka2,AL;Masukan karakter di AL pada Angka2
  63.        
  64. Bagi:   MOV AL,Angka1   ;Simpan angka1 di AL, Masih dalam bentuk ASCII
  65.         SUB AL,30H      ;Kurangi dengan 30H untuk mendapatkan nilainya
  66.         MOV AH,0        ;Berikan nilai 0 untuk AH
  67.         MOV A1,AX       ;Nilai pada AX disimmpen ke A1
  68.         MOV AL,Angka2   ;Simpan Angka2 di AL (masih dalam bentuk ASCII
  69.         SUB AL,30H      ;Kurangi dengan 30H untuk mendapatkan nilainya
  70.         MOV A2,AL       ;Simpan nilai AL ke A2
  71.         MOV AX,A1       ;AX di isi dengan nilai A1
  72.         DIV A2          ;Bagi dengan A2 -> Modulus di AL dan sisa di AH
  73.         MOV Hasil,AL    ;Simpan nilai AL di Hasil
  74.         MOV Sisa,AH     ;Simpan nilai pada AH di Sisa
  75.         ADD Hasil,30H   ;tambahkan 30H untuk mendapatkan ASCIInya
  76.        
  77.         Tulis Hsl
  78.         MOV AL,10       ;Sisa kemudian dikalikan dengan 10 agar bisa dibagi lagi dengan pembagi yang sama
  79.         MUL Sisa        ;
  80.         MOV Sisa,AL     ;Untuk menentukan angka dibelakang koma
  81.         MOV AH,0        ;
  82.         MOV AL,Sisa     ;
  83.         DIV A2          ;Sisa yang sudah dikalikan 10 dibagi lagi
  84.         ADD AL,30H      ;dengan A2 tambahkan dengan 30H untuk mendapatkan ASCIInya
  85.        
  86.         MOV Sisa,AL
  87.         Cetak Hasil
  88.         Cetak ','
  89.         Cetak Sisa
  90.         JMP Proses      ;Langsung lompat ke label proses begitu selesai
  91. END     Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement