Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

ASM32 - Задача на програмные прерывания

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Первый вопрос] >> ASM32 - Задача на програмные прерывания
Имя
Сообщение << Старые топики   Новые топики >>
ASM32 - Задача на програмные прерывания - 2010-02-07 16:17:29.880000   
asm_1001

Сообщений: 1
Оценки: 0
Присоединился: 2010-02-07 16:01:48.563333
Доброго времени суток уважаемые!

Прошу Вас помочь решить задачу по assembler.
quote:


Выполнить двумя способами — сначала в режиме программного контроля, далее модифицировать программу таким образом, чтобы события обрабатывались в режиме прерывания про­граммы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл":
М: NOP NOP JMP М.
Программа должна обеспечивать ввод последовательности ASCII-кодов деся­тичных цифр (не длиннее пяти), пере­кодировку в "8421", упаковку в деся­тичное число (первый введенный сим­вол — старшая цифра) и размещение в ячейке ОЗУ. ASCII-коды не-цифр иг­норировать


Способ первый:
RD #0 wr R1 ; накапливаем число RD #5 ; воспринимать максимум 5 цифр wr R5 ; сохраним RDI #101 ; чистим буфер out 1 ; для клавиатуры RDI #102 ; сброс ошибки out 1 ; для клавиатуры RDI #10 ; разрешаем использование МВУ OUT 1 ; для клавиатуры без прерываний (по опросу) RDI #103 ; устанавливаем посимвольный ввод out 1 ; для клавиатуры LOOP:IN 2 ; читаем регистр состояния клавиатуры DIV #10 ; делим на 10, чтобы второй разряд готовности стал в первом разряде WR R3 ; сохраним DIV #2 ; разделим на 2 MUL #2 ; умножим на 2 SUB R3 ; отнимем сохранное JZ LOOP ; если четное, то нет кода в буфере, идем на цикл IN 0 ; считываем код с клавиатуры wr R2 ; сохраним jz SAVE ; было просто нажатие на "Завершить ввод" sbi #48 ; &lt;\'0\' ;проверим на цифру js RESET ; игнорируем, на сброс клавиатуры sbi #10 ; &gt;\'9\' jns RESET ; игнорируем, на сброс клавиатуры adi #10 ;восстановим число 0-9 wr r2 ; сохраним rd r1 ; наше число mul #10 ; умножаем на 10 add r2 ; добавляем введенный символ wr r1 ; и на сохранение jrnz r5,RESET ; ждем максимум 5 цифр SAVE:rd #100 ;адрес ячейки, куда запишем результат wr r0 ; будем адресовать через R0 rd r1 ; введенное число wr @r0 ; сохраняем в памяти hlt ; останов RESET:RDI #101 ; команда сброса out 1 ; в клавиатуру RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе) out 1 ; в клавиатуру jmp LOOP ; цикл на чтение состояния клавиатуры
Помогите решить вторым способом.
К сожалению это нужно срочно [:(]
Используемый компилятор: Модель учебной ЦВМ. Почему то он у меня не понимает даже int 16h или скан клавы in al,60h. Но ВУЗ требует пользоваться им…(
Post #: 1
Страниц:  [1]
Все форумы >> [Первый вопрос] >> ASM32 - Задача на програмные прерывания







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.