Подскажите, пожалуйста, как написать программу чтобы указать начало строки, и конец, для поиска символа..может быть если есть длина строки то достаточно будет указать начальный адрес, может быть это связано с debug'ером. Код (Text): string db "Поиск символа в этой строке.",0ah,0dh,'$';строка для поиска mes1 db 0ah,0dh,'Исходная строка:','$' ;Это пропустил!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Это и есть начало поиска??? mes2 db 0ah,0dh,'Введите символ, на который следует заменить найденный' db 0ah,0dh,'$' mes3 db 0ah ,0dh,'Новая строка: ',"$" .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,mes1 int 21h;вывод сообщения mes1 lea dx,string int 21h cld;сброс DF lea di,string;загрузка в di смещения string mov сx,28;для префикса repne - длина строки ;поиск в строке string до тех пор, пока ;символ в al и очередной символ в строке ;не равны: выход — при первом совпадении ;---------------------------------------------------------------------------------------------------------------------------- cycl: mov al,'a';символ для поиска - "а"(кириллица) repne scan string je found;если элемент найден, то переход на
Думаю да. этот вывод непонятен. Зачем тогда '$' если символов 28 (cx = 28)? Строки для начала возьми латиницей. Так программа твоя работает, в чем вопрос то?
Мне преподаватель сказал что в дебагере указывать адрес нужно какой-то Вот вся программа, если кто умеет хорошо составлять алгоритм, помогите пожалуйста. Код (Text): .MODEL small .STACK 256 .data fnd db 0ah,0dh,'Символ найден','$' nochar db 0ah ,0dh,'Символ не найден.','$' mesl db Oah,0dh,'Исходная строка:','$' string db "Поиск символа в этой строке.",0ah,0dh,'$' ;строка для поиска mes2 db 0ah,0dh,'Введите символ, на который следует заменить найденный' db 0ah,0dh,'$' mes3 db 0ah ,0dh,'Новая строка: ',"$" .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,mes1 int 21h ;вывод сообщения mes1 lea dx,string int 21h ;вывод string cld;сброс DF lea di,string ;загрузка в di смещения string mov сx,28 ;для префикса repne - длина строки ;поиск в строке string до тех пор, пока ;символ в al и очередной символ в строке ;не равны: выход — при первом совпадении ;--------- cycl: mov al,'a' ;символ для поиска - "а"(кириллица) repne scan string je found ;если элемент найден, то переход на found mov ah,09h lea dx,nochar;иначе, если не найден, то вывод сообщения nochar int 21h jmp exit ;---------- found: mov ah,09h lea dx,fnd ;вывод сообщения об обнаружении символа ;корректируем di для получения значения ;действительной позиции совпавшего элемента ;в строке и регистре al int 21h dec di ;-------- new_char:;блок замены символа mov ah,09h lea dx,mes2 int 21h mov ah,01h int 21h;в al - введенный символ stos string;сохраним введенный символ ; (из al) в строке ;string в позиции старого символа mov ah,09h lea dx,mes3 int 21h lea dx,string int 21h inc di jmp cycl ;------------- exit: mov ax,4c00h int 21h end main