![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Здраствуйте.
Требуется вывести на экран системное время. Запрос времени осуществляет функция
mov AH,2Ch
int 21h
Тогда в следующие регистры попадёт инормация о времени: ; CH - час, CL - мин, DH - сек, DL - 1/100 сек Теперь вопрос: а как содержимое этих регистров вывести на экран? Как я поняла, нужно сначала преобразовать в строку? Не пойму, как это сделать...Объясните пожалуста. Сообщение отредактировано: 18192123 - 26.05.2008 21:36 |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
смотри - вывод одного числа из ах:
;процедура вывода одного числа
wywod proc near
push ax
push cx
push dx
; Поделим это число на десять. Остаток - правая цифра -
; получится в AL, частное в AH.
aam
; Запомним младшую цифру, перейдём к частному.
mov cl, al
mov al, ah
; Его тоже поделим на десять. В AL получим вторую цифру,
; в AH - частное от деления исходного числа на 100.
; А это старшая цифра, ведь в один байт помещаются
; максимум трёхзначные числа.
aam
mov ch, al
mov dl, ah
; Итак, теперь цифры числа хранятся в DL, CH, CL.
; Приступим к выводу. Заготовим номер функции.
mov ah, 02h
; Переведём все цифры в символы.
add dl, 30h
add cx, 3030h
; Теперь попытаемся избежать вывода незначащих нулей.
; Если старшая цифра не ноль, начинаем вывод с неё.
cmp dl, 30h
jnz short ob1
; Если ноль, то проверяем вторую цифру.
cmp ch, 30h
jnz short ob2
; Если она тоже ноль, то выведем только младшую,
; даже если и она ноль.
jmp short ob3
ob1: int 21h
ob2: mov dl, ch
int 21h
ob3: mov dl, cl
int 21h
pop dx
pop cx
pop ax
ret
wywod endp
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 12:48 |