Ошибка "Fatal: No program entry point" GUI Turbo Assembler x64 (TASM)
При запуске кода TASM в программе GUI Turbo Assembler x64 выдаётся ошибка: "Fatal: No program entry point". Эта ошибка выдаётся после подключения файла ioproc.asm, но этот файл я убрать никак не могу, без него код выдаёт много ошибок. Точка входа и выхода в коде есть, что может быть ещё не так? Код программы:
include io.asm
sstack segment stack
db 128 dup (?)
sstack ends
sdata segment
hi db 'Hello!','$'
n dw 10
a dw 10 dup(2 dup(1,2,3,4,5))
b dw 10 dup (0)
dhi dw hi
sdata ends
scode segment
assume cs:scode,ds:sdata,ss:sstack
start: ; Define the entry point
mov ax,sdata
mov ds,ax
mov dx, n
mov bp, -20
l2:
add bp, 20
mov cx, n
mov SI, -2
mov ax, 0
l1:
add SI, 2
outWord a[bp][SI]
outch ' '
loop l1
newline
dec dx
cmp dx, 0
jne l2
mov dx, n
mov si, -2
l3:
add si, 2
mov cx, n
mov bp, -20
l4:
add bp, 20
add ax, a[bp][si]
outWord a[bp][si]
outch ' '
add ax, a[bp][si]
mov b[si], ax
outWord b[si]
outch ' '
outWord ax
outch ' '
loop l4
newline
dec dx
cmp dx, 0
jne l3
outWord b[si]
outch ' '
mov dx,dhi
outstr
finish
scode ends
end start
Код из файла ioproc.asm
; Њ®¤г«м IOPROC: Џp®жҐ¤гp ўў®¤ -ўлў®¤
public procnl,procoutnum,procflush,procinch,procinint
iocode segment
assume cs:iocode
;‚лў®¤ нЄp
procnl proc far
push dx
push ax
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
pop ax
pop dx
ret
procnl endp
procoutnum proc far
push bp
mov bp,sp
push ax
push dx
push si
sub sp,6
cmp dh,1
jne pon0
cmp ax,0
jge pon0
mov dh,2
neg ax
pon0: push dx
xor si,si
pon1: mov dx,0
div cs:ten
add dl,'0'
mov [bp-8+si],dl
inc si
or ax,ax
jnz pon1
pop dx
cmp dh,2
jne pon2
mov byte ptr [bp-8+si],'-'
inc si
pon2: mov dh,0
mov ah,2
pon21: cmp dx,si
jle pon3
push dx
mov dl,' '
int 21h
pop dx
dec dx
jmp pon21
pon3: dec si
mov dl,[bp-8+si]
int 21h
or si,si
jnz pon3
add sp,6
pop si
pop dx
pop ax
pop bp
ret
ten dw 10
procoutnum endp
;‚ў®¤ б Є« ўЁ вгpл
maxd db 128
sizeb db 0
buf db 128 dup(?)
posb db 0
readbuf proc near
push ax
push dx
push ds
mov dx,cs
mov ds,dx
lea dx,buf-2
mov ah,0Ah
int 21h
call procnl
inc cs:sizeb
mov cs:posb,0
pop ds
pop dx
pop ax
ret
readbuf endp
procflush proc far
push ax
mov cs:sizeb,0
mov cs:posb,0
mov ah,0Ch
mov al,0
int 21h
pop ax
ret
procflush endp
procinch proc far
push bx
princh1:
mov bl,cs:posb
inc bl
cmp bl,cs:sizeb
jb princh2
jne princh10
cmp al,0
jne princh2
princh10:
call readbuf
jmp princh1
princh2:
mov cs:posb,bl
mov bh,0
mov al,cs:buf[bx-1]
pop bx
ret
procinch endp
procinint proc far
push bx
push cx
push dx
prinint1:
mov al,0
call procinch
cmp al,' '
je prinint1
mov dx,0
mov cx,0
cmp al,'+'
je prinint2
cmp al,'-'
jne prinint3
mov cl,1
prinint2:
mov al,1
call procinch
prinint3:
cmp al,'9'
ja prinint4
sub al,'0'
jb prinint4
mov ch,1
xor ah,ah
mov bx,ax
mov ax,dx
mul cs:prten
jc provfl
add ax,bx
jc provfl
mov dx,ax
jmp prinint2
prinint4:
mov ax,dx
cmp ch,1
jne prnodig
cmp cl,1
jne prinint5
cmp ax,8000h
ja provfl
neg ax
prinint5:
pop dx
pop cx
pop bx
ret
prten dw 10
provfl: lea cx,prmsgovfl
jmp prerr
prnodig: lea cx,prmsgnodig
prerr: push cs
pop ds
lea dx,prmsg
mov ah,9
int 21h
mov dx,cx
mov ah,9
int 21h
call procnl
mov ah,4Ch
int 21h
prmsg db 'ЋиЁЎЄ ЇpЁ ўў®¤Ґ зЁб« : ','$'
prmsgovfl db 'ЇҐpҐЇ®«ҐЁҐ ','$'
prmsgnodig db 'Ґв жЁдpл ','$'
procinint endp
iocode ends
end