Ввести содержимое регистра на экран - Assembler

Узнай цену своей работы

Формулировка задачи:

Имя регистра задаётся с клавиатуры. Нужен по-возможности компактный код. Пытался считать хэш с ввода, и по нему перейти в таблице, но получаю коллизию - хэш строк DX и SI получается одинаковым. Одним словом, нужен алгоритм для: "Если ввели BP, то отправить его в AX!" (для вывода на экран). Кто-что может посоветовать? 10 подряд/идущих 'CMP' просьба не предлагать. Нужно что-то по типу 'XLAT', да чтоб без лишних байтиков. Спасибо..

Решение задачи: «Ввести содержимое регистра на экран»

textual
Листинг программы
org     100h
        pusha
        mov     bp,sp
        mov     dx,dbEnt
@@00:   mov     ah,9
        int     21h
        mov     ah,10
        mov     dx,dbMax
        int     21h
        mov     ax,[dwBuf]
        mov     cx,8
        mov     di,dbReg
        repnz   scasw
        ;тут анализ флагов
        mov     si,cx
        shl     si,1
        mov     ax,[bp+si]
        mov     sp,bp
        popa
        ret
dbErr   db      10,13,'wrong register name'
dbEnt   db      10,13,'Enter register name:$'
dbReg   db      'axbxcxdxsidibpsp';регистры нужно записать так, чтобы значение СХ совпадало со сзначением индекса в стеке
dbMax   db      3
        db      ?
dwBuf   dw      3 dup (?)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5
Похожие ответы