Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 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
Помогите, поалуйста, сделать необходимые коррективы! Буду очень признателен и параллельно попытаюсь вникнуть и ускорить изучение ассемблера!
Jinkie вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изучить ассемблер? Базаров Программирование 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


Текущее время: 15:16. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.