Jumat, 29 April 2016

TUGAS 1 MIKROPROSESOR & ANTARMUKA

Tugas 1
Mikroprosesor dan Antarmuka

Dosen
Darwison, M.T.

Oleh:
Kelompok 14

Pedri Yulianto (1210951011)
Nella Wahyuni (1210951015)
  Dewi Wardianti (1201951014)




Jurusan Teknik Elektro
Fakultas Teknik
Universitas Andalas
Padang
2016


Program Menampilkan Angka 0-9

;Program menampilkan angka 0 sampai 9 ke layar monitor
    mov cx,0Ah  ;counter sebanyak 10 kali (banyaknya angka)
    mov dl,30h  ;kode ASCII dari angka 0
 ulangi:
    mov AH,02h
    int 21h     ;mencetak kode ASCII karakter di DL ke layar
    inc dl      ;dl+1=karakter berikutnya
    loop ulangi ;ulangi sampai angka 9 karena CX=Ah(10 kali)
    mov AH,4CH
    INT 21h     ;hentikan program

Gambar 1. Menampilkan Angka 0-9

Program Menampilkan Angka 9-0

;Program Menampilkan Angka 9-0 ke layar monitor
      MOV CX,0Ah  ;counter sebanyak 10x (banyaknya angka)
      MOV DL,39h  ;kode ASCII dari angka 9
ulangi:
      MOV AH,02h
      INT 21h           ;mencetak kode ASCII karakter DL ke layar
      DEC DL            ;DL -1= karakter berikutnya
      LOOP ulangi ;ulangi sampai angka 9 karena CX=Ah(10x looping)
      MOV AH,4CH
      INT 21h           ; Hentikan Program

Gambar 2. Menampilkan Angka 9-0

Program Perkalian 2

;Program perkalian 2
      MOV CX,4h   ;counter sebanyak 4x (banyaknya angka)
      MOV BH,1h   ;base register untuk ascii angka
ulangi:
      MOV AH,02h
      MOV DL,0DH  ;membuat baris baru
      INT 21h     ;cetak angka
      MOV DL,0AH  ;membuat kursor baru
      INT 21h
     
      MOV DL,BH   ;Base register untuk langsung menulis ke memori
      ADD DL,30H  ;BH+30H untuk ascii angka
      MOV AH,02H
      INT 21H     ;cetak angka

      MOV DL,2AH  ;cetak '*'
      INT 21H    
      MOV DL,32H  ;cetak '2'
      INT 21h
      MOV DL,3DH  ;cetak '='
      INT 21h

      MOV AL,02H
      MUL Bh     ;Mengalikan nilai register BL dengan nilai register AL dan disimpan di register AX
      MOV DL,AL
      ADD DL,30H ;BH+30H untuk ascii angka
      MOV AH,02H
      INT 21H
      MOV DL,0DH ;membuat baris baru
      INT 21H
      MOV DL,0AH ;membuat kursor baru
      INT 21h

      INC BH     ;BH+1, angka ditambahkan 1
     
      LOOP ulangi ;ulangi sampai cx=0

      MOV AH,4CH
      INT 21H  

Gambar 3. Perkalian 2

Program Pembagian 1

;Program pembagian 1
      MOV CX,0009h      ;counter sebanyak 9x (banyaknya angka)
      MOV BH,01h  ;base register untuk ascii angka
ulangi:
      MOV AH,02h
      MOV DL,0DH  ;membuat baris baru
      INT 21h     ;cetak angka
     
      MOV DL,0AH  ;membuat kursor baru
      INT 21h
     
      MOV DL,BH   ;Base register untuk langsung menulis ke memori
      ADD DL,30H  ;BH+30H untuk ascii angka
      MOV AH,02H
      INT 21H     ;cetak angka

      MOV DL,3AH  ;cetak ':'
      INT 21H    
      MOV DL,31H  ;cetak '1'
      INT 21h
      MOV DL,3DH  ;cetak '='
      INT 21h

      MOV   AL,BH
      XOR   AH,AH ;Buat nol AH
     
      MOV BL,01H
      DIV BL     ;Membagikan nilai register BL dengan nilai register AL dan disimpan di register AX

      MOV DL,AL
      ADD DL,30H ;BH+30H untuk ascii angka
      MOV AH,02H
      INT 21H
     
      MOV DL,0DH ;membuat baris baru
      INT 21H
      MOV DL,0AH ;membuat kursor baru
      INT 21h

      INC BH     ;BH+1, angka ditambahkan 1
     
      LOOP ulangi ;ulangi sampai cx=0

      MOV AH,4CH
      INT 21H  

