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

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

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

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

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

textual
Листинг программы
  1. org     100h
  2.         pusha
  3.         mov     bp,sp
  4.         mov     dx,dbEnt
  5. @@00:   mov     ah,9
  6.         int     21h
  7.         mov     ah,10
  8.         mov     dx,dbMax
  9.         int     21h
  10.         mov     ax,[dwBuf]
  11.         mov     cx,8
  12.         mov     di,dbReg
  13.         repnz   scasw
  14.         ;тут анализ флагов
  15.         mov     si,cx
  16.         shl     si,1
  17.         mov     ax,[bp+si]
  18.         mov     sp,bp
  19.         popa
  20.         ret
  21. dbErr   db      10,13,'wrong register name'
  22. dbEnt   db      10,13,'Enter register name:$'
  23. dbReg   db      'axbxcxdxsidibpsp';регистры нужно записать так, чтобы значение СХ совпадало со сзначением индекса в стеке
  24. dbMax   db      3
  25.         db      ?
  26. dwBuf   dw      3 dup (?)

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


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

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

13   голосов , оценка 3.538 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы