Anda di halaman 1dari 3

include emu8086.

inc
.MODEL SMALL
.DATA
;I DB 0d
SIZE EQU 10
HEAD1 DB
'________________________________________________________________________________',
'$'
HEAD2 DB 10, 13, '!!!1!!!!PROGRAM RAHASIA, BERISI TEXT PENTING DOKUMEN
NEGARA!!!!!!!!','$'
HEAD4 DB 10, 13, '!!!!!!!!PROGRAM RAHASIA, BERISI TEXT PENTING DOKUMEN
NEGARA!!!!!!!!','$'
HEAD3 DB 10, 13,
'________________________________________________________________________________',
'$'
MSG1 DB 13, 10, 'Masukkan ID:$'
MSG2 DB 13, 10, 'Masukkan Password:$'
MSG3 DB 13, 10, 'ERROR, Nomer ID Tidak Ditemukan!$'
MSG9 DB 10, 13, 'ANDA SIAPA?????$'
MSG4 DB 13, 10, 'Password Salah!!$'
MSG11 DB 13, 10, 'TANGKAP!$'
MSG5 DB 13, 10, "Oke, jadi ini rahasianya$"
MSG10 DB 10, 13, "Sebenarnya$"
MSG7 DB 10, 13, "Belajar Praktikum Mikroprosesor itu sangat mengasyikan$"
MSG8 DB 10, 13, "Aku jadi bisa menggunakan EMU8086$"
MSG12 DB 10, 13, "Dan aku jadi paham cara memprogram bahasa Assembly$"
MSG6 DB 13, 10, 'Passwordnya kepanjangaaaaan!$'
TEMP_ID DW 1 DUP(?),0
TEMP_Pass DB 1 DUP(?)
IDSize = $-TEMP_ID
PassSize = $-Temp_Pass
ID DW '42'
Password DB 9

.CODE
MAIN PROC
MOV AX,@DATA ;In
MOV DS,AX
MOV AX,0000H

Title: LEA DX,HEAD1


MOV AH,09H
INT 21H
LEA DX,HEAD2
MOV AH,09H
INT 21H
LEA DX,HEAD4
MOV AH,09H
INT 21H
LEA DX,HEAD3
MOV AH,09H
INT 21H

ID_PROMPT: LEA DX,MSG1


MOV AH,09H
INT 21H
ID_INPUT:
MOV BX,0
MOV DX,0
LEA DI,TEMP_ID
MOV DX,IDSize
CALL get_string

CheckID: MOV BL,0


MOV SI,0

AGAIN:
MOV AX,ID[SI]
MOV DX,TEMP_ID
CMP DX,AX
JE PASS_PROMPT
INC BL
ADD SI,3
CMP BL,SIZE
JB AGAIN

ERRORMSG: MOV AH,00 ; untuk menclear screen


INT 10h ; untuk mencetak clear screen
LEA DX,MSG3
MOV AH,09H
INT 21H
LEA DX,MSG9
MOV AH,09H
INT 21H
JMP ID_PROMPT

PASS_PROMPT:
LEA DX,MSG2
MOV AH,09H
INT 21H

Pass_INPUT:
CALL scan_num
CMP CL,0FH
JAE TooLong
MOV BH,00H
MOV DL,Password[BX]
CMP CL,DL
JE CORRECT

INCORRECT: MOV AH,00 ; untuk menclear screen


INT 10h ; untuk mencetak clear screen
LEA DX,MSG4
MOV AH,09H
INT 21H
JMP ID_PROMPT

CORRECT: MOV AH,00 ; untuk menclear screen


INT 10h ; untuk mencetak clear screen
LEA DX,MSG5
MOV AH,09H
INT 21H
LEA DX,MSG10
MOV AH,09H
INT 21H
LEA DX,MSG7
MOV AH,09H
INT 21H
LEA DX,MSG8
MOV AH,09H
INT 21H
LEA DX,MSG12
MOV AH,09H
INT 21H
JMP Terminate

TooLong: LEA DX,MSG6


MOV AH,09H
INT 21H
JMP PASS_PROMPT

DEFINE_SCAN_NUM
DEFINE_GET_STRING
Terminate:
END MAIN

Anda mungkin juga menyukai