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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2020, 09:53   #1
Andrey_1998
 
Регистрация: 17.04.2019
Сообщений: 8
По умолчанию Работа с цепочечными командами

Здравствуйте. Помогите, пожалуйста, с заданием: Определить количество букв в первом слове.
Вот я сделал, чтобы считало количество букв для каждого слова:
Код:
.model small
.stack 100h
     
.data
    request     db 'hgj', 0Dh, 0Ah, 'vedite stroku:', 0Dh, 0Ah, '$' 
    result      db 0Dh, 0Ah, 'Rezultat:', 0Dh, 0Ah, '$'
    buffer      db 100, ?, 100 dup (0)
 
.code
 
start:
    MOV ax, @data                 ;читаем данные
    MOV ds, ax                    
 
    MOV ah, 09h
    MOV dx, offset request ; выводим сообщение, чтобы вводили строку
    int 21h
 
    MOV dx, offset buffer ; читаем эту строку с помощью субпрограммы 0ah и заносим в буффер         
    MOV ah, 0Ah                  
    INT 21h                         
 
    MOV si, offset buffer   ; в переменную, предназначенную для работы с цепочечными данными заносим координаты буффера в котором наход строка    
    INC si ; увеличиваем на 1чтобы прочитало скоко всего символов в строке                        
    MOV bh, [si] ; кол-во символов присваиваем в bh                  
    INC si ; переходим к чтению 1 символа
    mov bl, "0"
 
    MOV ah, 09h
    MOV dx, offset result ; выводим текст результат
    int 21h
 
char:
    LODSB ;                         
    
    CMP al, 07Ah ; сравниваем 1 символ с последней буквой z
    JA toliau; если значение больше значит это пробел и идем в toliau
     inc bl
    DEC bh  ; уменьш кол-во символов на 1                     
    JZ ending ; когда будет равнятся 0 прыгаем в ending                       
    JMP char ; иначе повторяем ф-ию                     
toliau:
    
    mov dl, bl
    mov dx, 02h
    int 21h 
    jmp char    
     
ending:
    MOV ax, 04c00h               
    INT 21h                         
     
end start
Как этот код переделать под мою задачу?
Andrey_1998 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с командами ICQ DeTLeR Общие вопросы Delphi 3 24.05.2012 22:07
Обработка строк цепочечными командами Mr.BL@CK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 10.12.2011 17:24
Работа с АТ-командами в DELPHI 7 Азамат Казанчев Помощь студентам 17 18.06.2011 08:22
Консольное приложение с командами Noor Общие вопросы Delphi 4 24.04.2008 21:54
Работа с DOS командами. 3apadlo Паскаль, Turbo Pascal, PascalABC.NET 1 27.01.2007 22:14