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

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

  1. jawbreaker

    jawbreaker New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    6
    Помогите пожалуйста с лабораторной: мне нужно чтобы при нажатии клавиши её скан-код заменялся другим, т.е. нажимаю А а выводится В. Насколько я понял нельзя просто записать значение в регистр ch и вызвать int 16h? Нужно обработчик прерывания заменять своим или как ещё? Мне сдавать через несколько дней поэтому буду благодарен за код в особенности =)
     
  2. Drock

    Drock New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2008
    Сообщения:
    1
    Существует множество систем наблюдения за действиями персонала. А как отследить то, что отправляется на печать? Смотрел в google,там пишут,что есть способы это отседить,но пишут об этом только в общем,ничего конкретного.
     
  3. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Простейший способ - в свойствах принтера поставить галку "сохранять документы после печати". Потом ознакомиться с содержимым каталога %windir%\system32\spool\printers
     
  4. sp1k

    sp1k New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2007
    Сообщения:
    24
    Правильно, читай про перехват прерываний...
     
  5. WoLfhOUnD

    WoLfhOUnD New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2008
    Сообщения:
    5
    Харош) сеня на лабу сходил ... дали полное задание: В командной строке задается параметр, состоящий из букв и цифр.
    Удалить все символы не являющиеся цифрами.
    Ток мне она сказала еще и макросы впаять туда ... так я в принципе понял как делать ... через сравнение ASCII кода ... вот как это через макросы забабахать? ...
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    jawbreaker
    1) Можно конечно подменить код прерывания int 16h на свой, но это долго объяснять и это не уровень лабораторной работы, если интересно как это делать -- читай про вирусы в DOS
    2) Более простой вариант -- использовать ввод строки символов с клавиатуры без вывода ее на экран. Это используется в DOS, например для ввода пароля -- используется функция 3Fh прерывания 21h. На адрес памяти куда будет помещена строка указывают регистры DS:lol: X. В регистр BX помещаешь ноль, в CX — максимальное число символов и вызываешь прерывание 21h
    Код (Text):
    1. a0:   mov ah,3Fh    ;номер функции
    2.    mov dx,offset BUFFER ;адрес буфера
    3.    mov bx,0
    4.    mov cx,1; один символ
    5.    int 21h
    6.    mov dl,BUFFER
    7.    cmp dl,'a'
    8.    jne a1
    9.    mov dl,'b'
    10. a1: cmp dl,13; код Enter
    11.    je a2
    12.    mov ah,2; вывод единственного символа на экран
    13.    int 21h
    14.    jmp a0
    15. a2: ; выходим из программы подмены символов
    читаешь посимвольно, сравниваешь введенный символ с тем, что должен быть подменен и выводишь его на экран функцией 2 прерывание 21h
    3) можно подменять символы в буфере клавиатуры
    по адресу 41Ah расположен указатель на логическое начало буфера
    по адресу 41Сh расположен указатель на логический конец буфера
    по адресу 41Eh расположена память для хранения ASCII/ скан-кодов
    по адресу 43Eh расположен конец буфера
    по адресу 480h расположен указатель на физическое начало буфера
    по адресу 480h расположен указатель на физический конец буфера
    более подробно -- ищи информацию про кольцевой буфер клавиатуры
    4) если буква из русской раскладки клавиатуры -- можно подменить кодировку символа в руссификаторе
    Было бы желание, знания и фантазия -- можно предложить еще десяток способов
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    WoLfhOUnD
    Для начала прочитай в учебнике ЧТО такое макросы, там и примеры должны быть. Еще тебе потребуется разбор командной строки -- смотри в этой же ветке этот вопрос регулярно задают, используй google -- неплохая поисковая система
     
  8. jawbreaker

    jawbreaker New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    6
    Mikl___ спасибо за разъяснения, но у меня проблема:
    Код (Text):
    1. include \masm32\include\masm32rt.inc
    2. .data
    3.  
    4. BUFFER BYTE 80 DUP(?)
    5.  
    6. .code
    7.  
    8. start:
    9. main proc
    10.  
    11.     cls
    12.     mov ah,3Fh  ;номер функции
    13. a0: mov dx,offset BUFFER  ;адрес буфера
    14.     mov bx,0
    15.     mov cx,1; один символ
    16.     int 21h
    17.     mov dl,BUFFER
    18.     cmp dl,'a'
    19.     jne a1
    20.     mov dl,'b'
    21. a1: cmp dl,13; код Enter
    22.     je a2
    23.     mov ah,2; вывод единственного символа на экран
    24.     int 21h
    25.     jmp a0
    26. a2: ; выходим из программы подмены символов
    27.     ret
    28.  
    29. main endp
    30. end start
    вот этот код не компилится под MASM, выдаёт ошибку:
    zi2.asm(13) : error A2022: instruction operands must be the same size
    что я делаю неправильно?
     
  9. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    jawbreaker
    Видимо ты пытаешься скомпилировать 32-битный код
    Код (Text):
    1. mov dx,offset BUFFER
    В FASM`е можно написать use16, в MASM`е незнаю.
     
  10. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    jawbreaker
    masm32 не предназначен для компиляции дос программ - используй masm 6, fasm, tasm и т.д.
     
  11. Arnor

    Arnor New Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    10
    Доброго времини суток!

    Код (Text):
    1. glColor4ub(star[(num-loop)-1].r,star[(num-loop)-1].g,star[(num-loop)-1].b,255);
    Подскажите пожалуйста как эту строчку с с++ на асемблер перевести? Вставку зделать в смысле. Незнаю как масивом оперировать (

    Пошол по-другому пути, создал переменые, в них значение с масива записал и потом уже в функцию заношу значение тех переменных.
     
  12. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    на FASM`е примерно так
    Код (Text):
    1. ;esi - num
    2. ;edi - loop
    3.  
    4. lea eax,[star+esi*2+esi]
    5. lea edx,[edi*2+edi+3]
    6. sub eax,edx
    7.  
    8. push dword 255
    9. movzx edx,byte[eax+2]
    10. push edx
    11. movzx edx,byte[eax+1]
    12. push edx
    13. movzx edx,byte[eax]
    14. push edx
    15. call glColor4ub
    16. ...........
    17. star db 1,2,3,\
    18.            4,5,0
     
  13. Shmadko_89

    Shmadko_89 New Member

    Публикаций:
    0
    Регистрация:
    27 май 2008
    Сообщения:
    10
    Как получить список запущенных процессов?
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Shmadko_89
    Множество способов есть, поподробнее.
     
  15. Shmadko_89

    Shmadko_89 New Member

    Публикаций:
    0
    Регистрация:
    27 май 2008
    Сообщения:
    10
    Необходимо получить список по сети с другого компьютера. Способ любой, желательно самый простой
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Как это сделоть по сети не знаю.)
     
  17. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
  18. MoonRose

    MoonRose New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    1
    Уважаемые Мастера Ассемблера!
    Помогите пожалуйста с задачей: надо написать макрос. Условия такие: даны 3 числа, состоящие из 3-х цифр. Надо получить 3 новых числа таких, что первое состоит из первых чисел 3-х данных чисел, второе из вторых цифр, а 3-е из третьих.

    vsm macro name, P1,P2,P3

    endm

    vsm NS A=021, C=017, E=016

    NS1 db 'A000'

    NS2 db 'C211'

    NS3 db 'E176'

    Буду очень признательна!
     
  19. B1ack

    B1ack New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2008
    Сообщения:
    3
    Подскажите пожалуйста что делает эта функция.
    Код (Text):
    1. function Bit(Value, n: Integer): Boolean;
    2. asm
    3.    bt eax, edx
    4.    setc al
    5.    and eax, 0FFh
    6. end;
     
  20. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Видимо, проверяет установлен ли бит.
    Или, можно сказать, возвращает состояние бита.