Ассемблер: проблема с инициализацией переменной - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь найти максимальное число повторений.

Я получаю ошибку, когда пытаюсь инициализировать переменную:

unknown opcode byte: Fh
Not supported yet. Not 8086 instruction.

Так вот мой код:

#make_COM#
    ORG 100H
    ARRAY DB 5,2,7,12,8,2,8,3,5,2,3,2,13,2
    ARRAYcnt DW 13
    ARRAYmax DW 0
    MOV AH,0
    MOV CX,ARRAYcnt
    MOV BX,0
    MOV AL,0
    MOV DL,ARRAY[BX] 
    xor si,si  

    External:  
    push CX
    MOV AH,0
    MOV DL,ARRAY[BX]
    MOV CX,ARRAYcnt
    Internal:
    CMP DL,ARRAY[si]
    JE label1
    continiue:
    INC si
    LOOP Internal
    xor si,si
    CMP AH,AL
    JG label2:
    continiue1:
    pop CX 
    INC BX
    LOOP External  

    HLT

    label1:INC AH
           JMP continiue
    label2:MOV AL,AH
           push BX  
           MOV BX,ARRAY[BX]
           MOV ARRAYmax,BX
           pop BX
           JMP continiue1

После этого это ошибка: ARRAYcnt DW 15

Я изменяю DW на DB.

Также я попытался записать 15 как 0Fh.Нет результата.

Пожалуйста, помогите

1 Ответ

2 голосов
/ 16 апреля 2020

Проблема в том, что выполнение кода начинается с местоположения 100h, но в вашей программе есть данные, а не код. Таким образом, процессор пытается выполнить ваши данные как код, вызывая проблемы, которые вы наблюдаете. Чтобы это исправить, переместите ваши данные с пути исполнения, например, в конец программы.

...