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

📄 romdata.asm

📁 HPA磁盘隐藏分区的安装生成源码
💻 ASM
字号:
seg000 SEGMENT
       ASSUME CS:seg000
              
PUSH	BP
stosb
PUSH	CS


; Attributes: thunk

sub_3 PROC NEAR
JMP	NEAR PTR sub_1B83
sub_3 ENDP

DB  53h	; S
DB  59h	; Y
DB  53h	; S
DB  20h
DB  53h	; S
DB  48h	; H
DB  49h	; I
DB  45h	; E
DB  4Ch	; L
DB  44h	; D
DB  20h
DB  52h	; R
DB  56h	; V
DB  31h	; 1
DB  20h
DB  5Ch	; \
DB  53h	; S
DB  59h	; Y
DB  53h	; S
DB  4Ch	; L
DB  44h	; D
DB  52h	; R
DB    0
unk_1D DB  50h ; P
DB  72h	; r
DB  65h	; e
dword_20 DD 43207373h
DB  54h	; T
DB  52h	; R
DB  4Ch	; L
DB  20h
DB  2Bh	; +
DB  20h
DB  46h	; F
DB  38h	; 8
DB  20h
DB  6Bh	; k
DB  65h	; e
DB  79h	; y
DB  20h
DB  74h	; t
DB  6Fh	; o
DB  20h
DB  41h	; A
DB  59h	; Y
DB  43h	; C
DB  4Ch	; L
DB  4Fh	; O
DB  4Eh	; N
DB  45h	; E
DB  2Eh	; .
DB  0Dh
DB  0Ah
DB    0
DB  54h	; T
unk_40 DB  68h ; h
DB  65h	; e
DB  20h
DB  48h	; H
DB  50h	; P
DB  41h	; A
DB  31h	; 1
DB  20h
DB  70h	; p
DB  6Fh	; o
DB  73h	; s
DB  69h	; i
unk_4C DB  74h ; t
DB  69h	; i
DB  6Fh	; o
DB  6Eh	; n
DB  20h
DB  6Fh	; o
DB  72h	; r
DB  20h
DB  73h	; s
DB  65h	; e
DB  63h	; c
DB  74h	; t
unk_58 DB  6Fh ; o
DB  72h	; r
DB  73h	; s
DB  20h
DB  70h	; p
DB  65h	; e
DB  72h	; r
DB  20h
DB  63h	; c
DB  79h	; y
DB  6Ch	; l
DB  69h	; i
dword_64 DD 7265646Eh
DB  20h
DB  77h	; w
DB  61h	; a
DB  73h	; s
DB  20h
DB  63h	; c
DB  68h	; h
DB  61h	; a
DB  6Eh	; n
DB  67h	; g
DB  65h	; e
DB  64h	; d
DB  21h	; !
DB  0Dh
DB  0Ah
DB    0
DB  43h	; C
DB  6Fh	; o
DB  75h	; u
DB  6Ch	; l
DB  64h	; d
DB  20h
DB  6Eh	; n
DB  6Fh	; o
DB  74h	; t
DB  20h
DB  66h	; f
DB  69h	; i
DB  6Eh	; n
DB  64h	; d
DB  20h
DB  48h	; H
DB  50h	; P
DB  41h	; A
DB  31h	; 1
DB  21h	; !
DB  0Dh
DB  0Ah
DB    0
DB  90h	; ?word_90	DW 0
word_92	DW 0
DB 0FFh
DB 0FFh
dword_96 DD 0
DB    0
DB    0
DB    0
DB    0
dword_9E DD 0
dword_A2 DD 0
dword_A6 DD 0
word_AA	DW 0
byte_AC	DB 0
byte_AD	DB 0
byte_AE	DB 0
DB    0
DB    0
byte_B1	DB 0
word_B2	DW 0
word_B4	DW 0
dword_B6 DD 0
dword_BA DD 0
dword_BE DD 0
dword_C2 DD 0
dword_C6 DD 0
dword_CA DD 0
dword_CE DD 0
dword_D2 DD 0
word_D6	DW 0
byte_D8	DB 0
byte_D9	DB 0
word_DA	DW 0
word_DC	DW 0
dword_DE DD 0
dword_E2 DD 0
dword_E6 DD 0
word_EA	DW 0
byte_EC	DB 0
byte_ED	DB 0
byte_EE	DB 80h
byte_EF	DB 0
byte_F0	DB 10h
DB    0
word_F2	DW 0
dword_F4 DD 0
dword_F8 DD 0
dword_FC DD 0
DB  1Ah
DB    0
word_102 DW 0
dword_104 DD 0
dword_108 DD 0
dword_10C DD 0
dword_110 DD 0
DB    0
DB    0
DB    0
DB    0
DB    0
DB    0



