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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 13:02   #1
Leon9313
 
Регистрация: 03.04.2012
Сообщений: 4
Восклицание Assembler!!! Заменить на символ ‘!’ каждый 3тий символ в строке.

Помогите пожалуйста решить задачу по assembler. Сижу уже который час и ничего не могу сделать.

С клавиатуры вводится строка символов.
Заменить на символ ‘!’ каждый 3тий символ в строке.

Есть исходник, нужно в нем поменять что-то, а что именно не знаю. Если кто поможет, заранее спасибо.

Код:
Include macro.lib
sts segment 'stack'
db 12 dup ('stack')
sts ends
dts segment 'data'
stroca label byte         ;Obyavlenie strioki simvolov
maxlen db 130             ;Maximalnoe kol-vo simvolov vodimyh v stroku
actlen db ?               ;Factixheskoe kol-vo simvolov vedenyh d stroku
str1 db 130 dup('$')      ;Obyavlenie simvolnogo massiva
p db 'Vvoditsya stroka slov, pereimenovat na "!" vse slova, zakanchivayuchiesya na a$'
p3 db 'otvet: $'
p2 db 'Vvedite stroku $'
s1 dw (0)
r2 dw (1)
k dw 0
k1 dw 0
const1 db 2
dts ends
cds segment 'code'
begin proc far
assume cs:cds,ds:dts,ss:sts
mov ax,dts
mov ds,ax
cls                         ;Ochistka ekrana
move_cursor 0,0
crlf                        ;Perehod na sleduyuschuyu stroku
message p                   ;Soobshenie p
crlf                        ;Perehod na sleduyushuyu stroku
crlf                        ;Perehod na sleduyushuyu stroku
message p2                  ;Soobshenie p2
crlf                        ;Komanda vvoda stroki
mov ah,0ah                  ;Vvod v ah
lea dx,stroca               ;;
int 21h                     ;;
crlf                        ;Perehod na sleduyushuyu stroku
mov al,actlen               ;Zagruzhaetsya dlina stroki v al
cbw                         ;Rashirenie do 2 bayt
mov cx,ax                   ;Zadaetsya schetchik
lea di,str1                  ;Adres nachala stroki
m1:                         ;Metka m1
mov al,[di]                 ;Vvod v al
cmp al,' '                  ;Ishem konec slova
jne mm                      ;Esli ne ravno, idem na metku mm
inc k1                      ;Uvelichivaem schetchik slov na 1
push di
mov ax,k
idiv const1                   ;Delim na 2
cmp ah,0
jne m                        ;Esli ne ravo, idem na m2
sub-2 di,k                   ;Vichitivaet is di k, perehodim k nachalu slova
;mov al,[di]                 ;Vvodit v al
;cmp al,'a'                  ;Uslovniy perehod
;jne m2
;dec k1                       
push cx                    ;Sohranyaem schetchik v steke
mov cx,k                   ;Zagruzhaem schetchik s znacheniem k
mov al,'!'
m5:
mov [di],al               ;Zapominaem ! v kazhdom simvole slova
inc di                    ;Uvelichivaem di na 1
loop m5
pop cx
m2:
mov k,0
pop di
inc di
mm:
inc k                      ;Znachenie k evelichivaem na 1
inc di                      ;Perehodim k sledueshemu adresu simvolnogo massiva
loop m1                     ;Idem na nachalo cikla
crlf
message p3
crlf
message str1
mov ax,4c00h
int 21h
ret
begin endp
cds ends
end begin

Последний раз редактировалось Serge_Bliznykov; 24.04.2012 в 13:12.
Leon9313 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в строке один символ на другой (assembler) fuzo Помощь студентам 1 06.05.2013 12:11
СИ Проверка того что каждый символ во входной строке является цифрой Super_Hornet Помощь студентам 2 03.11.2011 10:32
Удвоить каждый символ в строке мария2507 Microsoft Office Excel 7 22.12.2009 13:40
заменить символ в строке felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 18:38