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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2010, 12:18   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию Вывести время в консольку

Добрый день. Народ, с Наступающим НГ!!!

вот нерабочий код:
Код:
mov ah,2ch ; получить время
int 21h

mov dx,ch 
mov ah,9 ; вывести строку
int 21h

mov dx,cl 
mov ah,9 ; вывести строку
int 21h
ругается на mov dx,ch и mov dx,cl .
почему не хочет из регистра в регистр инфу кидать не понимаю.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 29.12.2010, 12:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ругается на mov dx,ch и mov dx,cl .
Потому что разные размеры регистров.
Код:
mov dx,cx
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2010, 13:01   #3
Ant1971on
Пользователь
 
Регистрация: 20.07.2010
Сообщений: 52
По умолчанию

Размерность приемника и источника должна быть одинаковой. Попробуйте класть ch и cl в dl и выводить на экран с помощью 02h.
Ant1971on вне форума Ответить с цитированием
Старый 29.12.2010, 13:08   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

stilet
что то я не совсем понял , что это , но это точно не то, что надо))))
закатал так:
Код:
 mov ah,2ch ; получить время
  int 21h

  mov dx,cx
  mov ah,9 ; вывести строку
  int 21h
в картинке то, что получилось))


Ant1971on
а не получится, пробовал. Да и потом подумал, что выводит то он один символ, а в часах и минутах по 2 символа.

PS: хорошо, что windows ещё работает))) ну на фиг эти эксперименты!
Изображения
Тип файла: jpg Безымянный.jpg (40.7 Кб, 128 просмотров)
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 29.12.2010 в 13:14.
Rin вне форума Ответить с цитированием
Старый 29.12.2010, 13:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не-е-е-е)))))
Мало получить время, его еще нужно из числа привести в строку, чтоб распечатать на экране. Это ты только 25% написал кода )
поищи примеры как переводить число в строку на асме.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2010, 13:40   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

ага, вот оно чё значит. ну это можно. в стандартном модуле delphi есть функция перевода числа в строку на assembler`e ))
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 29.12.2010, 13:45   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот именно. Только учти - она 32итная, а твоя программа 16 битная если не ошибаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.12.2010, 04:54   #8
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

короче не получилось из SysUtils вытащить ассемблеровскую процедуру, т.к. inttostr вызывает ещё одну asm процедуру, та в свою очередьещё парочку уже из другого модуля, которые используют вперемешку asm и delphi. Да , у меня 16-разрядная прога. Поэтому все регистры без приставки "Е". Хотя пора бы уже использовать приставку "R")) поищу перевод циферок в строку и выложу рез-т.)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 05.01.2011, 08:31   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Сделал вот так =)

Код:
inttostr proc
@:      mov     al, timer
        aam
        mov     bh, al
        mov     al, ah
        aam
        mov     bl, al
        mov     dl, ah
        mov     ah, 02h
        add     dl, 30h
        add     bx, 3030h
        cmp     dl, 30h
        je      @1
        int     21h
        jmp     @2
@1:     cmp     bl, 30h
        je      @3
@2:     mov     dl, bl
        int     21h
@3:     mov     dl, bh
        int     21h
ret
inttostr endp

time proc
mov ah,2ch ; получить время
int 21h


mov timer,ch  ; в описании переменных :  timer db ? 
call inttostr

lea dx,simvol ; в описании переменных : sivol DB ':$'
   mov ah,9
   int 21h 

mov timer,cl
call inttostr

   ret
Time endp
ну и в программе
Код:
call time
естественно =)
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести в таблицу дату и время P10neer Microsoft Office Excel 2 24.12.2010 14:24
Как вывести в таблицу дату и время P10neer Microsoft Office Word 0 24.12.2010 00:25
Как вывести время выполнения операции. Dasharnb777 Общие вопросы .NET 3 05.12.2010 16:38
Как вывести время работы приложения razzmatazz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 23.03.2009 00:17
Нужно в edit1 вывести время! zotox Помощь студентам 1 11.12.2008 10:24