Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 27.05.2018, 23:28   #1
Capitoska
 
Регистрация: 27.05.2018
Сообщений: 4
Репутация: 10
По умолчанию Мигающий экран

Помогите пожалуйста составить программу по выводу на экран мигающего окна, окрашенного красным цветом. Период и длительность мигания ввести с клавиатуры. Интегрированная среда программирования Tasm 5.0.
Дело в том, что я пишу на другом языке программирования, а ещё и этот надо сдавать. Помогите.
Capitoska вне форума   Ответить с цитированием
Старый 28.05.2018, 07:51   #2
Ulex
Непрофессионал
Профессионал
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Адрес: город Н-ск.
Сообщений: 1,423
Репутация: 1104
По умолчанию

Нашёл что-то подобное, вроде даже работает.
Я же правильно понял, что это что-то под ДОС ?
Вложения
Тип файла: zip proga75.zip (1.9 Кб, 15 просмотров)
__________________
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума   Ответить с цитированием
Старый 29.05.2018, 02:12   #3
Capitoska
 
Регистрация: 27.05.2018
Сообщений: 4
Репутация: 10
По умолчанию

Хм, спасибо за код. Это как раз то, что мне надо. Только вот у меня маленькая проблемка появилась. При компиляции кода почему-то не работает программа ( не показывает красное окно), но exe файл, которое вы мне скинули исправно работает. Может знаете, с чем это может быть связано?
Capitoska вне форума   Ответить с цитированием
Старый 29.05.2018, 09:23   #4
R71MT
Профессионал
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Адрес: Фергана
Сообщений: 1,280
Репутация: 1026
По умолчанию

если таймер вводить в диапазоне 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                      ; иначе: вернуться!

Вложения
Тип файла: zip RedBull.zip (1.0 Кб, 5 просмотров)
__________________
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Старый 25.01.2019, 17:44   #5
Vitali_Zanka
Новичок
 
Регистрация: 25.01.2019
Сообщений: 1
Репутация: 10
По умолчанию

.286
.model small
.stack 100h

.data
timeRed dw 0
timeAll dw 0

flRB db 1
cntM db 0
deltime dw 0

msgRed db 'time RED = $'
msgPeriod db 'time Period = $'

cr = 0dh ; 楤 뢮 ᥫ
lf = 0ah
string db 255, 0, 255 dup (?)
errmsg db 'error: illegal symbol'
crlf db cr,lf,'$'
negflag dw ?

.code
start:
mov ax, @data
mov ds, ax

mov ah,9
lea dx, msgRed
int 21h
call IntegerIN
mov [timeRed], ax

mov ah,9
lea dx, msgPeriod
int 21h
call IntegerIN
mov [timeAll], ax

mov ah, 0fh
int 10h
push ax

mov ax,0003h
int 10h

mov ax, [timeRed]
mov [deltime], ax

mov ax,0B800h
mov es,ax
mov di, 80*2

next:
push di
mov ax, 04400h
cmp [flRB], 0
jnl next_setB
mov ax, 00000h
next_setB:
mov bx, 2
add di, 2

next_copy2:
mov [esi], ax
add di, 2
add bx, 2
cmp bx, 80*2-2
jne next_copy2
mov bx, 2
add di, 4
cmp di, (80*2)*24
jnl end_copy
jmp next_copy2
end_copy:
pop di

call delay
neg [flRB]

mov ax, [timeRed]
cmp [flRB], 0
jnl next_setB2
mov dx, ax
mov ax, [timeAll]
sub ax, dx
next_setB2:
mov [deltime], ax

mov ah,01h
int 16h
je next

pop ax
mov ah, 00h
int 10h
mov ax,4C00h ; 蠥 ணࠬ
int 21h

IntegerIn proc ; 楤 楫 ᫠ ax
mov ah,0ah
lea dx,string
int 21h
xor ax,ax
lea si,string+2
mov negflag,ax
cmp byte ptr [si],'-'
jne m2
not negflag
inc si
jmp m3
m2: cmp byte ptr [si],'+'
jne m3
inc si
m3: cmp byte ptr [si],cr
je ex1
cmp byte ptr [si],'0'
jb er
cmp byte ptr [si],'9'
ja er
mov bx,10
mul bx
sub byte ptr [si],'0'
add al,[si]
adc ah,0
inc si
jmp m3
er: lea dx,errmsg
mov ah,9
int 21h
jmp IntegerIn
ex1: cmp negflag,0
je ex
neg ax
ex: push ax
mov ah,9
lea dx,crlf
int 21h
pop ax
ret
IntegerIn endp

delay proc near
mov ah,2Ch
int 21h
mov [cntM], cl
mov bx,dx
xor dx, dx
mov al, bh
mov cx, 100
mul cx
mov dl, bl
add ax, dx
push ax

del1:
mov ah,2Ch
int 21h
cmp [cntM], cl
jnl del_ncm
add dh, 60
del_ncm:
mov bx,dx
xor dx, dx
mov al, bh
mov cx, 100
mul cx
mov dl, bl
add ax, dx
pop dx
sub ax, dx
push dx
cmp ax, [deltime]
jl del1

pop ax
ret
delay endp

end start

Помогите, пожалуйста, с комментариями к этой задаче. Что и как делается?
Vitali_Zanka вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означает мигающий значек с изображением фотоаппарата (камеры) Katerin_angel Безопасность, Шифрование 1 23.11.2012 09:26
Мигающий курсор при нажатии на кнопку-картинку raBpywa HTML и CSS 0 03.03.2012 14:12
Экран смерти Bat{CMD}_Men Общие вопросы Delphi 17 31.08.2009 00:57
Как переместить мигающий курсор? Сергей089 Паскаль 1 04.06.2009 17:35
Как сделать мигающий текст в Pascale??? Danilyuk Паскаль 1 31.05.2008 17:57


23:20.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru