Created
December 6, 2017 13:42
-
-
Save MericBERBER/5586000b287f94903df324a8c15c899f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
org 100h | |
GO: | |
call RANDOM_NUMBER | |
call TIME_CHECKT | |
cmp intsecT, 1 | |
je NoTimeLeft | |
call TIME_INCT | |
call TIME_CHECK | |
cmp intsec, 1 | |
je NoTimeLeft | |
call TIME_INC | |
mov cx, 1 | |
WAITME: | |
loop WAITME | |
call WRITE_TIME | |
mov ax, 0 | |
mov al, R | |
and al, 5 | |
mov key, al | |
mov bl, R | |
mul bl | |
add al, 5 | |
mov bl, 5 | |
div bl | |
cmp ah, 0 | |
jne GO | |
lea si, M1 | |
call ScPro | |
call TIME_ZERO | |
mov ax, 0 | |
mov al, key | |
mov bl, R | |
or al, bl | |
cmp al, 0 | |
je GO | |
lea si,M2 | |
call ScPro | |
call TIME_ZERO | |
mov ax, 0 | |
mov al, key | |
add al, R | |
sar al, 2 | |
cmp al, 0 | |
je GO | |
lea si, M3 | |
call ScPro | |
call TIME_ZERO | |
mov ax, 0 | |
mov al, key | |
xor al, R | |
cmp al, 0 | |
je GO | |
lea si, M4 | |
call ScPro | |
call TIME_ZERO | |
mov ax, 0 | |
mov al, key | |
mul R | |
cmp al,0 | |
jne GO | |
lea si, M5 | |
call ScPro | |
call TIME_ZERO | |
mov dx, 0 | |
mov dl, R | |
NoTimeLeft: | |
END: | |
ret | |
M1 DB 'Lock1 was opened',0 | |
M2 DB 'Lock2 was opened',0 | |
M3 DB 'Lock3 was opened',0 | |
M4 DB 'Lock4 was opened',0 | |
M5 DB 'Lock5 was opened',0 | |
M0 DB 17 DUP(0) | |
ScPro PROC | |
mov dx, 2040h | |
mov cx, 17 | |
L:mov al, [si] | |
out dx, al | |
inc si | |
inc dx | |
loop L | |
ret | |
ENDP | |
RANDOM_NUMBER PROC | |
mov ah, 00h ; interrupts to get system time | |
int 1ah; CX:DX now hold number of clock ticks | |
mov ax, dx | |
xor dx, dx | |
mov cx, 10 | |
div cx | |
mov R, dl | |
ret | |
ENDP RANDOM_NUMBER | |
Num db 00111111b, 00000110b, 01011011b, 01001111b, 01100110b, 01101101b, 01111100b, 00000111b, 01111111b, 01101111b | |
R db 0 | |
totalmin db 0 | |
totalsec db 0 | |
lockmin db 0 | |
locksec db 0 | |
intsec db 0 | |
intsecT db 0 | |
key db 0 | |
kalan db 0 | |
TIME_CHECKT PROC | |
mov ax, 0 | |
mov al, totalmin | |
cmp al, 3 | |
jne EndTimeCheckT | |
mov intsecT, 1 | |
EndTimeCheckT: | |
ret | |
ENDP TIME_CHECKT | |
TIME_CHECK PROC | |
mov ax, 0 | |
mov al, lockmin | |
cmp al, 1 | |
jne EndTimeCheck | |
mov intsec, 1 | |
EndTimeCheck: | |
ret | |
ENDP TIME_CHECKT | |
TIME_INCT PROC | |
mov ax, 0 | |
mov al, totalsec | |
cmp al, 59 | |
je MakeZero | |
inc al | |
mov totalsec, al | |
jmp EndTimeInc | |
MakeZero: | |
mov totalsec, 0 | |
inc totalmin | |
EndTimeInc: | |
ret | |
ENDP TIME_INCT | |
TIME_INC PROC | |
mov ax, 0 | |
mov al, locksec | |
cmp al, 59 | |
je MakeZeroL | |
inc al | |
mov locksec, al | |
jmp EndTimeIncL | |
MakeZeroL: | |
mov locksec, 0 | |
inc lockmin | |
EndTimeIncL: | |
ret | |
ENDP TIME_INC | |
TIME_ZERO PROC | |
mov ax, 0 | |
mov locksec, 0 | |
ret | |
ENDP TIME_ZERO | |
WRITE_TIME PROC | |
mov dx, 2030h | |
mov al, Num[0] | |
out dx, al | |
inc dx | |
mov al, totalmin | |
mov ah, 0 | |
mov si, ax | |
mov al, Num[si] | |
or al, 10000000b | |
out dx, al | |
inc dx | |
mov al, totalsec | |
mov bl, 10 | |
div bl | |
mov kalan, ah | |
mov ah, 0 | |
mov si, ax | |
mov al, Num[si] | |
out dx, al | |
inc dx | |
mov ah, 0 | |
mov al, kalan | |
mov si, ax | |
mov al, Num[si] | |
out dx, al | |
inc dx | |
mov al, Num[0] | |
out dx, al | |
inc dx | |
mov al, lockmin | |
mov ah, 0 | |
mov si, ax | |
mov al, Num[si] | |
or al, 10000000b | |
out dx, al | |
inc dx | |
mov al, locksec | |
mov bl, 10 | |
div bl | |
mov kalan, ah | |
mov ah, 0 | |
mov si, ax | |
mov al, Num[si] | |
out dx, al | |
inc dx | |
mov ah, 0 | |
mov al, kalan | |
mov si, ax | |
mov al, Num[si] | |
out dx, al | |
ret | |
ENDP WRITE_TIME |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment