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

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

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

> Требуется вывести оставшиееся дни недели после заданного и до заданного
сообщение
Сообщение #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

 





- Текстовая версия 25.04.2024 17:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name