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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2016, 08:33   #1
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию FASM ввод строки с клавиатуры

Добрый день, помогите пожалуйста. Нужен ввод строки с клавиатуры для программы. Код.Пока только так. И как искать все буквы z не только большие, но и маленькие?
PHP код:
format PE  GUI 4.0
include 'D:\FASM\include\win32ax.inc'
include 'D:\FASM\include\encoding\win1251.inc'

.data
caption  db  
'Работа со строкой',0
text     db  
'   Èñõîäíàÿ ñòðîêà: zZabral Zaseyal Rojb',13,13,\
             
'   Позиция пробела:  '      
buff1    db  0,0,' ',13,\                 
             
'Количество букв Z в строке:  '       
buff2    db  0,0,0                        

stroka   db  
'Zabral Zaseyal Rojb'             
size     =   $ - stroka                   

.code
start
:
;---------- 
Ищем первый пробел ------------------------------------
     
mov   ecx,size             
     push  ecx                  
     mov   edi
,stroka          
     mov   al
,' '               
     
repne scasb                
     pop   eax                  
     sub   eax
,ecx             
     aam                        
     
or    ax,3030h             
     xchg  ah
,al                
     mov   word
[buff1],ax       

;Ищем букву Z
     
xor   ebx,ebx              
     mov   esi
,stroka          
     mov   ecx
,size            
     mov   ah
,'Z'               
@1:  lodsb                      
     cmp   ah
,al                
     jnz   
@2                  
     inc   ebx                  
@2:  loop  @1                 .
     
mov   eax,ebx              
     aam                        
     
or    ax,3030h             
     xchg  ah
,al                
     mov   word
[buff2],ax     


     invoke  MessageBox
,0,text,caption,MB_OK
     invoke  ExitProcess
,0

.end start 
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 10:09   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Тебе обязательно GUI надо, или консоль тоже пойдёт?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 27.05.2016, 10:21   #3
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
Тебе обязательно GUI надо, или консоль тоже пойдёт?
Без разницы можно GUI, можно консоль главное ввод с клавы был.
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 11:32   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Kurtojkeee Посмотреть сообщение
Без разницы
для тебя может без разницы, а для того кто пишет - большая разница.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 27.05.2016, 11:34   #5
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
для тебя может без разницы, а для того кто пишет - большая разница.
Где легче для того кто пишет)))
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 12:04   #6
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию

С символами Z,z решил проблему
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 12:39   #7
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию

Думал надо позицию пробела, оказывается надо количество символов после пробела
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 14:46   #8
Kurtojkeee
Пользователь
 
Регистрация: 14.02.2016
Сообщений: 12
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
для тебя может без разницы, а для того кто пишет - большая разница.
Друже, есть решение по вводу строки с клавиатуры?
Kurtojkeee вне форума Ответить с цитированием
Старый 27.05.2016, 19:27   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Вот тебе досовская консоль:
Код:
; fasm code.......
org 100h
jmp start

mes0    db  13,10,' Введите строку........: $'
mes1    db  13,10,' Заглавных "Z".........: $'
mes2    db  13,10,' Прописных "z".........: $'
mes3    db  13,10,' Символов после пробела: $'
buff    db  80,0,80 dup(0)   ; буфер для строки

start:  mov   dx,mes0        ;
        call  message        ;
        mov   ah,0Ah         ; fn(0A) ввод в буфер
        mov   dx,buff        ;
        int   21h            ;

        mov   dx,mes1        ;
        call  message        ;
        xor   cx,cx          ;
        mov   al,'Z'         ; символ для поиска
        call  findSymbol     ; зовём функцию..

        mov   dx,mes2        ;
        call  message        ;
        mov   ax,'z'         ;
        call  findSymbol     ;

        mov   dx,mes3        ;
        call  message        ;
        mov   cl,[buff+1]    ;
        mov   al,' '         ; символ для поиска
        mov   di,buff+1      ;
        repne scasb          ; поиск..
        xchg  ah,cl          ; AH = длина хвоста после пробела
        call  print          ; выводим её на экран

exit:   xor   ax,ax          ;
        int   16h            ;
        int   20h            ; выход!
;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
message:                     ;
        mov   ah,9           ; досовская мессага
        int   21h            ;
        ret                  ;
;------------------------------------------------------
findSymbol:                  ; символ для поиска в AL
        xor   ah,ah          ; AH будет счётчиком
        mov   cl,[buff+1]    ;
        mov   di,buff+2      ;
cycle:  repne scasb          ; поиск..
        or    cx,cx          ; всю строку проверили?
        jz    print          ;
        inc   ah             ; счётчик +1
        jmp   cycle          ;
print:  shr   ax,8           ; отправляем результат в AL
        aam                  ; переводим в распакованное BCD
        or    ax,3030h       ;        ..и в символы
        xchg  ah,al          ;
        int   29h            ;
        shr   ax,8           ;
        int   29h            ; выводим число на экран
        ret                  ;
Изображения
Тип файла: jpg 666.JPG (18.1 Кб, 181 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод с клавиатуры CppForYou Помощь студентам 2 09.10.2014 09:20
ввод строки с клавиатуры под Linux BloodMaX Общие вопросы C/C++ 1 04.12.2011 12:16
FASM. Ввод чисел и математические операции. Lamo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 17.01.2010 20:38
Помогите с кодом для ввода чисел с клавиатуры на FASM. Lamo Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.12.2009 20:45