sub_11A	PROC NEAR
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	ES
PUSH	DS
MOV	AH, 11h
INT	16h		; KEYBOARD - CHECK ENHANCED KEYSTROKE (AT model	339,XT2,XT286,PS)
			; Return: ZF clear if keystroke	available
			; AH = scan code \ meaningless if ZF = 1
			; AL = character /
			; ZF set if kbd	buffer empty
JNZ	SHORT loc_129
SUB	AX, AX
JMP	SHORT loc_12E

loc_129:
MOV	AX, 10h
INT	16h		; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
			; Return: AH = scan code, AL = character

loc_12E:
POP	DS
POP	ES
POP	DX
POP	CX
POP	BX
retn
sub_11A	ENDP



; Attributes: bp-based frame

sub_134	PROC NEAR

arg_0= WORD PTR	 4

PUSH	BP
MOV	BP, SP
PUSH	AX
PUSH	BX
PUSH	ES
STI
XOR	AX, AX
MOV	ES, AX
MOV	AX, ES:word_46C

loc_143:
MOV	BX, ES:word_46C
SUB	BX, AX
CMP	BX, [BP+arg_0]
JNB	SHORT loc_151
JMP	SHORT loc_143

loc_151:
POP	ES
POP	BX
POP	AX
POP	BP
retn
sub_134	ENDP



; Attributes: bp-based frame

sub_156	PROC NEAR

arg_0= dword PTR  4
arg_4= dword PTR  8
arg_8= WORD PTR	 0Ch

PUSH	BP

loc_157:
MOV	BP, SP
PUSH	CX
PUSH	SI
PUSH	DI

loc_15C:
PUSH	ES
PUSH	DS

loc_15E:
LES	DI, [BP+arg_0]
LDS	SI, [BP+arg_4]
MOV	CX, [BP+arg_8]
CLD

loc_168:
cmpsb
JNZ	SHORT loc_16D
LOOP	loc_168

loc_16D:
OR	CX, CX
JNZ	SHORT loc_175
SUB	AX, AX
JMP	SHORT loc_186

loc_175:
DEC	SI
DEC	DI
MOV	AL, ES:[DI]
CMP	AL, [SI]
JBE	SHORT loc_183
MOV	AX, 1
JMP	SHORT loc_186

loc_183:
MOV	AX, 0FFFFh

loc_186:
POP	DS
POP	ES
POP	DI
POP	SI
POP	CX
POP	BP
retn
sub_156	ENDP



; Attributes: bp-based frame

sub_18D	PROC NEAR

arg_0= dword PTR  4
arg_4= dword PTR  8
arg_8= dword PTR  0Ch

PUSH	BP
MOV	BP, SP
PUSH	EAX
PUSH	ECX
PUSH	ESI
PUSH	EDI
PUSH	DS
PUSH	ES
SUB	ESI, ESI
SUB	EDI, EDI
SUB	ECX, ECX
LES	DI, [BP+arg_0]
LDS	SI, [BP+arg_4]
MOV	ECX, [BP+arg_8]
MOV	AX, CX
SHR	ECX, 2
CLD
REP movsd
MOV	CX, AX
AND	CX, 3
CLD
REP movsb
POP	ES
POP	DS
POP	EDI
POP	ESI
POP	ECX
POP	EAX
POP	BP
retn
sub_18D	ENDP




