Вопрос № 145787: Уважаемые эксперты, помогите пожалуйста. Вот эта чудная программа у меня должна была выводить системную дату. Год выдает как положено, а месяц и день кривой выходит....
Вопрос № 145.787
Уважаемые эксперты, помогите пожалуйста. Вот эта чудная программа у меня должна была выводить системную дату. Год выдает как положено, а месяц и день кривой выходит.
Приложение:
Отправлен: 02.10.2008, 16:50
Вопрос задал: Sergik1977 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Airyashov
программа работает нормально, только не нужно рассматривать день и месяц как число из 4-х байт.
mov ax, dx xchg dh,dl and ax,00ffh ;день and dx,00ffh ;месяц push ax push dx mov ax,cx ;сохраним месяц и день в AX
добавить еще один вывод с извлечение из стека
функция перевода неверно написана второй inc si лишний
Ответ отправил: Airyashov (статус: 8-ой класс)
Ответ отправлен: 02.10.2008, 17:16 Оценка за ответ: 5
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Sergik1977!
Всё правильно выводится, т.к. функция получения даты возвращает в регистре СХ год, а в регистрах DH и DL- месяц и число соответсвенно. В десятичную форму Вы переводите регистр DX т.е. если сегодня 10:2 то получается 10*256+2=2562. По Вашей программе нужно при выводе числа и месяца обнулять старший байт.
Код:
pop ax push ax xor ah,ah call DEC_ASC2;вывод числа ; ;вывод числа ; pop ax mov al,ah xor ah,ah call DEC_ASC2;вывод месяца
Удачи!
--------- Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев Тел.: +380979536619 Адрес: Украина г.Киев ---- Ответ отправлен: 02.10.2008, 17:40 Оценка за ответ: 5