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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2016, 17:27   #1
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию Assembler работа с строкой

Помогите пожалуйста с лабораторной. Мало что понимаю в ассемблере, так что даже не преставляю как это сделать...

составить программу, которая вводит случайный текст, который заканчивается точкой. Вывести True, если а встречается реже чем b. Иначе, вывести False.
KaMaKaDzA вне форума Ответить с цитированием
Старый 20.02.2016, 19:48   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

На тебе халявный вариант на FASM'e:

Код:
org  100h
jmp  start

mess0   db  13,10,'ENTER TEXT: $'
mess1   db  13,10,'<==== TRUE $'
mess2   db  13,10,'<=== FALSE $'

start:
   mov   ax,3            ; CLS и видео/режим 80х25/16
   int   10h             ;
   mov   ah,9            ; запрос на ввод строки
   mov   dx,mess0        ;
   int   21h             ;

   xor   bx,bx           ; сброс счётчика: BL='a', BH='b'
@@:                      ; <----------------------------<<----+
   mov   ah,1            ; ввод символа с эхом                |
   int   21h             ;                                    |
   cmp   al,'.'          ; это точка?                         |
   je    next            ; да - заканчиваем ввод              |
   cmp   al,'a'          ; "а" ?                              |
   je    @10             ; переход на метку                   |
   cmp   al,'b'          ; "b" ?                              |
   je    @20             ;                                    |
   jmp   @b              ; --->------------>>----+------>>----+
@10:                     ; встретилась "а"       |
   inc   bl              ; счётчик +1            |
   jmp   @b              ; --->------------->>---+
@20:                     ; встретилась "b"       |
   inc   bh              ; счётчик +1            |
   jmp   @b              ; --->------------->>---+

next:                    ;
   cmp   bh,bl           ; сравниваем счётчики
   jb    fls             ; переход, если BH < BL
   jz    start           ; если равно - начинаем ввод сначала..
   mov   dx,mess1        ; мессага TRUE
   jmp   print           ;
fls:                     ;
   mov   dx,mess2        ; мессага FALSE
print:                   ;
   mov   ah,9            ; функция 09h DOS
   int   21h             ; выводим результат на экран!

exit:                    ;
   xor   ax,ax           ; ждём любую клавишу..
   int   16h             ;
   int   20h             ; выход!
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 20.02.2016 в 19:51.
R71MT вне форума Ответить с цитированием
Старый 20.02.2016, 20:03   #3
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию

благодарю)
KaMaKaDzA вне форума Ответить с цитированием
Старый 20.02.2016, 20:36   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..пользуйся! а для благодарю есть весы
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строкой Lorden Общие вопросы Delphi 29 18.01.2016 14:38
работа со строкой Le0n4iko_o Общие вопросы Delphi 15 08.04.2014 12:08
Assembler сравнить буфер со строкой Vitalii Помощь студентам 3 14.12.2011 20:49
Работа с строкой ATL PHP 2 17.11.2011 22:33
Работа со строкой FrostoS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.01.2011 17:20