|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.05.2011, 18:21 | #1 |
Новичок
Джуниор
Регистрация: 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 ; Конец программы |
17.05.2011, 18:21 | #2 |
Новичок
Джуниор
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
блок схема к программе | 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 |