sub_1CB	PROC NEAR
MOV	AH, 10h
INT	16h		; KEYBOARD - GET ENHANCED KEYSTROKE (AT	model 339,XT2,XT286,PS)
			; Return: AH = scan code, AL = character
retn
sub_1CB	ENDP



; Attributes: bp-based frame

sub_1D0	PROC NEAR

arg_0= dword PTR  4
arg_4= dword PTR  8
arg_8= WORD PTR	 0Ch

PUSH	BP
MOV	BP, SP
PUSH	EAX
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	ES
MOV	EAX, [BP+arg_0]
MOV	CX, [BP+arg_8]

loc_1E0:
MOV	DX, AX
SHR	EAX, 4
AND	DX, 0Fh
CMP	DL, 0Ah
JB	SHORT loc_1F3
ADD	DL, 37h	; '7'
JMP	SHORT loc_1F6

loc_1F3:
ADD	DL, 30h	; '0'

loc_1F6:
PUSH	DX
LOOP	loc_1E0
LES	BX, [BP+arg_4]
MOV	CX, [BP+arg_8]

loc_1FF:
POP	AX
MOV	ES:[BX], AL
INC	BX
LOOP	loc_1FF
POP	ES
POP	DX
POP	CX
POP	BX
POP	EAX
POP	BP
retn
sub_1D0	ENDP ; sp-analysis failed



; Attributes: bp-based frame

sub_20E	PROC NEAR

arg_0= dword PTR  4

PUSH	BP
MOV	BP, SP
PUSH	AX
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	ES
PUSH	DS
MOV	AH, 3
SUB	BX, BX
INT	10h		; - VIDEO - READ CURSOR	POSITION
			; BH = page number
			; Return: DH,DL	= row,column, CH = cursor start	line, CL = cursor end line
LES	BX, [BP+arg_0]
SUB	CX, CX

loc_222:
CMP	BYTE PTR ES:[BX], 0
JZ	SHORT loc_22C
INC	CX
INC	BX
JMP	SHORT loc_222

loc_22C:
PUSH	BP
MOV	AX, 1301h
MOV	BX, 7
MOV	BP, WORD PTR [BP+arg_0]
INT	10h		; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
			; AL = mode, BL	= attribute if AL bit 1	clear, BH = display page number
			; DH,DL	= row,column of	starting cursor	position, CX = length of string
			; ES:BP	-> start of string
POP	BP
POP	DS
POP	ES
POP	DX
POP	CX
POP	BX
POP	AX
POP	BP
retn
sub_20E	ENDP

PUSH	BP
MOV	BP, SP
ADD	SP, 0FFE0h
PUSH	AX
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	SI
PUSH	DI
LEA	BX, [BP-20h]
INC	BX
PUSH	8
PUSH	SS
PUSH	BX
PUSH	large dword PTR	[BP+4]
CALL	sub_1D0
ADD	SP, 0Ah
MOV	BYTE PTR [BP-20h], 20h ; ' '
MOV	BYTE PTR [BP-17h], 0Dh
MOV	BYTE PTR [BP-16h], 0Ah
MOV	BYTE PTR [BP-15h], 0
LEA	BX, [BP-20h]
PUSH	SS
PUSH	BX
CALL	sub_20E
ADD	SP, 4
POP	DI
POP	SI
POP	DX
POP	CX
POP	BX
POP	AX
MOV	SP, BP
POP	BP
retn
PUSH	BP
MOV	BP, SP
ADD	SP, 0FFE0h
PUSH	AX
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	SI
PUSH	DI
LEA	BX, [BP-20h]
INC	BX
PUSH	8
PUSH	SS
PUSH	BX
PUSH	large dword PTR	[BP+4]
CALL	sub_1D0
ADD	SP, 0Ah
MOV	BYTE PTR [BP-20h], 20h ; ' '
MOV	BYTE PTR [BP-17h], 0
LEA	BX, [BP-20h]
PUSH	SS
PUSH	BX
CALL	sub_20E
ADD	SP, 4
POP	DI
POP	SI
POP	DX
POP	CX
POP	BX
POP	AX
MOV	SP, BP
POP	BP
retn
PUSH	BP
MOV	BP, SP
ADD	SP, 0FFF0h
PUSH	EAX
PUSH	EBX
PUSH	ECX
PUSH	EDX
PUSH	SI
PUSH	DI
LEA	DI, [BP-10h]
LEA	SI, [BP+4]
ADD	SI, 3
MOV	CX, 4

