2016-04-17 10 views
2

アセンブリを使用してバイナリ検索アルゴリズムを理解しようとしましたが、コードをアセンブルしようとするとエラーNear jump or call to different CSが発生しています。エラーは、JMPまたはその変形命令の1つを使用した行です。私はTASMを使用していて、私のコードは次のとおりです。あなたのCODE SEGMENTTASMの "ジャンプ中または別のCSへの呼び出し"エラー

DATA SEGMENT 
ARR DW 0000H,1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H,9999H 
LEN DW ($-ARR)/2 
KEY EQU 7777H 
MSG1 DB "KEY IS FOUND AT " 
RES DB " POSITION",13,10," $" 
MSG2 DB "KEY NOT FOUND!!!.$" 
DATA ENDS 
CODE SEGMENT 
ASSUME DS:DATA CS:CODE 
START: 
    MOV AX,DATA 
    MOV DS,AX 
    MOV BX,00 
    MOV DX,LEN 
    MOV CX,KEY 
AGAIN: CMP BX,DX 
    JA FAIL 
    MOV AX,BX 
    ADD AX,DX 
    SHR AX,1 
    MOV SI,AX 
    ADD SI,SI 
    CMP CX,ARR[SI] 
    JAE BIG 
    DEC AX 
    MOV DX,AX 
    JMP AGAIN 
    BIG:JE SUCCESS 
    INC AX 
    MOV BX,AX 
    JMP AGAIN 
    SUCCESS: ADD AL,01 
    ADD AL,'0' 
    MOV RES,AL 
    LEA DX,MSG1 
    JMP DISP 
    FAIL: LEA DX,MSG2 
    DISP: MOV AH,09H 
    INT 21H 
    MOV AH,4CH 
    INT 21H  
    CODE ENDS 
    END START 
+0

組立ラインをコメントする習慣を取ってください。 3ヶ月であなたはプログラムが何をしているのか、*どのように*を覚えていないでしょうか。 – Seki

+0

このコードはEMU8086の構文があいまいではないので@Sekiが提供する答えはTASM(およびMASM)のために修正する必要があるため、 –

答えて

1

、あなたは(ライン10で)ASSUMEでセグメント宣言を分離するためのコマが欠落しています。それを次のように変更してください:

ASSUME DS:DATA, CS:CODE