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

Сжатие строки (удаление пробелов и табуляций), найти ошибку

16.05.2016, 16:18. Просмотров 333. Ответов 2
Метки нет (Все метки)

Ввести с клавиатуры строку. Сжать строку, т.е. удалить про¬белы и табуляции. Вывести результаты на экран.
Не могу найти ошибку, убираются только первые 2 пробела, остальные игнорируются, и если строка начинается с пробела, то все пробелы игнорируются
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
.model small
stack 100h
dataseg     
InviteStr   db 0Dh, 0Ah, 'Vvedite stroku', 0Dh, 0Ah, '$'
StringINP   db 16, ?, 16 dup(?)
StringOUT  db 16, ?, 16 dup(?)
 
codeseg
start:  
startupcode
 
    xor SI,SI
    xor DI, DI
    lea DX, InviteStr ;приглашение ввести первую строку 
    mov AH, 09h
    int 21h
    lea DX, StringINP ;ввод строки
    mov AH, 0Ah
    int 21h
    lea SI, StringINP+2 ;взятие адреса входящей строки
    lea DI, StringOUT+2 ;взятие адреса исходящей строки
    mov CL, StringINP+1
    CLD
    Check:
        lodsb                      
        cmp AL, 20h
        je stop
        mov DL, AL
        mov AH, 02h
        int 21h
    stop: loop Check
    quit:
    exitcode 0
    end start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2016, 16:18
Ответы с готовыми решениями:

Сжатие строки символов путем удаления пробелов из исходной строки
Помогите пожалуйста, нужен только текст кода программы ассемблера, а то с...

Удаление пробелов в начале строки. Из .com в .exe
Пробую переписать программу в exe, не получается Рабочий вариант в .com...

Удаление из строки всех слов с максимальной длинной (и всех пробелов после них)
С клавиатуры вводится строка символов, необходимо найти самое длинное слово...

удаление элемента массива(не могу найти ошибку)
задание заключается в удалении элемента массива. размер...

Удаление лишних пробелов
Я недавно начал изучать ассемблер, по учебнику Юрива В.И "Assembler" Решил...

2
Constantin Cat
2982 / 1116 / 376
Регистрация: 28.02.2015
Сообщений: 2,455
Завершенные тесты: 1
16.05.2016, 17:01 2
Чуть доделал, вроде все работает.

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
.model small
stack 100h
dataseg     
InviteStr   db 0Dh, 0Ah, 'Vvedite stroku:$'
dbres   db  10,13,'result:$'
StringINP   db 160, ?, 160 dup(?)
StringOUT  db 16, ?, 16 dup(?)
 
codeseg
start:  
startupcode
 
    xor SI,SI
    xor DI, DI
    lea DX, InviteStr ;приглашение ввести первую строку 
    mov AH, 09h
    int 21h
    lea DX, StringINP ;ввод строки
    mov AH, 0Ah
    int 21h
    mov ah,9
    lea dx,dbRes
    int 21h
    lea SI, StringINP+2 ;взятие адреса входящей строки
    lea DI, StringOUT+2 ;взятие адреса исходящей строки
xor ch,ch
    mov CL, StringINP+1
    CLD
    Check:
        lodsb                      
        cmp AL, 20h
        je stop
        mov DL, AL
        mov AH, 02h
        int 21h
    stop: loop Check
    quit:
    exitcode 0
    end start
1
Charles Kludge
Клюг
7646 / 3161 / 383
Регистрация: 03.05.2011
Сообщений: 8,382
16.05.2016, 18:18 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
44
45
;masm/DOS
dos_inp macro   lbl, sz
_ib_    struc  
max db  sz
len db  ?
bf  db  sz dup(?)
_ib_    ends            
lbl _ib_ <>
endm
.model  small
.386
.stack
.data
InviteStr   db 0Dh, 0Ah, 'Vvedite stroku'
crlf    db  0Dh, 0Ah, '$'
dos_inp StringINP, 16
 
.code
start:  mov ax, @data
    mov ds, ax
    mov es, ax
    lea DX, InviteStr       ;приглашение ввести первую строку
    mov AH, 09h
    int 21h
    lea DX, StringINP       ;ввод строки
    mov AH, 0Ah
    int 21h
    lea SI, StringINP.bf    ;взятие адреса входящей строки
    movzx   cx, StringINP.len
    lea dx, crlf
    mov ah, 9
    int 21h
@l:
    lodsb
    cmp AL, 20h
    jz  @F
    cmp al, 09h
    jz  @F
    int 29h
@@:     loop    @l
    xor ax, ax
    int 16h
    mov ax, 4C00h
    int 21h
    end start
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2016, 18:18

Удаление всех пробелов
;Write and test function that &quot;compresses&quot; string, ;deleting from it all...

Удаление пробелов в строке
Нарыл множество способов удаления пробелов в строке и столкнулся с проблемой,...

Удаление лишних пробелов в строке
Реализовать программу, нормализующую строку, введенную пользователем с...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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