loc_2DB:
MOV	AL, SS:[SI]
OR	AL, AL
JZ	SHORT loc_2E6
MOV	SS:[DI], AL
INC	DI

loc_2E6:
DEC	SI
LOOP	loc_2DB
LEA	SI, [BP+8]
ADD	SI, 3
MOV	CX, 4

loc_2F2:
MOV	AL, SS:[SI]
OR	AL, AL
JZ	SHORT loc_2FD
MOV	SS:[DI], AL
INC	DI

loc_2FD:
DEC	SI
LOOP	loc_2F2
MOV	BYTE PTR SS:[DI], 20h ;	' '
MOV	BYTE PTR SS:[DI+1], 0Dh
MOV	BYTE PTR SS:[DI+2], 0Ah
MOV	BYTE PTR SS:[DI+3], 0
LEA	DI, [BP-10h]
PUSH	SS
PUSH	DI
CALL	sub_20E
ADD	SP, 4
POP	DI
POP	SI
POP	EDX
POP	ECX
POP	EBX
POP	EAX
MOV	SP, BP
POP	BP
retn
PUSH	BP
MOV	BP, SP
ADD	SP, 0FFF0h
PUSH	EAX
PUSH	EBX
PUSH	ECX
PUSH	EDX
PUSH	SI
PUSH	DI
LEA	DI, [BP-10h]
LEA	SI, [BP+4]
ADD	SI, 3
MOV	CX, 4

loc_348:
MOV	AL, SS:[SI]
OR	AL, AL
JZ	SHORT loc_353
MOV	SS:[DI], AL
INC	DI

loc_353:
DEC	SI
LOOP	loc_348
LEA	SI, [BP+8]
ADD	SI, 3
MOV	CX, 4

loc_35F:
MOV	AL, SS:[SI]
OR	AL, AL
JZ	SHORT loc_36A
MOV	SS:[DI], AL
INC	DI

loc_36A:
DEC	SI
LOOP	loc_35F
MOV	BYTE PTR SS:[DI], 0
MOV	BYTE PTR SS:[DI+1], 0
LEA	DI, [BP-10h]
PUSH	SS
PUSH	DI
CALL	sub_20E
ADD	SP, 4
POP	DI
POP	SI
POP	EDX
POP	ECX
POP	EBX
POP	EAX
MOV	SP, BP
POP	BP
retn


; Attributes: bp-based frame

sub_38F	PROC NEAR

arg_0= dword PTR  4
arg_4= WORD PTR	 8
arg_6= BYTE PTR	 0Ah

PUSH	BP
MOV	BP, SP
PUSH	BX
PUSH	CX
MOV	AX, [BP+arg_4]
MOV	BX, DS:word_DA
MUL	BX
movzx	BX, [BP+arg_6]
ADD	BX, AX
MOV	EAX, [BP+arg_0]
MOV	ECX, DS:dword_E2
MUL	ECX
MOV	EDX, EAX
movzx	EAX, BX
ADD	EAX, EDX
DEC	EAX
MOV	EDX, EAX
SHR	EDX, 10h
POP	CX
POP	BX
POP	BP
retn
sub_38F	ENDP



