Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29

Разработать программу, которая не реагирует на нажатия клавиш Ctrl+Break и Ctrl+C

18.01.2014, 14:56. Показов 2837. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И мне помогите пожалуйста)) На входном языке Assembler разработать программу, которая не реагирует на нажатия клавиш Ctrl+Break и Ctrl+C. Выход из программы по нажатию клавиши Esc, при разработке использовать перехват прерываний клавиатуры и порты ввода-вывода.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2014, 14:56
Ответы с готовыми решениями:

ReadKey() не реагирует на нажатия Alt,Ctrl,Shift
Не реагирует на нажатия Alt,Ctrl,Shift . ConsoleKeyInfo press; Console.WriteLine("введите символы :"); ...

Реализовать добавление данных пользователем при помощи комбинации клавиш ctrl+c, ctrl+v в таблицу
Добрый день! Подскажите, как можно реализовать добавление данных пользователем при помощи комбинации клавиш ctrl+c, ctrl+v в таблицу. ...

Как перевести сочетание клавиш ctrl+v на, например ctrl+z?
Собственно проблема заключается вот в чем: у меня на ноутбуке отказали клавиши (пробел:gcray2: ,я, м, и, э, del, стрелка вниз, 6 на правой...

10
 Аватар для Naydli
217 / 53 / 4
Регистрация: 03.08.2013
Сообщений: 278
18.01.2014, 15:13
Косtян, для перехвата прерывания необходимо грузить векторы прерывания (по крайней мере в PM) PS\2 клавиатура имеет по умолчанию порт 60H. Нажатие клавиши генерирует скан-код который можно считать с данного порта для проведения операций.
1
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29
18.01.2014, 15:38  [ТС]
Цитата Сообщение от mashuly Посмотреть сообщение
Косtян, для перехвата прерывания необходимо грузить векторы прерывания (по крайней мере в PM) PS\2 клавиатура имеет по умолчанию порт 60H. Нажатие клавиши генерирует скан-код который можно считать с данного порта для проведения операций.
Можно примерный код?)
0
 Аватар для Naydli
217 / 53 / 4
Регистрация: 03.08.2013
Сообщений: 278
18.01.2014, 15:40
Цитата Сообщение от Косtян Посмотреть сообщение
Можно примерный код?)
Примерный код чтения скан-кода с клавиатуры или целую систему с IRQ?
0
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29
18.01.2014, 15:41  [ТС]
мне бы код программы в общем, потому что в ассемблере я не силен(
0
 Аватар для Naydli
217 / 53 / 4
Регистрация: 03.08.2013
Сообщений: 278
18.01.2014, 15:46
Косtян, вот тут есть немного https://www.cyberforum.ru/asm-... 72167.html
Еще советую порыться в книгах Руслана Аблязова, у него исходники более грамотно оформлены.
1
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29
18.01.2014, 15:48  [ТС]
спасибо, я посмотрю)
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.01.2014, 17:19
Косtян, вот, слепил маленький прикольчик на ФАСМе:
Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
;сохранять в 866 кодовой стр.
               org  100h
start:         jmp  main
 
_int1C:         pushf
        inc byte ptr cs:flag
        cmp byte ptr cs:flag,9  ; got 0.5 sec. signal?
        jz  @@1         ; yes, processing
@@0:        popf
        jmp dword ptr cs:old_int1C      ; go back
@@1:        mov byte ptr cs:flag, 0
        push    ax
        push    bx
@@:     mov bx,[cs:idx]
        mov al, byte ptr cs:symb+bx
        or  al,al
        jnz @F
        mov word ptr cs:idx, 0
        jmp @B
@@:     inc bx
        mov word ptr cs:idx, bx
        int 29h
        pop bx
        pop ax
        jmp     @@0
old_int1C:  dd  ?
flag:       db  0
idx:        dw  0
symb:       db  'В чащах юга жил-был цитрус.Да, но фальшивый экземпляр!',0Ah, 0Dh,0
_int15:     
        pushf
        cmp ah,4Fh
        jz  _keyb
gtfo:       call    far [cs:old_int15]      ; go back
        iret
