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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2015, 11:13   #1
viktoria))))
Новичок
Джуниор
 
Регистрация: 17.12.2015
Сообщений: 1
По умолчанию Ассемблер_добавить скобки вместо первого и последнего символов

Задание было заменить в введенной фразе заглавные буквы на строчные . преподаватель дал еще одно задание получить из моей фразы: Our Native ZzZzZz вот такую: (u) (ative) (zZzZ) т.е заменить первый и последний символ в каждом слове на '(' и ')' соответственно , ребят как это сделать?

Код:
DATASG    SEGMENT   PARA
MYTEXT   DB     'Our Native ZzZzZz' ,13,10, '$'
DATASG	ENDS

STACKSG 	SEGMENT      'Stack'		
        DB      12 DUP(?)
STACKSG   ENDS

CODESG	SEGMENT PARA 'Code'
BEGIN	PROC FAR
ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG
	PUSH 	DS
	SUB 	AX,AX
	PUSH 	AX
	MOV 	AX, DATASG
	MOV 	DS, AX
	LEA 	BX, MYTEXT
	MOV 	CX, 10H
MT1:	MOV 	AH, [BX]
CMP CX ,10H
JE MT4 
		CMP CX ,0H
JE MT5
        CMP     AH, 41H
	JB 	MT2
        CMP     AH, 5AH
	JA 	MT2
	CALL	COR

MT2:	INC 	BX
	LOOP MT1
	LEA 	DX, MYTEXT
	MOV 	AH, 09H
	INT 	21H
	RET
BEGIN   ENDP
MT4: 	MOV AH, 28h
MOV [BX], AH ;(
Dec cx
JMP MT1
MT5: 	MOV AH, 29h
MOV [BX], AH;)
Dec cx
JMP MT1


COR	PROC	 NEAR
	NOP
        ADD     AH, 20H
	MOV 	[BX], AH
	RET
COR	ENDP

CHANGE  PROC NEAR
        NOP
        MOV     AH, 01h
        MOV [BX], AH
        RET
CHANGE  ENDP
CODESG	ENDS
END	BEGIN
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 17.12.2015 в 12:01.
viktoria)))) вне форума Ответить с цитированием
Старый 18.12.2015, 20:31   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Пример окна:
Цитата:
Our Native ZzZzZz
(u) (ativ) (zZzZ)
Код:
USE16
ORG 100h
JMP start

mess   DB  'Our Native ZzZzZz',13,10,'$'
len    =   $ - mess-3              ; полезная длина строки
buff   DB  20 DUP(' '),'$'         ; буфер в 20 байт для изменённой строки
fuck   DB  ') ('                   ; 'это' будем подставлять вместо пробела

start:
   MOV   AH,9                      ; покажем оригинальную строку
   MOV   DX,mess
   INT   21h

   MOV   DI,buff                   ; наводим DI на буфер
   MOV   AL,'('                    ; первым символом запишем туда скобку
   STOSB                           ; есть запись!

   MOV   SI,mess+1                 ; SI указывает на оригинальную строку
   MOV   CX,len-1                  ; длинна строки без первого символа
begin:
   LODSB                           ; читаем байт из SI
   CMP   AL,' '                    ; это пробел?
   JE    ok                        ; да - подставляем вместо него конструкцию(FUCK)
   STOSB                           ; нет - запишем в DI прочитаный символ
   LOOP  begin                     ; следующий символ..
   JMP   endBegin                  ; всю строку прочитали. выходим из цикла
ok:                ;<==============; встретился пробел!
   PUSH  SI                        ; сохраним указатель..
   PUSH  CX                        ;  и счётчик
   DEC   DI                        ; возвращаемся в буфере назад
   MOV   SI,fuck                   ; SI указывает на источник данных
   MOV   CX,3                      ; количество символов в источнике
   REP   MOVSB                     ; отправляем их в буфер
   POP   CX                        ; возвращаемся туда,
   POP   SI                        ;     от куда прибыли
   INC   SI                        ; пропускаем 1 оригинальный символ
   LOOP  begin                     ; продолжаем чтение данных...

endBegin:
   MOV   AH,9                      ; покажем изменённую строку
   MOV   DX,buff
   INT   21h

   XOR   AX,AX                     ; ждём клавишу и на выход
   INT   16h
   INT   20h
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Побитовые операции (перестановка первого и последнего...) Ans797 Помощь студентам 6 08.12.2014 18:02
Не шарю!Найти сумму первого и последнего членов(Паскаль) vladimirkolpino Помощь студентам 0 21.05.2013 23:11
Найти в одномерном массиве индексы первого и последнего отрицательных элементов(с++) Борис. Помощь студентам 3 29.02.2012 20:49
Удалить прогу от первого до последнего байта Ksardas13 Общие вопросы C/C++ 1 08.04.2011 09:37
Перестановка в строке первого и последнего слова.. mihail0608 Общие вопросы C/C++ 16 08.12.2009 16:25