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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2014, 20:01   #1
zlobrik
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 24
По умолчанию Цепочечные команды Assembler

Нужно заменить все пробелы в тексте на два пробела. Исходный и результирующий тексты вывести на экран.
Проблема в том, что исходный текст выводит, а результирующий - нет. Видимо, неправильно сканирует.
Мой код:
Код:
MASM
.model small
.stack 256

.data
;в сегменте данных разместим все сообщения и операнды
founded db "Symbol found!!$"
not_f db "Symbol not found!$"
msg1 db "Our string: $"
string db "cd efg$"
string2 db 8 DUP( ) ;
msg2 db "Новая строка:$"
searchable db 20h  ;искомые символы
changable db 2 DUP (20h)  ;заменяемые символы
    
.code
    assume ds:@data, es:@data ;подсоединили ds и es
main:
    mov ax,@data 
    mov ds,ax     ;теперь дата находится в АХ
    mov es,ax     ;настройка es на ds
    mov ah,09h    ;вывод строки
    lea dx,msg1
    int 21h
    lea dx,string ;вывод строки
    int 21h
    
    ;пересылка 8-битовой строки в 9-битовую, подготовка к циклу
    cld
    lea dx,string
    lea bx,string2
    repne mov bx,dx
    
    mov al,searchable ;загрузили искомые символы в al
    cld               ;сброс флага df (направление слева направо)
    lea di,string2    ;
    mov cx,8         ;это для repne, counter-длинна строки
    
    @cycl:           ;в этом цикле ищется символ
                     ;который находится в al
                     ;строка содержит 8 символов
                     ;ее размер находится в сх
                     
    repne scasb     ;собвственно, цикл
    jz    @found    ;нашли элемент? переход к метке found
    
    @failed:        ;если нет - вывод сообщения об ошибке
    
    mov ah,09h
    lea dx,not_f
    int 21h
    jmp @exit       ;прыгаем к выходу
    
    @found:
    mov ah,09h
    lea dx,founded
    int 21h         ;уведомили, что символ найден
    mov al,changable
    stos string2
    mov ax,09h
    lea dx,msg2
    int 21h
    mov ax,09h
    lea dx,string2
    int 21h
    
    ;выход
    @exit:
    mov ax,4c00h
    int 21h
    end main
Собственно, как вывести результирующий текст?
zlobrik вне форума Ответить с цитированием
Старый 24.11.2014, 10:05   #2
zlobrik
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 24
По умолчанию

Ну что нужно сделать, чтоб выводило результирующий текст?
zlobrik вне форума Ответить с цитированием
Старый 24.11.2014, 11:23   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Результат падает в string2?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2014, 12:17   #4
zlobrik
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 24
По умолчанию

Да, конечно.

Последний раз редактировалось zlobrik; 24.11.2014 в 12:33.
zlobrik вне форума Ответить с цитированием
Старый 24.11.2014, 12:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Да, конечно.
да ну?!
подтверждение своим словам приведите пожалуйста!
Скриншота из дебаггера, где это видно будет вполне достаточно!

p.s. я прогнал ваш код через TASM/TLINK - полученный EXEшник не работает...

p.p.s. и попробуйте объяснить, что должна делать вот эта строка кода:
Код:
repne mov bx,dx
пересылать регистр dx в регистр bx ?!

А я думал, что копирование строк выполняется через MOVSB ...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цепочечные команды Assembler zlobrik Помощь студентам 1 19.10.2014 20:10
Assembler, tasm цепочечные команды для работы с строками D9bolic Помощь студентам 2 12.05.2012 13:24
Цепочечные команды jciml Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.05.2011 14:59
Цепочечные команды Несогласный Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.05.2010 20:49