Ввести содержимое регистра на экран - 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 (?)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д