Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
25th
Янв
Мигающий экран на Assembler
Posted by obzor under assembler
Составить программу по выводу на экран мигающего окна, окрашенного красным цветом. Период и длительность мигания ввести с клавиатуры. Интегрированная среда программирования Tasm 5.0.
если таймер вводить в диапазоне 1-9, то можно так:
; fasm-code
; мигающий красный экран
;------------------------
org 100h
jmp start
tRed db 'Second 1-9: $'
slp dw 0 ; счётчик
start: mov ax,3 ; мода 80х25/16
int 10h
push 0b800h 0
pop fs es ; FS = bios, ES = видеобуфер
mov ah,9 ; мессага
mov dx,tRed
int 21h
mov ah,1 ; ввод секунд 0-9
int 21h
and ax,0fh ; символ-в-число
shl ax,4 ; *16 для тиков
mov [slp],ax ; запомнить счётчик!
mov ah,2 ; скрыть курсор
mov dx,1a01h
int 10h
mov bx,0cdbh ; 0Сh = красный, DBh = квадрат.
@fill: mov cx,80*25 ; символов на экране
mov ax,bx ; ..что выводить
xor di,di ; ..куда
rep stosw ; ..вывод на экран!
call Sleep ; спать!
mov cx,80*25 ; проснуться и повторить
mov al,' ' ; только не квадрат, а пробел (очистить экран)
xor di,di
rep stosw
call Sleep
mov ah,6 ; проверить буфер клавы..
mov dl,-1
int 21h
cmp al,13 ; Enter?
jnz @fill ; нет - повторить..
@exit: mov ah,4ch
int 21h ; на выход!
;--- Таймер ---------
Sleep: mov bp,word[fs:46ch] ; считать тики с биоса
add bp,[slp] ; прибавить задержку
@wait: mov dx,word[fs:46ch] ; ещё-раз считать
cmp dx,bp ;
jbe @wait ; если разница меньше..
ret ; иначе: вернуться!
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)