_keyb:      
        cmp al, 1
        stc
        jz  gtfo
        push    bx
        aam 10h
        xchg    ah,al
        mov bl,ah
        call    cvt
        mov al, bl
        call    cvt
        mov al,20h
        int 29h
        pop bx
        popf
        clc
        retf    2
cvt:    
        add al, 90h ; AL is from 90h to 09Fh.
        daa     ; AL is from 90h to 99h (carry clear) or 00h to 06h (carry set).
        adc al, 40h ; AL is from 0D0h to 0D9h or 41h to 46h.
        daa     ; AL is from 30h to 39h ("0" to "9") or 41h to 46h ("A" to "F").
        int 29h
        ret
old_int15:  dd  ?
 
main:
        push    cs
        push    cs
        pop ds
        pop es
                mov     ax, 351Ch                                     ; получить в ES:BX адрес прерывания 1Ch
            int     21h
            mov     word ptr cs:old_int1C, bx     ; запомним старый адрес 1Ch
            mov     word ptr cs:old_int1C+2, es    ; прерывания
                mov     ax, 251Ch                                             ; установим вектор на 1Ch
            mov     dx, _int1C        ; прерывание
            int     21h
                mov     ax, 3515h                                     ; получить в ES:BX адрес прерывания 1Ch
            int     21h
            mov     [cs:old_int15], bx     ; запомним старый адрес 
            mov     [cs:old_int15+2], es    ; прерывания
                mov     ax, 2515h                                             ; установим вектор на 15h
            mov     dx, _int15        ; прерывание
            int     21h
        xor ax, ax
        int 16h
remove: 
            mov dx, word ptr cs:old_int1C     ; возвращаем вектор прерывания
            mov ds, word ptr cs:old_int1C+2    ; на место
            mov ax, 251Ch
                int 21h
            mov dx, [cs:old_int15]     ; возвращаем вектор прерывания
            mov ds, [cs:old_int15+2]    ; на место
            mov ax, 2515h
                int 21h
exit:                                   ; выход
            int 20h

Не по теме:

И да, объясните своему преподу, что использование перехвата int 9 и работы с контроллером прерываний по портам во времена виртуальных машин попахивает быдлокодерством.

1
20.01.2014, 21:09
 Комментарий администратора 
Косtян, одна тема - один вопрос. Создавайте для своих вопросов новые темы.
0
24.01.2014, 21:07

Не по теме:

mashuly, еще бы ОСь предложила написать челу :D

0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
25.01.2014, 03:32
Начните любую DOS-овскую программу с заклинания
Assembler
1
2
3
4
5
6
7
8
9
    push    ds
    push    cs
    pop ds
    call    metka
    iret
metka:  pop dx
    mov ax, 2523h
    int 21h
    pop ds
и она перестанет завершаться при нажатии Ctrl-Break или Ctrl-C.
Впрочем, это не вполне соответствует заданию, данному ТС.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2014, 03:32
Помогаю со студенческими работами здесь

Перехват Ctrl-C и Ctrl-Break
Нужна помощь с решением задачи, суть такова, что это должна быть консольная программа, которая бы реагировала на нажатие CTRL+C и...

Автоматизация нажатия клавиш Ctrl+Shift+F9
Проблема состоит в автоматизации нажатия клавиш Ctrl+A затем Ctrl+Shift+F9 для нескольких документов Word в одной папке. Иногда не очень...

После нажатия клавиш Ctrl + V приложение зависает несколько секунд
У меня такая проблема. Иногда, когда я делаю ctrl-с ctrl-v, после нажатия на ctrl-v приложение зависает секунд на 5-10, а иногда и на 20....

JTextPane, функции Ctrl+A, Ctrl+C, Ctrl+X перенести на кнопку
Класс JTextPane поддерживает нажатие клавиш таких как Ctrl+A, Ctrl+C, Ctrl+X и т. д. Вопрос заключается в том, чтобы функции, которые...

Как отловить нажатие ctrl+v ctrl+c ctrl+x key_Press
Как правильно отловить нажатие ctrl+v ctrl+c ctrl+x в событии key_Press? я пробую так: private void textBox_ServerIP_KeyPress(object...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru