|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.01.2015, 02:52 | #1 |
Новичок
Джуниор
Регистрация: 23.01.2015
Сообщений: 2
|
Получение символа с клавиатуры (Ассемблер)
Доброго времени суток, началась сессия и как обычно прижало. Я весь семестр провозился на работе и упустил очень важное, ассемблер. Прошу помочь с лабораторной. Я знаю для Вас это рас плюнуть и даю обещание учить в свободное от учебы и работы время этот язык, знаю его важность и прошу хорошую литературу.
Собственно само задание. Написать программу на языке Ассемблер, выполняющую следующие действия: программа принимает с клавиатуры целое число, введенное в одном из форматов: в двоичном, восьмеричном, десятичном, шестнадцатеричном или троичном. К этому числу она прибавляет некоторое заданное в тексте программы число и либо выводит результат на экран в одном из указанных форматов, либо преобразует его в формат BCD и затем выводит его десятичное представление. Предполагается, что все числа беззнаковые, и при выходе значения числа за пределы 0-65535 старшие разряды теряются. Формат числа - 2-ный. Формат выводы или формат, в который предварительно преобразовывается результат сложения - Двоичный Очень надеюсь на Ваше понимание и помощь. Если не можете помочь, то помогите хотя бы с ресурсом, где можно это сделать за небольшую плату и без обмана. |
23.01.2015, 09:15 | #2 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,601
|
На классическом ассемблере через прерывание на клавиатуру. Опкод INT. В интернете есть справочник по опкодам. Вообще на ассемблере считывание через порты ввода-вывода, то есть на асссемблере под дос типа драйвер пишется. Операционная система имеет значение; вы не указали операционную систему. В Windows используется синтаксис AT&T ассемблера, а в Unix/Linux семействах Intel синтаксис ассемблера. Для программирования под DOS / win98 /win95 требуются специализированные программы для компилирования ассемблерных листингов. В unix/linux системах инструменты поставляются с системой. В операционной системе windows начиная с windows 2000 и включая XP/vista/7 для считывания с клавиатуры используются функции ядра операционной систем (для программирования уровня ядра нужен windows DDK) ntoskrnl, функции драйверов и т.п. В данном случае, можно использовать IDE MASM подключив к ней стандартные заголовочные функции языка C типа scanf , printf, getchar, putchar и др. Прием числа с клавиатуры осуществляет функция scanf. На ассемблере существует две нотации передачи параметров - С и Паскаль. В одной из них параметры передаются с начала до конца (Паскаль нотация). В другой из них параметры передаются с конца в начало (С нотация) Параметры перед вызовом функции помещаются в стек инструкцией PUSH. Стек ограничен, и может быть сорван. Вызов функции осуществляется инструкцией CALL. Константы и переменные задаются в секции .DATA программы Вывод числа может быть осуществлен функцией printf. Учебник по ассемблеру на английском языке есть на сайте http://www.plantation-productions.co...ADosIndex.html
Пример на прерывания: http://inglorion.net/documents/tutor...stut/keyboard/ В ОС windows 2000/XP/7 пользовательская программа не может использовать прерывания и считывать с портов. Весь обмен с клавиатурой через ядро.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
23.01.2015, 13:04 | #3 | |
Новичок
Джуниор
Регистрация: 23.01.2015
Сообщений: 2
|
Цитата:
|
|
23.01.2015, 13:06 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да. Turbo Assembler. Если конечно под ДОСом писать. Иначе FASM к примеру. Он умеет компилировать под ДОС.
I'm learning to live...
|
23.01.2015, 13:52 | #5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
код ввода строки с консолы в DOS выглядит примерно так (тут используется 10-я функция 21-го прерывания): Код:
Цитата:
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вывести ASCII символ введенного с клавиатуры символа? | danek130995 | Помощь студентам | 1 | 04.11.2014 01:10 |
Получение кода символа | Tribian | Общие вопросы C/C++ | 1 | 24.04.2013 09:38 |
Получение определенного символа из переменной(по номеру) | Crystallon | JavaScript, Ajax | 1 | 29.11.2011 16:48 |
Повтор символа при зажатии клавиши клавиатуры | veen | Общие вопросы Delphi | 7 | 09.01.2011 15:05 |
ассемблер, замена символа в строке | tiger | Помощь студентам | 3 | 05.11.2009 15:25 |