Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Чтение значения счетчика времени




Примеры небольших подпрограмм на Ассемблере

· Чтение строки с клавиатуры

· Перевод чисел в двоичную форму (в виде строки)

· Чтение значения счетчика времени

· Определение типа процессора

· Установка видеорежимов VGA

· Запись напрямую в видеопамять

· Рисование пиксела в различных режимах VGA

· Рисование в SVGA

· Линейные преобразования в системах с фиксированной точкой

· Функция синуса в 32-битной системе с фиксированной точкой

· Таблица расположения файлов FAT

· Выполнение дочерней программы

· Чтение параметров командной строки

· TSR: Завершаемся и остаемся в памяти

· Проверка готовности накопителя

 

KbdInput$ proc;POW35

; Входные данные: смещение строки в AX

; Выходные данные: строка ASCIIZ, прочитанная с клавиатуры. Регистры не сохраняются.

mov DI,AX;смещение строки

mov DX,AX;смещение буфера

mov CX,255;максимальное количество читаемых символов

mov BX,0;файловый хэндл клавиатуры

mov AH,3Fh;читаем из файла (фактически - с клавиатуры)

int 21h

jc Input$_error;если ошибка

dec AX;убираем символ RETURN

add DI,AX;смещение байта, расположенного в конце строки

Input$_error:

mov [DI],BL;завершаем строку, записывая 0 в конец строки

ret

KbdInput$ endp

Перевод чисел в двоичную форму (в виде строки)

Данная процедура конвертирует 16-битное слово в строку ASCIIZ, т.е. число 7 преобразовывается в строку 0000000000000111. Лидирующие нули включаются в строку. Строка ASCIIZ - это набор символов, завершающихся 0.

NmbrToBi$ proc;POW36

;Входные данные: AX - смещение строки, BX - число, которое необходимо преобразовать

;Выходные данные: Строка ASCIIZ. Регистры не сохраняются.

mov DI,AX;смещение строки

mov DX,8000h;проверочное слово, 1 в позиции 15

mov CX,16;обрабатываем 16 бит

NumberTo_B0:

mov AL,48;символ '0'

test BX,DX;бит равен 1?

jz NumberTo_B

inc AL;символ '1'

NumberTo_B:

stosb;записываем в строку '1' или '0'

shr DX,1;сдвигаем тестовый бит вправо

loop NumberTo_B0

mov [DI],DL;завершаем строку 0

ret

NmbrToBi$ endp

Чтение значения счетчика времени

В памяти по адресу 40:6C расположено двойное слово, которое увеличивается на единицу приблизительно 18.2 раза в секунду. Системное время можно получить, считывая это слово. Младший байт может быть использован для многих "временных" задач, в т.ч. в качестве исходного значения для генератора псевдослучайных чисел (а в некторых случаях и заменить его).

GetTicks proc;POW37

; Входные данные: нет

; Выходные данные: Младший байт счетчика времени в AX

; Регистры не сохраняются.

mov BX,ES;Сохраняем адрес дополнительного сегмента

mov AX,40h;сегмент данных BIOS

mov ES,AX

mov AX,ES:[6Ch];читаем счетчик

mov ES,BX;восстанавливаем регистр ES

ret

GetTicks endp





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 353 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2258 - | 2106 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.