NASM - Как вы перемещаете 8-битный регистр в полный 32-битный регистр?

Я пишу код ассемблера NASM, и мне нужно выполнить индексированную адресацию. У меня индекс хранится в $ al, но x86 не позволит вам использовать $ al в качестве регистра индекса, и я уже использую $ bl, поэтому я не могу использовать $ bx. Поэтому мне нужно поместить байт, содержащийся в $ al, в 32-но регистр, такой как $ ecx, однако, когда я пытаюсь, он выдаетнедопустимая комбинация кода операции и операнда ошибка. Есть какой-либо способ сделать это?

    sub     al, 97                  ; char - 97

    push    ecx                     ; b/c al cant be used as indexing register
    mov     ecx, al                 ; move byte in al into ecx

    mov     bl, [table + ecx]       ; value_at(first_table_addr + char) -> bx

    pop     ecx

Ответы на вопрос(1)

Ваш ответ на вопрос