Вопрос № 90828: Здравствуйте друзья! Знающих уже, наверное, задрали эти вопросы, часто читаю ответы на них в рассылке, но вот сам занялся изучением Ассемблера и сразу тупик.
Изучать начал с самой рекомендованной книги О. Калашникова «Ассемблер это просто».
..Вопрос № 90833: Не справляюсь с задачей: Ввести с клавиатуры целое число из диапазона 0-255 и вывести на дисплей эквивалентный этому числу ASCII-символ. Это всё в ассемлере. Очень нужен исходник с комментариями. Лучше на ТАSM. У меня WinXP, 900 Селерон. Заранее благ...Вопрос № 90890: Доброго времени суток, уважаемые эксперты! В теории разницы между теорией и практикой не существует, а вот на практике - разница огромна...
Вроде, всё понятно, а как написать код - дуб дубом...
Есть три задачи. Помогите, пожалуйста, с ними разобр...
Вопрос № 90.828
Здравствуйте друзья! Знающих уже, наверное, задрали эти вопросы, часто читаю ответы на них в рассылке, но вот сам занялся изучением Ассемблера и сразу тупик.
Изучать начал с самой рекомендованной книги О. Калашникова «Ассемблер это просто».
Ну не понятны мне мозги программистов. В 17 пунктах разжевывается, как установить
MASM (100 из 100 людей знакомых с компьютером запросто сделают это сами), а ассемблирование и компоновку (судя по книге) компьютер сделает сам. Вы лучше это разжуйте. Установил я MASM 6.11, создал текстовый файл PROG. ASM, а дальше что,
вот где надо разжевывать. В папке BIN , 7, как я полагаю, запускных программ ( exe.) Рамки с белым фоном и вверху с синяя полоса с белыми кнопками. Так вот все они, кроме одной, при запуске мигнут черным фоном на мониторе и закрываются. А открывается только программа CREF. Набираю ML.,EXE PROG. ASM /AT ….и тишина, может кому то и смешно, мне не очень. Кому не лень растолкуйте по пунктам, (как в том анекдоте, нажмите на клавишу ENTER, а теперь, что бы заработало, отпустите клавишу). У меня стоит ОС Windows XP
Professional SP 2. Буду признателен.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Дубков К.П.!
Работа с компиляторами MASM и TASM возможна только в командной строке.
1)Для этого создаете на рабочем столе ярлык,
в свойствах ярлыка закладка программa меняете:
в поле коммандная строка пишете:C:WINDOWScommand.com
в поле рабочая папка пишете:C:masmin это если у Вас в эту папку установлен MASM.
В эту папку Вы будете записывать и свои программы.
Kликнув на ярлыке Вы сразу попадаете в папку с MASM и режиме сеанса ДОС.
и только после этого Вы набираете ML . ,EXE PROG. ASM /AT.
2)Устанавливаете любой файловый менеджер (дос-навигатор, волков командер и т.п) запустив его и перейдя в папку с MASM набираете Вашу комманду.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 11.06.2007, 11:21 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ, кроме Вас больше никто и не знает.
Вопрос № 90.833
Не справляюсь с задачей: Ввести с клавиатуры целое число из диапазона 0-255 и вывести на дисплей эквивалентный этому числу ASCII-символ. Это всё в ассемлере. Очень нужен исходник с комментариями. Лучше на ТАSM. У меня WinXP, 900 Селерон. Заранее благодарен.
Отправлен: 10.06.2007, 15:43
Вопрос задал: Юрий Саныч (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Юрий Саныч!
Смотрите приложение.
По программе:
-программа реагирует только на цифровые клавиши и клавишу ВВОД.
после нажатия клавиши ВВОД или нажатия 3-х цифровых клавиш выводится разделитель ":" и после этого сам символ.
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Доброго времени суток, уважаемые эксперты! В теории разницы между теорией и практикой не существует, а вот на практике - разница огромна... Вроде, всё понятно, а как написать код - дуб дубом...
Есть три задачи. Помогите, пожалуйста, с ними разобраться...
Задача 1.
Написать программу, которая "параллельно" выполняет 2 процесса. Главный процесс - программа, печатающая в бесконечном цикле красные квадраты на экране монитора. Каждая итерация цикла печатает один квадрат в разных местах, начиная с левого верхнего угла и до правого нижнего (до полного заполнения экрана монитора красными квадратами). (потом - возвращается в левый верхний угол и опять заполняет экран красными квадратамии до левого нижнего угла, и так - бесконечно). В каждом "печатанье" квадрата
есть задержка. Программа использует вспомогательную процедуру (delay) для создания этой задержки. Параметр, передающийся процедуре для задержки, можно изменить ввоом с клавиатуры (F повышает частоту в 2 раза, S уменьшает частоту в 2 раза).
Вторичный процесс проходит в постоянной частоте пррерывания таймера (Timer Interrupt). Каждое прерывание таймера заполняет весь экран монитора синими квадратами. (каждое прерывание таймера - весь экран становится синим).
Esc - завершает программу не раньше, чем восстанавливается старый адрес прерывания таймера в таблице прерываний.
Задача 2.
Написать программу, отслеживающую изменения в очереди клавиатуры.
Программа:
- Выводит на экран монитора содержание очереди: код сканирования, в 16-ричном формате;
- Отмечает head и tail очереди клавиатуры;
- Рарешает добавить/удалить член из очереди и выводит на экран монитора все изменения;
- Даёт специфический сигнал в случае попытки добавить член в полную очереди или стереть из пустой очереди.
Задача 3.
Написать программу TSR (Terminate and Stay Resident) count_caps, которая, начиная с момента запуска, начинает работу и получает каждые 10 секунд "образец" монитора и проверяет, сколько раз появляются заглавные буквы (A-Z). Процесс взятия "образцов" монитора продолжается 50 секунд. Т.е., будет 5 взятий "образцов" монитора (после 10, 20, 30, 40 и 50 секунд с начала запуска программы). 5 результатов сохраняются в массиве памяти.
После того как пройдёт 50 секунд, каждый раз, как пользователь нажмёт на Esc, будет напечатано (на экране монитора), начиная с 12 строки 30 колонки с пробелом между результатами.
Можно предположить, что не будет более 99 заглавных букв в каждом "образце", взятом с монитора.
Отправлен: 10.06.2007, 23:35
Вопрос задала: Вера Т (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Вера Т!
Задача 1
Программа работает, только вот таймер вызывается 18 раз в секунду.
Насколько я помню для человеческого глаза не заметно все, что выше 5 раз в секунду.
Чтобы убедится в работоспособности Вам необходимо:
-1) убарать строки установки своего обработчика, отмечены ;--, или
-2) в обработчике чистить экран не полностью тогда будут видны изменения на экране, или
-3) обработчике поставить что-то вроде счетчика вызовов.
В подпрограмме show следуюшие строчки выводят в левом вернем углу символьное и цветовое представление координаты выводимого квадрата их можно убрать, но если убрать обработчик по частоте смены символов можно увидеть работу задержки delay.
mov ax,di
xor di,di
mov es:[di],ax
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!