open watcom IDE의 서적 루트 키트 arsenal에서 16 비트 어셈블리 코드 조각을 컴파일하려고합니다. "여러 시작 주소를 찾을 수 없습니다"라는 오류가 표시됩니다. 매우 제한된 어셈블리 지식을 가지고 있기 때문에 그것을 분류 할 수 없었습니다. 다음 코드입니다.열린 와콤 오류가있는 16 비트 어셈블리 코드 컴파일 (여러 시작 주소가 있음)
CSEG SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG
ORG 100H
_here:
JMP _main
JMP _overData
_buffer DB 512 DUP('W')
_terminator DB 'Z'
_index DW 0H
_oldISR DD 0H
_chkISR DD 0h
_overData:
_getBufferAddr:
STI
MOV DX, CS
LEA DI,_buffer
IRET
_hookBIOS:
PUSH AX
PUSH BX
PUSHF
CALL CS:_oldISR
MOV AH, 01H
PUSHF
CALL CS:_chkISR
CLI
PUSH DS
PUSH CS
POP DS
jz _hb_Exit
LEA BX,_buffer
PUSH SI
MOV SI,WORD PTR[_index]
MOV DS:[BX+SI],AL
INC SI
MOV WORD PTR[_index], SI
POP SI
_hb_Exit:
POP DS
POP AX
POP BX
STI
IRET
_install:
LEA DX,_getBufferAddr
MOV CX,CS
MOV DS,CX
MOV AH,25H
MOV AL,187
INT 21H
MOV AH,35H
MOV AL,9H
INT 21H
MOV WORD PTR _oldISR[0],BX
MOV WORD PTR _oldISR[2],ES
MOV AH, 35H
MOV AL,16H
INT 21H
MOV WORD PTR _chkISR[0],BX
MOV WORD PTR _chkISR[2],ES
MOV AH,25H
MOV AL,9H
MOV CX,CS
MOV DS,CX
LEA DX,_hookBIOS
INT 21H
RET
PUBLIC _main
_main:
PUSH BP
MOV BP,SP
MOV AX,CS
MOV SS,AX
LEA AX,_localStk
ADD AX,100H
CALL NEAR PTR _install
MOV AH, 31H
MOV AL,0
MOV DX, 200H
INT 21H
POP BP
RET
PUBLIC _localStk
_localStk DB 256 DUP(?)
CSEG ENDS
END _here
친절하게 도와주세요.
만 추측하지만, _main', 그것은 자체 라이브러리가있는 표준 라이브러리에 링크되어 있습니까? 나는 여기에'_main'을 만들 이유가 없다. (또는 그 이름을 정직하게 사용하는 것은 정직하다.) –