Gambar 4. Pembagian 1

Program JUMP ke label ulangi

;Program JUMP ke label ulangi      
      MOV CX,1Ah  ;counter sebanyak 26x (banyaknya angka)
      MOV DL,5Ah  ;kode ASCII dari Huruf Z
ulangi1:         
      MOV AH,02H
      INT 21h           ;mencetak kode ASCII karakter DL ke layar
      DEC DL            ;DL -1= karakter berikutnya
      LOOP ulangi1      ;ulangi sampai huruf A karena CX=19h(25x looping)
     
      MOV AH,4CH
      INT 21h

Gambar 5. Program JUMP ke label ulangi

Program Operasi Stack

; Program Operasi Stack
      MOV   AH,02H
      MOV   CX,1AH      ;counter sebanyak 25x (banyaknya angka)
      MOV   DL,41H      ;kode ASCII dari Huruf A
Lagi: INT   21H
      PUSH  DX    ;menggantikan fungsi MOV BL,DL
      MOV   DL,20H      ;memberikan spasi
      INT   21H
      POP   DX    ;menggantikan fungsi MOV BL,DL
      INC   DL    ;DL +1= karakter berikutnya
      LOOP  Lagi  ;ulangi sampai huruf Z karena CX=1Ah(26x looping)
      MOV   AH,4CH
      INT 21H

Gambar 6. Program Operasi Stack

Program Intruksi logika OR

;Program Intruksi logika OR
MOV DL,5AH  ;kode ASCII dari Huruf Z
MOV AH,02H
INT 21H     ;mencetak kode ASCII karakter DL ke layar

OR DL,20H   ;proses logika OR
INT 21H     ;mencetak kode ASCII karakter DL ke layar

MOV AH,4CH
INT 21H

Gambar 7. Program Instruksi Logika OR

Program Input int 21H, service 09H

;Input int 21H, service 09H
      JMP MULAI
;Disini data dimulai

KATA db 'Kata yang dicetak',13,10
       db 'dengan Interrupt 21H service 09H',13,10
       db '$'
;Disini Program dimulai
mulai:
      MOV   DX,OFFSET KATA    ;Mengisi DX dengan OFFSET DATA
      MOV   AH,09H                ;Mengisi AH dengan Service Number
      INT   21H
      MOV   AH,4CH
      INT   21H                 ;Pemberhentian Program

Gambar 8. Input int 21H, service 09H

Program Input int 21H, service 01H

;Input int 21H, service 01H
START:      JMP   MULAI
Tanya       db 'Jawablah Pertanyaan Di Bawah Ini !',13,10
      db 'Apakah Anda seorang Laki - Laki ?(Y/T)',13,10    
      db 'Jawaban Anda :$'
Jawab1      db 13,10,'Anda Adalah Seorang Mahasiswa ',13,10,'$'
Jawab2      db 13,10,'Anda Adalah Seorang Mahasiswi ',13,10,'$'
MULAI:      MOV   AH,09H            ; SERVICE NUMBER = 09h
      MOV   DX,OFFSET Tanya   ; NENCETAK TANYA.
      INT   21H
ULANG:      MOV   AH,01H            ; SERVICE NUMBER = 01H
      INT   21H
      CMP   AL,'Y'            ; APAKAH JAWABAN 'y'
      JE    Mahasiswa         ; JIKA SAMA LOMPAT KE LAKI
      CMP   AL,'y'            ; APAKAH JAWABAN 'y'
      JE  Mahasiswa           ; JIKA SAMA LOMPAT KE LAKI
      CMP   AL,'T'            ; APAKAH JAWABAN 'T'
      JE    Mahasiswi         ; JIKA SAMA LOMPAT KE WANITA
      CMP   AL,'t'            ; APAKAH JAWABAN 't'
      JNE   ULANG       ; JIKA TIDAK SAMA LOMPAT ULANG
Mahasiswi: MOV    AH,09H
             MOV DX,OFFSET JAWAB2  ; MENCETAK JAWAB2
             INT 21H
             JMP SELESAI           ; LOMPAT KE SELESAI
