Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Там только через прервания. Я так делал. Включить мышь, выключить. Только через них
     
  2. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    http://www.htl-steyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm
     
  3. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    INT 33 - Mouse Function Calls

    Mouse functions can be broken down into the following classes:

    INT 33,0 - Mouse Reset/Get Mouse Installed Flag

    INT 33,1 - Show Mouse Cursor

    INT 33,2 - Hide Mouse Cursor

    INT 33,3 - Get Mouse Position and Button Status

    INT 33,4 - Set Mouse Cursor Position

    INT 33,5 - Get Mouse Button Press Information

    INT 33,6 - Get Mouse Button Release Information

    INT 33,7 - Set Mouse Horizontal Min/Max Position

    INT 33,8 - Set Mouse Vertical Min/Max Position

    INT 33,9 - Set Mouse Graphics Cursor

    INT 33,A - Set Mouse Text Cursor

    INT 33,B - Read Mouse Motion Counters

    INT 33,C - Set Mouse User Defined Subroutine and Input Mask

    INT 33,D - Mouse Light Pen Emulation On

    INT 33,E - Mouse Light Pen Emulation Off

    INT 33,F - Set Mouse Mickey Pixel Ratio

    INT 33,10 - Mouse Conditional OFF

    INT 33,13 - Set Mouse Double Speed Threshold

    INT 33,14 - Swap Interrupt Subroutines

    INT 33,15 - Get Mouse Driver State and Memory Requirements

    INT 33,16 - Save Mouse Driver State

    INT 33,17 - Restore Mouse Driver State

    INT 33,18 - Set alternate subroutine call mask and address

    INT 33,19 - Get User Alternate Interrupt Address

    INT 33,1A - Set Mouse Sensitivity

    INT 33,1B - Get Mouse Sensitivity
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Все, что можно через прерывания, можно и через порты ввода-вывода )
     
  5. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    а какой у мышки порт?
     
  6. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    yashechka

    Ну какой-какой. Какие там порты для общения с COM1-4 - вот они и есть.
     
  8. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    А что мышь ПЫсы на 2 используют теже порты что и ком мыши?
     
  9. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    Не путайте самих себя и человека. Порты COM и PS/2 используют физические мыши. А человеку нужна работа с мышиным курсором, а не с физической мышью. Так что его путь - прерывания.
     
  10. Ysama00

    Ysama00 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    6
    Да, мне надо через прерывания. Вот примерно что-то в таком роде нарыл:
    Код (Text):
    1. ?? ;                         // Задать режим видео
    2.          mov ax, 3;
    3.          int 10h;            
    4.          ?? ;                         // Инициализация мыши
    5.         xor ax, ax;
    6.         int 33h;
    7.         ??  ;                         // Показать курсор
    8.         mov ax, 1;
    9.         int 33h;
    10.         ?? ;                          // Передвинуть курсор на средину
    11.         mov ax, 4;
    12.         mov cx, 0;                 // позиция по горизонтали
    13.         mov dx, 1;                 // позиция по вертикали
    14.         int 33h;
    Ну и правильно написать шапку и конец, чтобы работало. Помогите, пожалуйста, скомпилить. Проверьте, у кого есть возможность.
     
  11. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Это на тасме надо делать
     
  12. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    ; Prog08.asm - программа к Главе № 08

    ; (С) Авторские права на файлы-приложения принадлежат автору книги
    ; "Ассемблер? Это просто! Учимся программировать"
    ; Автор: Калашников Олег Александрович
    ; http://www.Kalashnikoff.ru
    ; Онлайн-поддержка: http://RFpro.ru

    ; --- Ассемблирование (получение *.com файла) ---
    ;При использовании MASM 6.11 - 6.13:
    ;ML.EXE prog08.asm /AT

    ;При использовании TASM:
    ;TASM.EXE prog08.asm
    ;TLINK.EXE prog08.obj /t/x


    CSEG segment
    assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
    org 100h

    ; === Начало программы ===
    Begin:
    mov ax,3 ;Это мы рассмотрим...
    int 10h ;...позже

    mov ax,3D00h ;Открываем файл для чтения
    mov dx,offset File_name ;Имя открываемого файла в DX
    int 21h
    jc Error_file ;Ошибка открытия файла? 

    mov Handle,ax ;Сохраним номер открытого файла
    mov bx,ax
    mov ah,3Fh ;Функция чтения файла
    mov cx,0FDE8h ;Будем читать в память 0FDE8h = 65000 байт
    mov dx,offset Buffer ;DX указывает на буфер для считывания
    int 21h

    mov ah,3Eh ;Закрываем файл
    mov bx,Handle
    int 21h

    mov dx,offset Mess_ok
    Out_prog:
    mov ah,9
    int 21h

    int 20h

    Error_file:
    mov dx,offset Mess_error
    jmp Out_prog

    Handle dw 0
    Mess_ok db 'File loaded! Start debugger!$'
    Mess_error db 'Can''t open file '
    File_name db 'c:\msdos.sys',0,'!$'
    Buffer equ $

    ; === Конец программы ===

    CSEG ends
    end Begin
     
  13. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Только тебе надо через биос. Почитать прерывания.
    1) Перевести режим из текстового в графический
    2) Включить мышь
    3)Обработать нажатие
    4) Поставить в координату точку
    5)Выключить
    6)Обратно перевести
     
  14. Ysama00

    Ysama00 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    6
    Да, надо через тасм. Мне бы кто дописал, что я там начеркал да протестил. Я думаю, для шарящего это несколько мин. Просто у меня сейчас доступа нет. А сделать надо.
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Dmitry_Milk

    Никто и не путает. Я лишь сказал что прерывания - не единственный способ.
     
  16. yurasyura

    yurasyura New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2012
    Сообщения:
    1
    Почитал - попробовал - чего-то не то.
     
  17. Ysama00

    Ysama00 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    6
    Никто не может подправить и проверить?
     
  18. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Здесь такой помощи вы не получите. Здесь подскажут, где ошибка в готовом, а готовое - как повезет.
     
  19. Bili

    Bili New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2012
    Сообщения:
    1
    Всем привет, извиняюсь может за нубский вопрос, но всё же попробую)
    Нужно с помощью WPF сделать textbox в который можно вводить числа, знак +-, '.', и установить ограничение на copy\paste символов. В общем примерно как поле калькулятора.
    Пока что вот такое условие в обработчике:
    Код (Text):
    1. private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e)
    2.         {
    3.             short num;
    4.             if (!short.TryParse(e.Text, out num))
    5.             {
    6.                 if ((e.Text.Equals(".") & (((TextBox)sender).Text.Length > 0))
    7.                     & !((TextBox)sender).Text.Contains<char>('.'))
    8.                 {
    9.                     e.Handled = false;
    10.                 }
    11.                 else
    12.                 {
    13.                     e.Handled = true;
    14.                 }
    15.             }
    16.         }
    Если кто может, помогите исправить или дописать, или же где искать) Заранее спасибо)
     
  20. Sholar

    Sholar New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2011
    Сообщения:
    189
    Как называется обработчик Sysenter/int2Еh? Можно его посмотреть где-нибудь в WRK или сурсах W2K?