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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2012, 12:42   #1
bvak
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 12
По умолчанию Выход по нажатию клавиши

Есть одна программа :
Код:
.model tiny
.286
.code
org 100h
start:  MOV AH,0Fh ;запомнить видеорежим -- видеорежим может быть не обязательно равным 3
    INT 10h
    MOV byte ptr VIDEOR,AL; запоминаем видеорежим чтобы потом его востановить
    mov    ax,0A000h
        mov    ES,ax
        MOV     AX,13h
        INT     10h
    cld
        MOV     BX,2 ; инициализируем индекс фаз рисунка
        MOV    DI,320*12
    mov cx,200; время на экране -- ставь любое число
MOVE_MASK: push cx
    MOV  SI,tab[bx]
SHOW_KADR: MOV  CX,13; количество строк в рисунке
DRAW_H: push    cx
    MOV    CX,6 ; количество точек в строке делим на 2
        REP MOVSW; выводим сразу по 2 точки
        ADD    DI,320-12; переходим на следующую строку
        pop    cx
    loop DRAW_H
    xor bx,2; переключаем идекс фазы рисунка
    sub di,320*13-1; 1 - плавность перемещения по экрану чем больше число - тем быстрее
    push bx
    mov ah,0    ;Получить системное время
    int 1Ah    ; Return: CX:DX=число тиков от полуночи
    mov bx,dx  ;1 секунда=18.2 тика
delay:    int 1Ah    ;пропускаем 55 милисекунды
    cmp bx,dx
    jz delay
    pop bx
    pop cx
    loop MOVE_MASK
exit:   MOV     AX,VIDEOR; восстанавливаем первоначальный режим
        INT     10h
        INT     20h; выход в DOS
H1    DB 0,0,0,0,0,9,9,9,9,0,0,0
      DB 0,0,0,0,0,9,9,9,9,0,0,0
      DB 0,0,0,0,0,9,9,0,0,0,0,0
      DB 0,0,0,9,9,9,9,9,9,0,0,0
      DB 0,0,0,9,9,9,9,9,9,0,0,0
      DB 0,9,9,0,0,9,9,0,0,9,9,0
      DB 0,9,9,0,0,9,9,0,0,9,9,0
      DB 0,0,0,0,0,9,9,0,0,0,0,0
      DB 0,0,0,0,0,9,9,0,0,0,0,0
      DB 0,0,0,9,9,0,0,9,9,0,0,0
      DB 0,0,0,9,9,0,0,9,9,0,0,0
      DB 0,9,9,0,0,0,0,0,0,9,9,0
      DB 0,9,9,0,0,0,0,0,0,9,9,0

H2     DB 0,0,0,0,0,9,9,9,9,0,0,0
       DB 0,0,0,0,0,9,9,9,9,0,0,0
       DB 0,0,0,0,0,9,9,0,0,0,0,0
       DB 0,0,0,9,9,9,9,9,9,0,0,0
       DB 0,0,0,9,9,9,9,9,9,0,0,0
       DB 0,9,9,0,0,9,9,0,0,9,9,0
       DB 0,9,9,0,0,9,9,0,0,9,9,0
       DB 0,0,0,0,0,9,9,0,0,0,0,0
       DB 0,0,0,0,0,9,9,9,9,0,0,0
       DB 0,0,0,9,9,0,0,9,9,0,0,0
       DB 0,0,0,9,9,0,0,9,9,0,0,0
       DB 0,9,9,0,0,0,0,9,9,0,0,0
       DB 0,9,9,0,0,0,0,0,0,0,0,0


tab dw H1,H2; адреса фаз рисунков
VIDEOR dw 0
end    start
нужно сделать выход в любой момент выполнения программы ,по нажатию любой клавиши на клавиатуре. Подскажите как это можно реализовать. ну или хотя бы последовательность выполнения подскажите.

Последний раз редактировалось Stilet; 31.01.2012 в 22:30.
bvak вне форума Ответить с цитированием
Старый 31.01.2012, 14:42   #2
alexey2
Пользователь
 
Регистрация: 27.01.2012
Сообщений: 37
По умолчанию

копать в сторону функции 1 прерывания 16h
alexey2 вне форума Ответить с цитированием
Старый 31.01.2012, 22:14   #3
bvak
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 12
По умолчанию

но мне не нужно что бы человечек двигался по нажатию
мне нужно чтобы программа завершилась по нажатию клавиши.
bvak вне форума Ответить с цитированием
Старый 01.02.2012, 04:52   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

bvak
Приятно увидеть свою программу написанную 3.6.2009 и опубликованную здесь, чтобы программа завершилась по нажатию на любую клавишу нужно
Код:
delay:    int 1Ah    ;пропускаем 55 милисекунды
    cmp bx,dx
    jz delay
    pop bx
    pop cx
	mov ah,1<-- добавить эти строки
	int 16h<--
	jnz exit<--
    loop MOVE_MASK
exit:   MOV     AX,VIDEOR; восстанавливаем первоначальный режим
        INT     10h
        INT     20h; выход в DOS
Mikl___ вне форума Ответить с цитированием
Старый 01.02.2012, 21:36   #5
bvak
Пользователь
 
Регистрация: 14.04.2011
Сообщений: 12
По умолчанию

спасибо большое
bvak вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi выход из цикла по нажатию клавиши Фиалка001 Помощь студентам 4 16.10.2011 16:01
Выгрузка по нажатию клавиши. triest Паскаль, Turbo Pascal, PascalABC.NET 0 10.06.2011 16:40
По нажатию обеих кнопок мыши выход из программы Slash3 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 05.04.2009 00:47
Движения по нажатию клавиши ТРОЯН=) Помощь студентам 5 10.03.2009 21:11
Рисование по нажатию клавиши на клавиатуре... zvuk01 Помощь студентам 1 25.12.2007 17:49