; Attributes: bp-based frame

sub_3C6	PROC NEAR

var_6= BYTE PTR	-6
var_5= BYTE PTR	-5
var_4= dword PTR -4
arg_0= dword PTR  4

PUSH	BP
MOV	BP, SP
ADD	SP, 0FFFAh
PUSH	BX
MOV	EAX, [BP+arg_0]
XOR	EDX, EDX
MOV	EBX, DS:dword_E2
DIV	EBX
MOV	[BP+var_4], EAX
MOV	AX, DX
MOV	BL, BYTE PTR DS:word_DA
DIV	BL
MOV	[BP+var_5], AL
INC	AH
MOV	[BP+var_6], AH
MOV	ECX, [BP+var_4]
MOV	DH, [BP+var_5]
MOV	DL, [BP+var_6]
XOR	EAX, EAX
MOV	AL, BYTE PTR DS:word_DA
SUB	AL, DL
INC	AL
POP	BX
MOV	SP, BP
POP	BP
retn
sub_3C6	ENDP


loc_409:
PUSH	BP
MOV	BP, SP
PUSH	BX
PUSH	CX
PUSH	DX
PUSH	SI
PUSH	DI
PUSH	ES
PUSH	DS
CMP	dword PTR [BP+8], 3FFh
JNB	SHORT loc_445
LES	BX, [BP+12h]
MOV	CX, [BP+8]
MOV	DL, [BP+0Eh]
XCHG	CL, CH
SHL	CL, 6
AND	DL, 3Fh
OR	CL, DL
MOV	DL, [BP+6]
MOV	DH, [BP+0Ch]
MOV	AX, [BP+10h]
MOV	AH, [BP+4]
AND	AH, 0Fh
INT	13h		; DISK -
JNB	SHORT loc_484
JMP	SHORT loc_482

loc_445:
MOV	DS:byte_F0, 10h
MOV	AX, [BP+10h]
MOV	DS:word_F2, AX
MOV	EAX, [BP+12h]
MOV	DS:dword_F4, EAX
MOV	AL, [BP+0Eh]
PUSH	AX
MOV	AL, [BP+0Ch]
XOR	AH, AH
PUSH	AX
PUSH	large dword PTR	[BP+8]
CALL	sub_38F
ADD	SP, 8
word_46C DW 0A366h
CLC
ADD	[BP+SI+656h], CL
MOV	SI, 0F0h ; '?
XOR	AX, AX
MOV	AH, [BP+4]
OR	AH, 40h
INT	13h		; DISK -
JNB	SHORT loc_484

loc_482:
JMP	SHORT loc_486

loc_484:
SUB	AX, AX

loc_486:
POP	DS
POP	ES
POP	DI
POP	SI
POP	DX
POP	CX
POP	BX
POP	BP
retn


; Attributes: bp-based frame

sub_48F	PROC NEAR

arg_0= WORD PTR	 4

PUSH	BP
MOV	BP, SP
PUSH	AX
PUSH	BX
PUSH	CX
PUSH	ES
XOR	AX, AX
MOV	ES, AX
MOV	AX, ES:word_46C
ADD	AX, [BP+arg_0]
MOV	CX, AX

loc_4A3:
MOV	BX, ES:word_46C
CMP	BX, CX
JA	SHORT loc_4AE
JMP	SHORT loc_4A3

loc_4AE:
POP	ES
POP	CX
POP	BX
POP	AX
POP	BP
retn
sub_48F	ENDP




sub_4B4	PROC NEAR
PUSH	AX
PUSH	DX
PUSH	ES
SUB	AX, AX
MOV	DX, 80h	; '

⌨️ 快捷键说明

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