Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2015, 17:27   #1
COLL_APSE
 
Регистрация: 14.03.2015
Сообщений: 4
По умолчанию Задание на Flat Assembler

Написать консольную программу, которая при вводе в нее с клавиатуры строки из нескольких слов разделенных только пробелом, заменяла бы каждый пробел на символ разделения строки (10,13). Вот текст, что смог написать, что надо добавить?
Код:
_________________________________________________________________format PE Console 4.0
entry Start

include 'win32a.inc'

section '.text' code readable executable
Start:
  invoke SetConsoleTitleA, conTitle
  test eax, eax
  jz Exit

  invoke GetStdHandle, [STD_OUTP_HNDL]
  mov [hStdOut], eax

  invoke GetStdHandle, [STD_INP_HNDL]
  mov [hStdIn], eax

startMenu: 
 invoke WriteConsoleA, [hStdOut], menuStr, menuStrLen, chrsWritten, 0
 
select_loop: 
 invoke ReadConsoleA, [hStdIn], readBuf, 1, chrsRead, 0;/ Ввод символа
  mov ecx, readBuf
     cmp [readBuf],' '          ;Сравнение введённого символа с ' '
    je c1               ;Переход, если равно
    cmp [readBuf],00h          ;Сравнение введённого символа с концом строки
    je Exit  ;Переход, если равно    
c1:
 

inc [readBuf]
Exit:
  invoke  ExitProcess, 0

section '.data' data readable writeable

menuStr    db 10,13,'Input String',13,10,0
menuStrLen = $-menuStr
select  db 'Input>',0
selectLen = $ - select
rgn db 10,13

  conTitle    db 'Console', 0
  hStdIn      dd 0
  hStdOut     dd 0
  chrsRead    dd 0
  chrsWritten dd 0

  STD_INP_HNDL  dd -10
  STD_OUTP_HNDL dd -11

section '.bss' readable writeable

  readBuf  db ?    

section '.idata' import data readable

  library kernel, 'KERNEL32.DLL'

  import kernel,\
    SetConsoleTitleA, 'SetConsoleTitleA',\
    GetStdHandle, 'GetStdHandle',\
    WriteConsoleA, 'WriteConsoleA',\
    ReadConsoleA, 'ReadConsoleA',\
    ExitProcess, 'ExitProcess'

Последний раз редактировалось Serge_Bliznykov; 17.03.2015 в 17:55.
COLL_APSE вне форума Ответить с цитированием
Старый 31.03.2015, 23:13   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Под дос можно сделать так.
Пробел переводит строку, ESC - завершает программу:
Код:
use16
org 100h
jmp start

mess db 'Input string:',13,10,'$'
nstr db 13,10,'$'

start:
   mov dx,mess   ; приветствие
   mov ah,9
   int 21h

keyb:
   mov ah,1      ; ждём символ с клавиатуры
   int 21h

   cmp al,32     ; это пробел?
   je crlf       ; да - переводим строку
   cmp al,27     ; это Esc?
   je exit       ; да - на выход
jmp keyb         ; продолжаем ввод

crlf:
   mov ah,9      ; новая строка
   mov dx,nstr
   int 21h
jmp keyb         ; продолжаем ввод

exit:
   int 20h
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 31.03.2015 в 23:16.
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в программе на flat assembler Ted_45 Помощь студентам 0 26.06.2012 09:34
Задание по Assembler. cblcka Помощь студентам 4 30.01.2011 21:10
обновление в блоге - DLL на Flat Assembler Pblog Обсуждение статей 0 20.05.2009 21:10
обновление в блоге - Сложение, вычитание и умножение на Flat Assembler Pblog Обсуждение статей 0 24.04.2009 20:50