Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 1
TASM

Переделать программу - обработать строку при помощи цепочечных инструкций

04.05.2020, 15:02. Показов 343. Ответов 0

Студворк — интернет-сервис помощи студентам
вот код который формирует строку из исходной путем заданного числа повторений исходной строки, Z-string
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
49
50
51
52
53
54
55
56
57
58
.8086
.model small                                           ; один сегмент кода, данных и стека
.stack 100h                                    ; отвести под стек 256 байт
.data                                              ; начало сегмента данных
String1 db 'I!',0                                                  ; Исходная строка, 0-окончание строки
String2 db 100 DUP(0)                              ; Новая строка, пустая
N equ 5                                        ; Число повторений
.code                                          ; начало сегмента кода
start:
mov ax,@data                    ; Загрузка данных
mov ds,ax
        
        cld
    mov cx, N       ; Число повторений исхожной строки 
    lea di, String2 ; Параллельно с чтением исходной строки будем формировать новую
new:
        lea si, String1
adding:             ; Добавляем посимвольно элементы в новую строку
    lodsb           ; загружаем символ из исходной строки в регистр
    cmp al,0        ; если  конец, то на выход    
    je  outstring2          
    mov     [di],al     ; иначе добавляем его в новую строку
    inc     di
    jmp adding
outstring2:         ; Вывод обновленной второй строки
    dec cx
    cmp cx,0        ; Если не пройдено нужное число повторений, то начинаем снова
    jne new
    mov byte ptr [di],0
    lea si, String2 ; Выводим новую строку с самого начала
    call    Vivod
exit:
    mov     ax,4c00h
    int     21h     ; окончание работы программы
 
Vivod proc          ;Процедура вывода на экран Z-строки
 
outltr:                         ; Посимвольный вывод на экран
    lodsb           ; загружаем символ в регистр al
    cmp al,0        ; если  конец, то на выход    
    je  outend
    mov dl, al      ; вывод символа
    mov ah, 02h
    int 21h
    ;inc    si              ; двигаем курсор на символ вперед
    jmp outltr
outend:                 ; Окончание перевода и вывода конца строки
    mov dl, 0dh         
    mov ah, 02h
    int 21h
    mov dl, 0ah
    mov ah, 02h
    int 21h
    
    ret
Vivod endp
 
end start
его надо переделать по этому алгоритму
на базе REP MOVSB
1. Узнать длину строки при помощи поиска нуля в REPNE SCASB.
2. Заданное количество раз полностью скопировать исходную строку при помощи REP MOVSB.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2020, 15:02
Ответы с готовыми решениями:

Почему некоторые исключения невозможно обработать стандартным образом при помощи try catch?
Почему некоторые исключения невозможно обработать стандартным образом при помощи try catch? Вместо обработки программу тупо завершается.

Как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !?
Здравствуйте! Вопрос такой как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !???? ...

Изменение сегмениа при цепочечных операциях
Частенько вижу что-то типа REP MOVS DWORD PTR ES:, DWORD PTR DS:. ES и DS и без того указывают на один и тот же сегмент. Смысл для...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2020, 15:02
Помогаю со студенческими работами здесь

Написать программу обратного расположения элементов цепочки с использованием цепочечных команд
Написать программу обратного расположения элементов цепочки с использованием цепочечных команд

Распарсить строку при помощи регулярного выражения
Всем привет ,хотел бы спросить , как сделать в регулярной строке так что бы по ключевому слову начиналась фильтрация текста до ключевого...

Как обрезать строку при помощи рег экспов
Здравствуйте. Хочу вырезать из строки имя домена. "http://subdomen.domen.ru/aaa" Как при помощи рег экспа вырезать...

Закодировать строку при помощи шифра Юлия Цезаря
Условие Дана строка, состоящая из маленьких букв латинского алфавита. Требуется закодировать строку при помощи шифра Юлия Цезаря. Суть...

Преобразование чисел с плавающей запятой в строку при помощи crt_sprintf
Добрый день! В данном примере просто добавляю два qword числа с запятой, сохраняю в tbyte переменную и вывожу одну и ту же переменную два...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru