2009-10-28 3 views
0

Я пишу программу в сборке, используя архитектуру MIPS для класса, и мне трудно понять, как захватить входной символ пользователем и сохранить его в регистре для обработки.Сборка и обработка прерываний

Программа откроет консоль, выдает сообщение, пользователь может затем ввести символ, а затем это определит, что должно произойти дальше в программе.

Как я уже сказал, мне трудно понять, как захватить персонажа, чтобы я мог воздействовать на него в программе.

благодаря

+0

Что это нужно делать с обработкой прерываний? Ваш вопрос немного расплывчатый ... – Artelius

+0

Я был в понимании, что программа будет в бесконечном цикле, а затем, когда пользователь нажал клавишу, это вызовет прерывание, изменив регистры, а затем указанное прерывание должно быть обработано и управление возвратилось к месту в цикле, в котором оно произошло. Извините, мой вопрос неясен. Я не уверен, как дальше прояснить. спасибо – ihtkwot

+0

Я предполагаю, что мой вопрос заключается в использовании архитектуры MIPS, какие регистры мне нужно изменить, чтобы вход с клавиатуры распознавался, сохранялся и обрабатывался. Надеюсь, это яснее. – ihtkwot

ответ

0

Это очень хорошая отправная точка: MIPS Quick Tutorial

Вот отрывок из учебника

li $v0, 5   # load appropriate system call code into register $v0; 
        # code for reading integer is 5 
syscall   # call operating system to perform operation 
sw $v0, int_value # value read from keyboard returned in register $v0; 
        # store this in desired location 

Вы не будете работать непосредственно с прерываниями с любой сборки вы запись в пользовательском пространстве.

0

Запись кода исключения. Процедура обслуживания прерывания (исключение) начинается с 0x80000180 (на QtSpim, PCSpim) Прочитайте регистр клавиатуры. Данные равны 0xFFFF0004. Возьмите символ. Затем вернитесь из исключения.

Или вы можете опросить статус клавиатуры на 0xFFFF0000. Когда готовый бит включен, прочитайте данные.

jjc.hydrus.net/cs61c/handouts/interrupts2.pdf

Смежные вопросы