18.10.2015, 16:52 | #1 (ссылка) |
Новичок
Регистрация: 07.02.2015
Сообщений: 22
Репутация: 0
|
Консольный ввод-вывод Ассемблер MASM
Доброго времени суток, уважаемые форумчане! Заранее извиняюсь за показавшуюся наглость с моей стороны, но очень-очень-очень нужна практическая помощь!
Изучаю ассемблер (MASM) в универе, и так получилось, что у нас очень сокращенная программа, лабораторные опережают лекции, дома учу по немногу, но к лабораторным не совсем успеваю. Сейчас тема лабы - консольный ввод-вывод. Задание в лабе поставлено следующим образом: "Выполнить согласование. Откорректируйте Фрагмент 2, чтобы вводной буфер Фрагмента 4 сразу использовался как выводной буфер во фрагменте 2. Кроме того, при вводе функция ReadFile (во фрагменте 4) сосчитает количество фактически введенных смволов и сохранит его в назначенной переменной. Измените Фрагмент 2 так, чтобы это число сразу правильно подставлялось как параметр в вызов WriteFile. Тогда эхо-вывод введенного текста произойдет без ошибок." А вот и сам код: Код:
include \masm32\include\masm32rt.inc comment * =========================== Шаблон минимальной учебной программы * =================================== .data ZapisanoByte dd 0 ; сколько байт фактически выведено ФРАГМЕНТ 1 AnyString db "Строка для вывода.”,0 DlinaStroki dd 18 PotokStdOut dd ? ; Для записи манипулятора Стд Потока Вывода InputBuffer db 25 dup (0) ; вводной буфер ФРАГМЕНТ 3 bLen dd 23 ; длина буфера ввода, нужна при вводе ProchitanoByte dd 0 ; сколько байт фактически было введено PotokStdIn dd ? ; для записи манипулятора Стд Потока Ввода .code ; ФРАГМЕНТ 4 invoke GetStdHandle,STD_INPUT_HANDLE mov PotokStdIn, eax ; запросили у Windows манипулятор стд потока ввода ; Задать свойства потока ввода invoke SetConsoleMode,PotokStdIn,\ ENABLE_LINE_INPUT or \ ; закончить по Enter ENABLE_ECHO_INPUT or \ ; выводить вводимое (ввод с эхом) ENABLE_PROCESSED_INPUT ; обрабатывать строчные символы CR,LF,BS и Сtrl-C invoke ReadFile, PotokStdIn, ADDR InputBuffer, bLen, ADDR ProchitanoByte, NULL ;Запросить у Windows манипулятор выводного потока ФРАГМЕНТ 2 invoke GetStdHandle,STD_OUTPUT_HANDLE ; манипулятор возвращен в еах, ... mov PotokStdOut, eax ; ... и переписан в переменную PotokStdOut invoke WriteFile, PotokStdOut, ADDR AnyString, DlinaStroki, ADDR ZapisanoByte, NULL start: ;ТОЧКА А inkey invoke ExitProcess,0 ; выход в Windows end start |
Ads | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как изучить ассемблер? | Базаров | Программирование | 6 | 26.12.2012 23:38 |
WmbuySell - обмен, ввод-вывод Вебмани | Engineer0 | Реклама, объявления | 0 | 28.08.2011 16:53 |
Консольный релиз The Witcher 2 отложен | KaAd | Компьютерные новости | 0 | 02.08.2011 12:56 |
MASM. Исследование программы в отладчике | Базаров | Программирование | 0 | 28.05.2011 14:30 |
Не могу скомпилировать прогу через MASM 6.11 | Начинающий Прогер | Программирование | 0 | 23.04.2009 01:52 |