Mahasiswa: MOV    AH,09H
             MOV DX,OFFSET Jawab1  ; MENCETAK JAWAB1
             INT 21H
SELESAI: MOV      AH,4CH
       INT 21H               ;  AKHIR PR0GRAM 

Gambar 9. Input int 21H, service 01H

Program Input int 21H, service 06H

;Program Input Per Huruf Tanpa Echo int 21H, service 06H 
      START:      JMP MULAI                           ;mulai
      DATA  DB 'KATA INI AKAN DICETAK TERUS $'  ;data kalimat
      MULAI:      MOV   AH,09H      ;service number 09H                    ;
            MOV   DX,OFFSET DATA  ;mencetak DATA
            INT   21H             ;mencetak kata
            MOV   AH,06H
            MOV   DL,0FFH         ;register DL berisi FF hexa
            XOR   AL,AL           ;proses logika OR AL terhadap AL
            INT   21H
            CMP   AL,'X'          ;Input X
            JE    AKHIR           ;Akhir program
            CMP   AL,'x'          ;Input x
            JMP   MULAI           ;Akhir program
      AKHIR:      MOV   AH,4CH
            INT   21H

Gambar 10. Input int 21H, service 06H

Program Input int 21H, service 0AH

;PROGRAM Menulis dan mebaca memori
;Program isi NIM
Start:      JMP MULAI
TANYA DB 'NIM Anda?',13,10,'$'
NIM   DB 11,?,11 DUP(?)
JAWAB DB 13,10,'NIM : $'
MULAI:      MOV   AH,09H
                  MOV   DX,OFFSET TANYA
                  INT   21H         ; MENCETAK TANYA
                  MOV   AH,0AH
                  MOV   DX,OFFSET NIM
                  PUSH  DX          ;MENYIMPAN DX KE STACK 
                  INT   21H         ;INPUT DARI KEYBOARD
                  MOV   BX,OFFSET NIM
                  INC   BX
                 
                  MOV   DL,[BX]           ;MASUKAN [BX] KE DX
                  XOR   DH,DH
                  INC   BX          ;BX=BX+1
                  ADD   BX,DX       ;BX=BX+DX
                  MOV   DL,'$'
                  MOV   [BX],DL           ;MASUKAN DL KE [BX]
                  MOV   DX,OFFSET JAWAB
                  MOV   AH,09H
                 
                  INT   21H   ;CETAK      JAWAB
                  POP   DX    ;AMBIL DX DARI STACK
                  INC   DX    ;DX=DX+1
                  INC   DX    ;DX=DX+1
                 
                  MOV   AH,09H
                  INT   21H   ;CETAK TAMPUNG

MOV   AH,4CH
INT   21H

Gambar 11. Input int 21H, service 0AH

Program Subroutine cek input

;SUBROUTINE CEK INPUT KEYBOARD
;'esc' =27h,KELUAR PROGRAM
;'S'   =APLIKASI GESER LED BERHENTI
;'S'   =APLIKASI GESER LED KEMBALI DILANJUTKAN
cek:  
    push ax
    mov  ah,6
    mov  dl,0ffh
    int  21h
    cmp  al,27

keluar0:
    je keluar0
    or al,20h
    cmp al,'s'
    jne run

stop:
    mov ah,6
    mov dl,0ffh
    int 21h
    cmp al,27
    je  keluar0
    or  al,20h
    cmp al,'r'
    jne stop

run:
    pop ax

    ret
Gambar 12. Subroutine cek input

Program Menampilkan 3 Digit Angka

;Program Menampilkan 3 Digit angka
MULAI: MOV AX,469
         XOR CX,CX      ;untuk angka berapa digit bilangan
ulang: MOV BH,10
         DIV BH       ;bagi AX dengan BH
         PUSH AX        ;masukkan hasil bagi AX ke Stack
         INC CX         ;DL +1= karakter berikutnya
         XOR AH,AH    ;AH = 0
         CMP AL,00    ;AL = 0
         JNE ulang      ;ulang jika tidak sama

ulangi1:         
      POP DX           
      MOV DL,DH        
      ADD DL,30H        ;+30 untuk dicetak
      MOV AH,02
      INT 21H
      LOOP  ulangi1
      MOV AH,4CH
      INT 21h 

Gambar 13. Menampilkan 3 Digit Angka


Bahan lengkap dapat didownload disini


Tidak ada komentar:

Posting Komentar