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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 18:21   #1
andrey_06_06
Новичок
Джуниор
 
Регистрация: 17.05.2011
Сообщений: 2
По умолчанию Нужна блок схема к программе (ассемблер)

model small ; Тип модели памяти
.stack 100h ; Выделяем сегмент под стек размером 255 байт
.data ; Сегмент данных
hours db ? ; Переменная для хранения часов
minuts db ? ; Переменная для хранения минут
seconds db ? ; Переменная для хранения секунд
.386 ; Используем инструкции 386-го процессора
.code ; Сегмент кода

Begin: ; Метка начала программы
mov ah, 02h ; 02 - ф-ция прерывания 1Ah для получения текущего времени
int 1Ah ; Вызываем прерывание
; Данная ф-ция этого прерывания заполнит ряд регистров показанием часов, а именно:
; В регистре CH будут часы
; В регистре CL будут минуты
; В регистре DH будут секунды

mov [hours], ch ; Сохраним в переменной показание часов
mov [minuts], cl ; Сохраним в переменной показание минут
mov [seconds], dh ; Сохраним в переменной показание секунд

; Теперь надо вывести все это на экран, предварительно преобразовав в ASCII форму
mov ah, [hours] ; Помещаем в регистр ah значение переменной hours (часы)
call print_ah ; Вызываем процедуру вывода значения регистра на экран

; Выведем разделитель ":", чтоб было что-то вроде "23:00:01"
mov al, ':' ; В регистр al помещаем символ для вывода
int 29h ; И выводим его на экран. int 29h - это недокументированое прерывание ДОСа.
; Оно выводит на экран символ, что находиться в регистре al в формате ASCII


; Аналогично поступаем для минут и секунд:

mov ah, [minuts]
call print_ah

mov al, ':'
int 29h
mov ah, [seconds]
call print_ah
mov ax, 0 ; 00 - функция прерывания 16h: ожидание нажатия любой клавиши
int 16h
mov ax, 4C00h
int 21h ; Выходим в ДОС

; Процедура по выводу значения регистра на экран (старшей части регистра ax)
print_ah proc ; Процедура вывода на экран содержимого регистра ah в hex-форме
xchg dx, ax ; DX = AX
mov cx, 2 ; Число цифр для вывода (Если поставить 4 - выведет содержимое всего регистра)
shift_ax:
shld ax, dx, 4 ; Получить в AL очередную цифру
rol dx, 4 ; Удалить ее из DX
and al, 0Fh ; Оставить в AL только эту цифру
cmp al, 0Ah ; Три команды, переводящие
sbb al, 69h ; Шестнадцатеричную цифру в AL
das ; В соответствующий ASCII-код
int 29h ; Вывод на экран
loop shift_ax ; Повторить для всех цифр
ret
print_ah endp
end Begin ; Конец программы
andrey_06_06 вне форума Ответить с цитированием
Старый 17.05.2011, 18:21   #2
andrey_06_06
Новичок
Джуниор
 
Регистрация: 17.05.2011
Сообщений: 2
По умолчанию

нужна схема этой строчки
print_ah proc ; Процедура вывода на экран содержимого регистра ah в hex-форме
xchg dx, ax ; DX = AX
mov cx, 2 ; Число цифр для вывода (Если поставить 4 - выведет содержимое всего регистра)
shift_ax:
shld ax, dx, 4 ; Получить в AL очередную цифру
rol dx, 4 ; Удалить ее из DX
and al, 0Fh ; Оставить в AL только эту цифру
cmp al, 0Ah ; Три команды, переводящие
sbb al, 69h ; Шестнадцатеричную цифру в AL
das ; В соответствующий ASCII-код
int 29h ; Вывод на экран
loop shift_ax ; Повторить для всех цифр
ret
print_ah endp
end Begin ; Конец программы

Последний раз редактировалось andrey_06_06; 17.05.2011 в 18:54.
andrey_06_06 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок схема к программе emin313gs Помощь студентам 0 11.10.2010 17:35
нужна блок-схема к программе solisoul Помощь студентам 3 26.08.2010 08:44
блок схема алгоритма программы (Ассемблер) Sokolova91 Помощь студентам 0 30.03.2010 23:40
Блок схема к программе NeGaTiVe Помощь студентам 2 02.11.2009 15:18
Нужна блок схема к готовой программе. BioVis Фриланс 8 11.05.2009 18:03