Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
ElizabetR
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 34
1

Удалить лишние пробелы в строке (подскажите, что происходит в конкретной строчке)

05.11.2019, 17:38. Просмотров 122. Ответов 3
Метки нет (Все метки)

Программа ввода строки с клавиатуры и удаления лишних пробелов.
Подскажите, пожалуйста, что происходит в конкретной строчке?
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 TITLE Program                  
.MODEL small                
.STACK 100h                    
.DATA                          
NL      db      0Ah, 0Dh, '$'
Buf     DB      255, 0, 256 DUP (0)     
 
.CODE                           
main PROC
        mov     ax,@data       
        mov     ds,ax    
        mov     dx,offset Buf   
        mov     ah,0Ah
        int     21h
        xor     cx,cx
        mov     al,[Buf+1]      ;что происходит в этой строчке? Интересует именно Buf+1 
        mov     cl,al          
        test    al,al           
        mov     ah,09h
        jz      Exit
        mov dh,0Dh         
                                
Cycle:
        mov     dl,[si]         
        cmp     dl,' '          
        jne     Print          
        cmp dx,'  '             
        je NextChar             
Print:
        mov     ah,02h        
        int     21h            
NextChar:
        mov dh,dl              
        inc     si             
        loop    Cycle
Exit:
                   
MOV ah,01
INT 21h  
        mov     AX,4C00h      
        int     21h             
main    ENDP
END main
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2019, 17:38
Ответы с готовыми решениями:

Удалить лишние пробелы и поменять местами слова в строке
оч срочно прога нужна , напишите кто понимает условие::::: Дана строка буквенных символов...

Удалить символы в строке, стоящие на четных местах; удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом
Надо удалить символы в строке, стоящие на четных местах. И удалить лишние пробелы и знаки табуляции...

3

Mikl___
Автор FAQ
14333 / 6683 / 700
Регистрация: 11.11.2010
Сообщений: 12,009
05.11.2019, 18:20 2
ElizabetR,
После того как пользователь нажал на Enter в переменную buf введена строка с клавиатуры, в переменной buf+1 находится длина введенной строки, за подробным объяснением обращайся в google, введя в поисковую строку функция 0Ah прерывания 21h
1
liv
2457 / 1654 / 269
Регистрация: 07.10.2015
Сообщений: 3,978
Завершенные тесты: 1
05.11.2019, 20:04 3
ElizabetR, есть ошибка: у Вас не настраиваивается регистр si на адрес введенной строки.
Заодно слегка оптимизировал:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 TITLE Program                  
.MODEL small                
.STACK 100h                    
.DATA                          
NL      db      0Ah, 0Dh, '$'
Buf     DB      255, 0, 256 DUP (0)     
 
.CODE                           
main PROC
        mov     ax,@data       
        mov     ds,ax    
        mov     dx,offset Buf   
        mov     ah,0Ah
        int     21h
        xor     cx,cx
        mov     cl,[Buf+1]      ;что происходит в этой строчке? Интересует именно Buf+1 
        mov     ah,09h
        jcxz    Exit
 
    mov ah, 2
    mov dl, 0dh
    int 21h
    mov dl, 0ah
    int 21h
 
        mov     dh,0Dh         
                                
    lea si, Buf+2
Cycle:
        mov     dl,[si]         
        cmp     dl,' '          
        jne     Print          
        cmp     dx,'  '             
        je  NextChar             
Print:
        int     21h            
NextChar:
        mov     dh,dl              
        inc     si             
        loop    Cycle
Exit:
                   
    MOV     ah,01
    INT     21h  
        mov     AX,4C00h      
        int     21h             
main    ENDP
END main
1
ElizabetR
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 34
06.11.2019, 15:30  [ТС] 4
Спасибо)))
0
06.11.2019, 15:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2019, 15:30

Удалить лишние пробелы в строке
Добрый день. Прошу написать простую программу по заданию: В строке, введённой с клавиатуры, удалить...

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.