Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 11054
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4487
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1572
Дата выхода:17.11.2015, 23:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:17 / 7
Вопросов / ответов:1 / 1

Консультация # 188200: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: помогите доделать программу, внизу код программы что смог сам сделать, не получается сделать задержку и очистку, помогите, или другой код программы дайте, срочно нужно задание: Вывести несколько строк произвольного текста, содержащие лишь латинские буквы. Каждые 10 секунд заглавные буквы ...


Консультация # 188200:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
помогите доделать программу, внизу код программы что смог сам сделать, не получается сделать задержку и очистку, помогите, или другой код программы дайте, срочно нужно
задание:
Вывести несколько строк произвольного текста, содержащие лишь латинские буквы. Каждые 10 секунд заглавные буквы сменяются строчными и т. д.


data segment
massbol db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','$'
massmal db 'abcdefghijklmnopqrstuvwxyz','$'
message db 'Vvedite proizvolnyi text ili nabor simvolov,lish v latinic:',0ah,'$'
stroka db 80 dup('$'),'$'
pust db 80 dup('$'),'$'
data ends
code segment
assume cs:code,ds:data


begin:mov ax,data
mov ds,ax
lea dx,message
mov ah,09h
int 21h
lea dx,stroka
mov ah,0ah
int 21h


lea si,stroka+2
xor cx,cx
mov cl,stroka+1
beg:
xor sp,sp
mov sp,26
lea di,massbol
lea bx,massmal
verh:
mov ah,[si]
mov al,[di]
cmp ah,al
jne da1
mov dl,[bx]
da1:
mov ah,[si]
mov al,[bx]
cmp ah,al
jne da2
mov dl,[di]
da2:
inc di
inc bx
dec sp
cmp sp,0
jne verh
mov ah,02h
int 21h
inc si
loop beg

quit:mov ax,4c00h
int 21h
code ends
end begin

если можно, с комментариями эту исправить, т.к. это я писал для компилятора emu8086

Дата отправки: 15.11.2015, 17:50
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 399158!
Строки с большими и малыми буквами лишние.
Они отличаются значением 20h.
Этим и воспользуемся...

Код :
data		segment
message 	db	'Vvedite proizvolnyi text ili nabor simvolov,lish v latinic:',0dh,0ah,'$'
stroka 	db 	80,0,80 dup(?)		;для функции 0ah требуется указать в первом байте 
							;длину буфера, во втором будет реальная длина
data 	ends

code 	segment
assume cs:code,ds:data

begin:
	mov 	ax,data
	mov 	ds,ax
	lea 	dx,message
	mov 	ah,09h
	int	21h
	lea	dx,stroka
	mov 	ah,0ah
	int 	21h					;ввели строку

	mov	dl,0ah
	mov	ah,2
	int	21h					;перейдем на новую строку

	lea 	si,stroka+2			;все правильно - имеем адрес самой строки
	mov	dx,si				;сохраним для вывода, все замены сделаем на месте
	xor 	cx,cx				;счетчик байт
	mov 	cl,stroka+1			;реальное количество введенных байт
	mov	ah,20h				;большие и малые буквы отличаются этим битом!
							;будем превращать их друг в друга xor-я с этим байтом! 
beg:
	mov 	al,[si]				;читаем очередной байт
	xor	al,ah				;превращаем одного в другого (и неважно, какой он был!)
	mov	[si],al				;возвращаем на место
	inc 	si					;адрес следующего
	loop	beg					;цикл по всем

	mov	byte ptr [si],'$'		;закрываем строку для функции 9
	mov	ah,9	
	int	21h					;выводим

	mov	ah,0
	int	16h					;ждем нажатие на клавишу

	mov ax,4c00h
	int 21h
code ends
end begin

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 17.11.2015, 00:24
Рейтинг ответа:

НЕ одобряю +2 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное