когда я пишу код ниже заданным способом1:
<------------------from here------------------------>
COMERR: <--------------
MOV DX,BADCOM
MOV AH,9
INT 33
STI
SERINIT:
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET FCB
MOV AH,15
INT 33
OR AL,AL
JNZ COMERR ;<== (error1)Relative jump is out of range
XOR AX,AX
INC AX
MOV [FCB+14],AX
MOV AH,39
INT 33
<-------------------till here------------------------>
, тогда я получаю ошибку "Относительный скачок вне диапазона". потому что (я думаю) метка «COMERR:» достаточно далека от инструкции «JNZ COMERR».
С другой стороны, когда я пишу код, указанный ниже2:
<-------------------from here------------------------>
SERINIT:
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET FCB
MOV AH,15
INT 33
OR AL,AL
JNZ COMERR ;<== (error2)Phase error between passes
XOR AX,AX
INC AX
MOV [FCB+14],AX
MOV AH,39
INT 33
COMERR: ;<--------------------
MOV DX,BADCOM
MOV AH,9
INT 33
STI
<-------------------------till here----------------------------->
тогда я получаю ошибку «Ошибка фазы между проходами», потому что (я думаю), что метка «COMERR:» расположена после инструкции JUMP (JNZ COMERR :), и должна быть перед инструкцией «JNZ COMERR:».
Пожалуйста, объясните мне, как сохранить этот код.