论坛: 编程破解 标题: 仙剑奇侠传DOS版小怪清除程序 复制本贴地址    
作者: scandisk [scandisk]    论坛用户   登录
DATA SEGMENT
FILENAME DB 'D:\PAL\1.RPG',0
FILEBUFF DB 6 DUP(0)
FILEHAND DW 0000H
RECORD1 DW 0000H
NPC DW 0157H,0227H,0628H,0729H,08B8H,1184H,0D98H,0D99H ;有不动小怪特征的NPC的记录号
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
    MOV AX,DATA
    MOV DS,AX
    MOV ES,AX
    MOV DX,OFFSET FILENAME
    MOV AH,3DH
    MOV AL,02H
    INT 21H            ;打开文件
    MOV FILEHAND,AX
    MOV AH,42H
    MOV AL,0
    MOV BX,FILEHAND
    XOR CX,CX
    MOV DX,324CH
    INT 21H          ;;移动文件指针到324CH
    MOV CX,5332
DXH:                  ;大循环开始     
    PUSH CX
    MOV AH,3FH
    MOV CX,6
    LEA DX,FILEBUFF
 
    INT 21H            ;从文件中读6个字节到文件缓冲区
    INC RECORD1        ;每读取到一条记录,记录数加1
    MOV CX,3
    MOV AX,0000H
    LEA DI,FILEBUFF
   
    CLD
    REPNZ SCASW        ;;扫描3个字,看是否有0000H
    JZ NEXT          ; 有,则转入下一条记录
    SUB DI,4          ; ;没有,则比较8888是否为05
    CMP WORD PTR[DI],0005H
    JNE NEXT          ;;不是05则转入下一条记录
   
    MOV AX,RECORD1
    LEA DI,NPC
    MOV CX,8
    REPNZ SCASW
    JZ NEXT            ;比较是否本条记录为NPC的脚本
   
    LEA DI,FILEBUFF
    MOV WORD PTR[DI],0000H    ;修改7777为0
    MOV AH,42H
    MOV AL,1
 
    MOV CX,0FFFFH
    MOV DX,-6        ;文件指针前移6个字节
    INT 21H
   

    MOV AH,40H

    MOV CX,6
    LEA DX,FILEBUFF
    INT 21H            ;;将文件缓冲区中的字节写入文件


    NEXT:
   
    MOV AH,42H
    MOV AL,1

    XOR CX,CX
    MOV DX,26
    INT 21H
    POP CX
    LOOP DXH
 
   
EXIT:
    MOV AH,3EH

    INT 21H          ;关闭文件
    MOV AH,4CH
    INT 21H
MAIN ENDP
CODE ENDS
    END MAIN 


地主 发表时间: 20-04-02 03:55

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号