📄 ahadisk.asm
字号:
call sub_14
mov si,data_100
mov di,3A0h
cld ; Clear direction
call sub_35
inc di
call sub_35
mov data_100,si
mov dh,data_97
mov dl,14h
mov si,3A0h
call sub_14
mov si,data_100
lodsw ; String [si] to ax
mov word ptr data_98,ax
mov data_100,si
mov word ptr ds:[1A9h],0
mov word ptr ds:[1ABh],ax
call sub_32
mov dh,byte ptr ds:[1AFh]
mov dl,2Dh ; '-'
sub dl,dh
mov dh,data_97
mov si,0EDh
call sub_14
mov bl,50h ; 'P'
xor bh,bh ; Zero register
cmp data_31,0
jne loc_189 ; Jump if not equal
shr bx,1 ; Shift w/zeros fill
loc_189:
dec bx
mov ax,2
mul bx ; dx:ax = reg * ax
mov bl,data_56
xor bh,bh ; Zero register
mul bx ; dx:ax = reg * ax
mov bl,data_53
add ax,bx
mov bx,word ptr data_98
cmp byte ptr ds:[2423h],1
je loc_190 ; Jump if equal
shl bx,1 ; Shift w/zeros fill
loc_190:
sub ax,bx
mov bx,200h
mul bx ; dx:ax = reg * ax
mov word ptr ds:[1A9h],dx
mov word ptr ds:[1ABh],ax
call sub_32
mov dh,byte ptr ds:[1AFh]
mov dl,44h ; 'D'
sub dl,dh
mov dh,data_97
mov si,0EDh
call sub_14
mov al,data_99
cmp data_95,al
jne loc_191 ; Jump if not equal
call sub_13
retn
loc_191:
inc data_95
inc data_97
jmp loc_188
sub_31 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_32 proc near
mov di,0EDh
call sub_33
mov word ptr ds:[1ADh],bx
mov byte ptr ds:[1AFh],bl
jz loc_195 ; Jump if zero
loc_192:
cld ; Clear direction
or al,30h ; '0'
stosb ; Store al to es:[di]
mov word ptr ds:[1A5h],0
mov word ptr ds:[1A7h],0
push di
mov di,word ptr ds:[1B0h]
add di,word ptr ds:[1B2h]
call sub_34
pop di
mov ax,word ptr ds:[1A7h]
sub word ptr ds:[1ABh],ax
jnc loc_193 ; Jump if carry=0
dec word ptr ds:[1A9h]
loc_193:
mov ax,word ptr ds:[1A5h]
sub word ptr ds:[1A9h],ax
dec word ptr ds:[1ADh]
cmp word ptr ds:[1ADh],0
je loc_195 ; Jump if equal
call sub_33
loc_194:
cmp bx,word ptr ds:[1ADh]
je loc_192 ; Jump if equal
push ax
mov al,30h ; '0'
stosb ; Store al to es:[di]
pop ax
dec word ptr ds:[1ADh]
cmp word ptr ds:[1ADh],0
jne loc_194 ; Jump if not equal
loc_195:
mov ax,word ptr ds:[1ABh]
or al,30h ; '0'
cld ; Clear direction
stosb ; Store al to es:[di]
mov al,0
stosb ; Store al to es:[di]
retn
sub_32 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_33 proc near
mov dx,word ptr ds:[1A9h]
mov ax,word ptr ds:[1ABh]
mov word ptr ds:[1B0h],0
mov word ptr ds:[1B2h],0
cmp dx,0
jne loc_196 ; Jump if not equal
cmp ax,2710h
jb loc_197 ; Jump if below
loc_196:
mov bx,2710h
mov word ptr ds:[1B0h],8
div bx ; ax,dx rem=dx:ax/reg
loc_197:
cmp ax,0Ah
jb loc_200 ; Jump if below
mov word ptr ds:[1B2h],6
xor dx,dx ; Zero register
mov bx,offset 1C8h
loc_198:
cmp ax,[bx]
jge loc_199 ; Jump if > or =
sub word ptr ds:[1B2h],2
sub bx,2
jmp short loc_198
loc_199:
mov bx,[bx]
div bx ; ax,dx rem=dx:ax/reg
loc_200:
mov bx,word ptr ds:[1B0h]
add bx,word ptr ds:[1B2h]
shr bx,1 ; Shift w/zeros fill
retn
sub_33 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_34 proc near
and al,0Fh
cbw ; Convrt byte to word
push ax
mov bx,offset 1C2h
mov bx,[bx+di]
mul bx ; dx:ax = reg * ax
add word ptr ds:[1A7h],ax
jnc loc_201 ; Jump if carry=0
inc dx
loc_201:
add word ptr ds:[1A5h],dx
mov bx,offset 1B4h
pop ax
mov bx,[bx+di]
mul bx ; dx:ax = reg * ax
add word ptr ds:[1A5h],ax
retn
sub_34 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_35 proc near
lodsb ; String [si] to al
call sub_36
stosw ; Store ax to es:[di]
lodsb ; String [si] to al
call sub_36
stosw ; Store ax to es:[di]
retn
sub_35 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_36 proc near
mov ah,al
and ah,0Fh
mov cl,4
shr al,cl ; Shift w/zeros fill
and al,0Fh
cmp al,0Ah
jge loc_202 ; Jump if > or =
add al,30h ; '0'
jmp short loc_203
db 90h
loc_202:
add al,37h ; '7'
loc_203:
cmp ah,0Ah
jge loc_204 ; Jump if > or =
add ah,30h ; '0'
jmp short loc_ret_205
db 90h
loc_204:
add ah,37h ; '7'
loc_ret_205:
retn
sub_36 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_37 proc near
mov al,data_29
mov bx,offset data_30
cbw ; Convrt byte to word
add bx,ax
mov al,[bx]
mov data_31,ax
retn
sub_37 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_38 proc near
mov ah,1
mov cx,7
int 10h ; Video display ah=functn 01h
; set cursor mode in cx
mov ah,3
mov bh,data_104
int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
mov data_108,dh
mov data_109,dl
mov di,137h
mov data_101,0
loc_206:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,0Dh
jne loc_207 ; Jump if not equal
retn
loc_207:
cmp al,1Bh
jne loc_208 ; Jump if not equal
pop ax
jmp loc_41
loc_208:
cmp al,10h
je loc_209 ; Jump if equal
cmp ax,5300h
jne loc_210 ; Jump if not equal
loc_209:
call sub_41
call sub_41
jmp short loc_206
loc_210:
cmp ax,4B00h
je loc_211 ; Jump if equal
cmp al,8
jne loc_212 ; Jump if not equal
loc_211:
call sub_41
jmp short loc_206
loc_212:
cmp al,30h ; '0'
jb loc_213 ; Jump if below
cmp al,39h ; '9'
jg loc_213 ; Jump if >
cmp data_101,2
je loc_213 ; Jump if equal
cld ; Clear direction
stosb ; Store al to es:[di]
inc data_101
inc data_109
call sub_10
jmp short loc_206
loc_213:
call sub_11
jmp short loc_206
sub_38 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_39 proc near
mov si,offset data_33+6 ; (' ')
loc_214:
cmp al,0
je loc_215 ; Jump if equal
add si,7
dec al
jmp short loc_214
loc_215:
mov di,offset data_189
loc_216:
lodsb ; String [si] to al
cmp al,0
jne loc_217 ; Jump if not equal
retn
loc_217:
stosb ; Store al to es:[di]
sub_39 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_40 proc near
jmp short loc_216
sub_40 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_41 proc near
cmp data_101,0
je loc_ret_218 ; Jump if equal
dec di
dec data_101
dec data_109
call sub_42
mov al,20h ; ' '
call sub_10
call sub_42
loc_ret_218:
retn
sub_41 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_42 proc near
mov ah,2
mov bh,data_104
mov dh,data_108
mov dl,data_109
int 10h ; Video display ah=functn 02h
; set cursor location in dx
retn
sub_42 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_43 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]
cmp cx,0
je loc_219 ; Jump if equal
mov di,offset data_113
mov si,data_4e
mov cx,6
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
loc_219:
pop ds
call sub_44
mov di,offset data_115
mov si,data_92
mov cx,6
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
retn
sub_43 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_44 proc near
push es
mov si,data_92
mov es,data_91
mov di,data_4e
mov cx,6
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
pop es
retn
sub_44 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_45 proc near
call sub_28
jnc loc_220 ; Jump if carry=0
retn
loc_220:
call sub_43
retn
sub_45 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_46 proc near
call sub_28
jnc loc_221 ; Jump if carry=0
clc ; Clear carry flag
retn
loc_221:
cmp data_187,6666h
je loc_222 ; Jump if equal
mov data_92,3CEh
mov ah,data_65
call sub_47
mov byte ptr data_184+26h,al ; ('')
mov byte ptr data_184+28h,ah ; ('')
call sub_43
retn
loc_222:
cmp data_92,3AAh
jne loc_ret_223 ; Jump if not equal
mov data_92,0D5h
call sub_44
loc_ret_223:
retn
sub_46 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_47 proc near
cmp ah,0Ah
jl loc_226 ; Jump if <
mov al,31h ; '1'
loc_224:
sub ah,0Ah
cmp ah,0Ah
jl loc_225 ; Jump if <
add al,1
jmp short loc_224
loc_225:
or ah,30h ; '0'
retn
loc_226:
or ah,30h ; '0'
mov al,20h ; ' '
retn
sub_47 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_48 proc near
cld ; Clear direction
mov di,offset 14Dh
loc_227:
mov al,data_65
stosb ; Store al to es:[di]
mov al,data_64
stosb ; Store al to es:[di]
mov al,data_66
stosb ; Store al to es:[di]
mov al,2
stosb ; Store al to es:[di]
inc data_66
mov al,data_66
cmp al,data_56
jle loc_227 ; Jump if < or =
mov data_66,1
retn
sub_48 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_49 proc near
pop ax
mov word ptr ds:[221h],ax
mov data_82,21E2h
mov al,byte ptr ds:[21Ah]
mov data_66,al
mov data_68,28E9h
mov data_67,1FFh
mov data_69,4Ah ; 'J'
mov data_70,0C5h
mov data_85,27F1h
call sub_75
mov data_82,220Dh
mov ax,word ptr ds:[242Ch]
mov cl,byte ptr ds:[21Ah]
add cl,al
cmp cl,data_56
jle loc_228 ; Jump if < or =
inc data_64
sub cl,data_56
loc_228:
mov data_66,cl
call sub_75
inc byte ptr ds:[21Ah]
jmp word ptr ds:[221h]
;哌哌 External Entry into Subroutine 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
sub_50:
mov si,offset data_220
mov cx,word ptr ds:[21Dh]
inc cx
sub cx,si
jbe loc_229 ; Jump if below or =
mov
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -