IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Требуется вывести оставшиееся дни недели после заданного и до заданного
NightMan665
сообщение 4.03.2010 10:45
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Задача такая, нужно вывести все дни недели которые находяться после заданного числом дня и все дни которые идут заново, но до заданного дня, т. е. допустим

ВОС ПОН ВТО СРЕ ЧЕТ ПЯТ СУБ
задали число 3 - ВТО
должен вывести: ВТО СРЕ ЧЕТ ПЯТ СУБ ВОС ПОН
а выводит только: ВТО СРЕ ЧЕТ ПЯТ СУБ


.data?

	lpbuffer_output		db	64 dup(?)

.data

	sztitle			db	"Результат:  ",0

	szformat_month	db	0Dh, 0Ah, "%s", 0Dh, 0Ah, 0

;_____________________________________________________
three	db	4
monin	db	'02'
alfmon	db	'????', 0
montab	db	'ПОН ','ВТО ','СРЕ ','ЧЕТ ','ПЯТ ','СУБ ','ВОС '
;daytab  db	'ПОН ','ВТО ','СРЕ ','ЧЕТ ','ПЯТ ','СУБ ','ВОС '
;_____________________________________________________
.code

start:

; ============================= start ====================================
;title direct:  Прямой табличный доступ
;_____________________________________________________
main	proc

	xor eax,eax
	xor ebx,ebx
	xor edx,edx
	xor ecx,ecx
	xor esi,esi
	xor edi,edi

	call	c10conv	;получить двоичное значение
	call	d10loc	;выделить месяц из таблицы
	call	f10disp	;выдать месяц на экран
	ret
   	main	endp

;	перевод ASCII в двоичное представление
;	______________________________________
c10conv proc

	mov	ah,monin;загрузить номер месяца
	mov	al,monin+1
	xor	ax,3030h;удалить ASCII-тройки
	cmp	ah,0	;месяц 01-09?
	jz	c20	;да - обойти
	sub	ah,ah	;нет - очистить ah,
	add	al,10	;и перевести в двоичное
c20:	ret
c10conv	endp

;	выделение месяца из таблицы
;	___________________________
d10loc	proc

	lea	esi,montab
	dec	al	;коррекция для таблицы
	mul	three	;умножить al на 4
	add	si,ax
	mov	cx,70	;трехсимвольная пересылка
	cld
	lea	edi,alfmon
rep	movsb		;переслать 3 символа
	ret
d10loc	endp

;	вывод на экран названия месяца
f10disp proc
; output_message:
	push OFFSET alfmon	; вывод на экран имени месяца
	push OFFSET szformat_month; формат вывода на экран имени месяца
	push OFFSET lpbuffer_output
	call wsprintf

	push MB_OK
	push OFFSET sztitle
	push OFFSET lpbuffer_output
	push 0
	call MessageBox

	push 0
	call ExitProcess
	
f10disp	endp
end start


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 27.07.2025 5:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"