сабж..и ещё сделать экранный интерфейс!!! Это подойдет?: Код: MASM .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=======================================================;вывод сообщения mes3 lea dx,string===================================================;вывод сообщения string ;переход на поиск следующего символа "а" в строке int 21h inc di========================================================;указатель в строке string на символ, ;следующий после совпавшего jmp cycl======================================================;на продолжение просмотра string ;------------------------------------------------------------------------------------------------------------------ exit: mov ax,4c00h int 21h end main Пожаловаться на это сообщение
Или что-то такое: ;123.asm .model small .data prompt db 'Îïåðàöèÿ óñïåøíî çàâåðøåíà',"$" str db 'Kakayato stroka' len_str=$-str .code begin: mov ax,@data mov ds,ax ;----------- mov es,ax cld mov al,' ' lea di,str mov cx,len_str rep stosb ;----------- mov ah,09 lea dx,prompt int 21h ;----------- mov ax,4c00h int 21h end begin
Во-первых, используйте тег code. Во-вторых, комментарии у вас безобразно сделаны. Это можно глаза сломать, бегая туда-сюда. Вам что так удобно? В-третьих, в чем вопрос? Вы предлагаете нам отладить за вас программу. Или думаете что тут сверхчеловеки: глянул код и сразу понял.
как описал свою проблему - так и получай ответ: Код (Text): POISK PROC CLD MOV CX, LEN MOV AL, 'искомый символ' LEA DI, VOID (строка для поиска) REPNE SCASB JE R MOV AH, 0H INT 16H MOV AH, 09H LEA DX, 'сообщение о результате' INT 21H R: MOV AH, 0H INT 16H MOV AH, 09H LEA DX, 'сообщение о результате' INT 21H RET оформляй работу в виде процедур. будет проще для всех. разбирайся.
Вот точно что мне нужно: программа для поиска символа(Alastor , Спасибо, это подойдет), и действия над найденным символом, с помощью команды STOS. Это совместимые вещи?
а теперь если тебя не затруднит - каждую строку моей процедуры с комментариями, оформленными по "стандарту" valterg выложи сюда. чтобы знать что действительно помог. а не просто помог сдать лабораторную на 5. Вот точно что мне нужно: программа для поиска символа(Alastor , Спасибо, это подойдет), и действия над найденным символом, с помощью команды STOS. Это совместимые вещи? и это тоже объясни ))))
Можно своими словами?) Код (Text): POISK PROC ;Определяем процедуру CLD ;Устанавливаем флажок DF => 0 MOV CX, LEN MOV AL, 'искомый символ' LEA DI, VOID (строка для поиска) REPNE SCASB;есть ли в DI искомое значение. JE R ;если нашло то прижок на метку R))(джамп эквіст) MOV AH, 0H; INT 16H;перерывание на введение символа из клавиатуры MOV AH, 09H ;функция выведения із буфера на экран LEA DX, 'сообщение о результате' ;запись из памяти в регистр DX INT 21H;Выводит на экран уведомление R: MOV AH, 0H; INT 16H ;перерывание на введение символа из клавиатуры MOV AH, 09H ;функция выведения із буфера на экран LEA DX, 'сообщение о результате' ;запись из памяти в регистр DX INT 21H;Выводит на экран уведомление RET;выгружает старший и младший байты счетчика команд из стека Endp;Конец процедуры Это курсовая...Инфу я достал из конспекта по предмету..Помогите если вам не сложно плз) Вот нарыл чтото: Ввести с клавиатуры символьную строку в буфер; Продублировать строку в этом же буфере 3 раза; Использовать строковые примитивы LODS и STOS до "попадания" на символ с кодом 13; Завершить программу. Код (Text): .MODEL Tiny .STACK 100h .DATA Msg DB '‚??¤?a? a«®?®:',13,10,'$' Str1 DB 100 DUP (?) Number DB 3 .CODE mov ax, @data mov ds, ax mov es, ax mov ah, 9 mov dx, OFFSET Msg int 21h mov bx, 1 mov cx, 30 mov ah, 3fh mov dx, OFFSET Str1 int 21h sub ax, 2 mov si, OFFSET Str1 mov di, si add di, ax mul Number mov cx, ax push cx NEXT: lodsb stosb dec cx cmp cx, 0 jne NEXT pop cx mov bx, 1 mov ah, 40h mov dx, OFFSET Str1 int 21h mov ax, 4C00h int 21h и Ввести с клавиатуры символьную строку в буфер; Преобразовать малые латинские и русские буквы к верхнему регистру; Остальные символы оставить без изменения; использовать строковые примитивы LODS и STOS; Вывести результат на экран; Завершить программу. Код (Text): .MODEL Tiny .STACK 100h .DATA Msg1 DB '‚??¤?a? aaa®?a:',13,10,'$' Msg2 DB '??§a«ia a:',13,10,'$' buf DB 80 DUP (?) leng DW (0) .CODE mov ax, @Data mov ds, ax mov ah, 9 mov dx, OFFSET Msg1 int 21h mov ah, 3fh mov bx, 0 mov dx, OFFSET buf mov cx, 80 int 21h mov cx, ax mov leng, ax sub ax, 2 mov cx, ax mov bx, OFFSET buf add si, ax dec si frag: mov al, [bx] cmp al, 'a' jb round cmp al, 'z' ja round sub al, 020h mov [bx], al round: inc bx loop frag mov cx, ax mov leng, ax sub ax, 2 mov cx, ax mov bx, OFFSET buf add si, ax dec si frag2: mov al, [bx] cmp al, ' ' jb round2 cmp al, '?' ja round2 sub al, 020h mov [bx], al round2: inc bx loop frag2 mov cx, ax mov leng, ax sub ax, 2 mov cx, ax mov bx, OFFSET buf add si, ax dec si frag3: mov al, [bx] cmp al, 'a' jb round3 cmp al, 'i' ja round3 sub al, 050h mov [bx], al round3: inc bx loop frag3 mov ah, 9 mov dx, OFFSET Msg2 int 21h mov cx, leng mov ah, 40h mov bx, 1 mov dx, OFFSET buf int 21h mov ax, 4C00h int 21h END Может это то что мне нужно?)) Гляньте плз опытными глазами.