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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2009, 20:13   #1
gogi73
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию

програмка по ассемблеру

задача :
вывести на экран текущее время и текущую дату.
использование 1ah прерывание и 2h макрос и 4h функции

Ребята помогите пожалуйста с задачкой....буду очень признателен....могу помочь финансово.....

Последний раз редактировалось rpy3uH; 11.06.2009 в 09:08.
gogi73 вне форума Ответить с цитированием
Старый 10.06.2009, 21:38   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Вот как вывести дату:
Код:
model tiny
.186
.code
org 100h
begin:
;устанавливаем текстовый режим
  mov ax,3
  int 10h
;выводим сообщение
  mov ah,9
  mov dx,offset Data_x
  int 21h
;получаем дату
  mov ah,2ah
  int 21h
;вывод дня
  mov al,dl
  xor ah,ah
  call OutNumber
;вывод месяца
  mov al,dh
  xor ah,ah
  call OutNumber
;вывод года
  mov ax,cx
  call outNumber
;любая клавиша
  xor ax,ax
  int 16h
  ret
;подпограмма вывода числа в десятичной системе
outNumber:
  pusha
;устанавливаем систему и счетчик цифр
  mov bx,10
  xor cx,cx
;делим на основание системы
isDiv:  xor dx,dx
  div bx
;запоминаем в стеке и увеличиваем счетчик цифр в стеке
  push dx
  inc cx
;повторяем пока Ах не равно 0
  or ax,ax
  jnz isDiv
;извлекаем из сткека число
isOut:  pop ax
;переводим его в символ
  or ax,30h
;выводим
  int 29h
  loop isOut
;выводим разделяющий пробел
  mov al,20h
  int 29h
  popa
  ret
Data_x  db 10,13,'Data:$'
end begin
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 10.06.2009, 22:05   #3
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

можно и напрямую через CMOS дату получить.
DEADHUNT вне форума Ответить с цитированием
Старый 11.06.2009, 15:10   #4
gogi73
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию )))

Помогите пожалуйсто ещё вывести время на экран с описанием...
gogi73 вне форума Ответить с цитированием
Старый 11.06.2009, 19:41   #5
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Я прикрепил программу, которая показывает время и дату через прерывание 1ah и позволяет установить новые.
Вложения
Тип файла: rar kuh.rar (3.3 Кб, 243 просмотров)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 11.06.2009, 19:56   #6
gogi73
 
Регистрация: 10.06.2009
Сообщений: 3
По умолчанию )))

Дружище спасибо тебе но файл не разорхивируеться выдаёт ошибку
gogi73 вне форума Ответить с цитированием
Старый 11.06.2009, 20:17   #7
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Вроде все нормально, у меня разархивировалось!
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 11.06.2009 в 20:19.
MalCer вне форума Ответить с цитированием
Старый 12.06.2009, 12:57   #8
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Цитата:
вывести время на экран
Вот так еще можно
Код:
.386
CSEG segment use16
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h

Begin:

     mov ah,02ch
     int 1ah
     mov al,ch
     call bcd_asc
     mov word ptr time,ax
     mov al, cl
     call bcd_asc
     mov word ptr time+3,ax
     mov al,dh
     call bcd_asc
     mov word ptr time+6,ax

     mov ah, 09h
     mov dx, offset clock
     int 21h

bcd_asc proc

      mov ah,al
      and ah,0fh
      add ah,'0'
      and al,0f0h
      shr al, 4
      add al,'0'
      ret
bcd_asc endp
     clock db 'TekyLLLee Bpemy '
     time db 0,0,':',0,0,':',0,0,'$'
CSEG ends
end Begin
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 18.01.2012, 17:17   #9
аннна
Новичок
Джуниор
 
Регистрация: 18.01.2012
Сообщений: 1
По умолчанию

а как вывести еще день недели(словом)
аннна вне форума Ответить с цитированием
Старый 02.10.2012, 22:00   #10
Adis
 
Регистрация: 23.11.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от MalCer Посмотреть сообщение
Вот так еще можно
Код:
.386
CSEG segment use16
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h

Begin:

     mov ah,02ch
     int 1ah
     mov al,ch
     call bcd_asc
     mov word ptr time,ax
     mov al, cl
     call bcd_asc
     mov word ptr time+3,ax
     mov al,dh
     call bcd_asc
     mov word ptr time+6,ax

     mov ah, 09h
     mov dx, offset clock
     int 21h

bcd_asc proc

      mov ah,al
      and ah,0fh
      add ah,'0'
      and al,0f0h
      shr al, 4
      add al,'0'
      ret
bcd_asc endp
     clock db 'TekyLLLee Bpemy '
     time db 0,0,':',0,0,':',0,0,'$'
CSEG ends
end Begin
тут процедура bcd_asc насколько понял переводит из двоичной в 10 неправильно
Adis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текущее время (системное время ) Sirk0 Общие вопросы Delphi 27 07.03.2015 17:52
Текущее время Aндрей Помощь студентам 1 08.05.2009 14:01
Как сделать так, чтобы в TLabel отображались текущее системное время? Bill Gates Общие вопросы Delphi 3 03.01.2008 01:12
Текущее время Greyglass Microsoft Office Excel 4 22.11.2007 13:25