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

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

  1. 7Friday

    7Friday New Member

    Публикаций:
    0
    Регистрация:
    13 май 2010
    Сообщения:
    7
    Допустим долез я до корневого каталога. Там лежат записи каталогов, через которые я смогу найти файлы. Мне надо произвести поиск файла по имени, однако считывать я буду байты. А каким образом осуществлять перевод данных, если это вообще возможно?
     
  2. Macheda

    Macheda New Member

    Публикаций:
    0
    Регистрация:
    7 май 2010
    Сообщения:
    4
    еще вопрос:вводим строку и отсортировать в ней слова по последней букве)
     
  3. Iceblazer

    Iceblazer New Member

    Публикаций:
    0
    Регистрация:
    30 май 2010
    Сообщения:
    1
    Вопрос: какой адрес у начала корневого каталога дос?
    Как я понимаю он стандартный. (А если я совсем неправ то его как то надо искать.)
    Нужно будет вывести его содержимое на экран из резидента. Как вывести - понимаю. Надо только понять откуда брать то, что выводить. :)
     
  4. 7Friday

    7Friday New Member

    Публикаций:
    0
    Регистрация:
    13 май 2010
    Сообщения:
    7
    Извините за повтор, но переформилирую вопрос, для большего понимания. Как преобразовать 16-ричные числа в строку?
    Допустим у меня имеется следующий набор данных 4Е 54 46 53 20 20 20 20. Можно сказать что массив из 8 элементов содержащий 16-ричные числа. Каким образом их можно преобразить в строку? (в результате из этой последовательности должно получиться чтото вроде "NTFS...")
    Желательно средствами delphi, но и другие языки переведу
     
  5. Noga

    Noga New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    92
    7Friday

    Код (Text):
    1. ; Author: Jake Commander
    2. ; Copyright The GeneSys Development System
    3.  
    4. HexEncode proc uses edi esi ebx pBuff:dword,dwLen:dword,pOutBuff:dword
    5. ;---------------------------------------
    6.    mov    ebx, dwLen
    7.    mov    edi, pOutBuff
    8.    test    ebx, ebx
    9.    mov    esi, pBuff
    10.    jz      @F
    11.    .repeat
    12.      movzx  eax, byte ptr [esi]
    13.      mov    ecx, eax
    14.      add    edi, 2
    15.      shr    ecx, 4
    16.      and    eax, 1111b
    17.      and    ecx, 1111b
    18.      cmp    eax, 10
    19.      sbb    edx, edx
    20.      adc    eax, 0
    21.      lea    eax, [eax+edx*8+'7']
    22.      cmp    ecx, 10
    23.      sbb    edx, edx
    24.      adc    ecx, 0
    25.      shl    eax, 8
    26.      lea    ecx, [ecx+edx*8+'7']
    27.      or      eax, ecx
    28.      inc    esi
    29.      mov    [edi-2], ax
    30.      dec    ebx
    31.    .until ZERO?
    32. @@: mov    eax, edi
    33.    mov    byte ptr [edi], 0
    34.    sub    eax, pOutBuff
    35.    ret
    36. ;---------------------------------------
    37. HexEncode endp
    38.  
    39. ; Author: Jake Commander
    40. ; Copyright The GeneSys Development System
    41.  
    42. HexDecode proc uses esi edi ebx pHexStr:dword,pOutBuffer:dword
    43. ;---------------------------------------
    44.    mov    esi, pHexStr
    45.    mov    edi, pOutBuffer
    46.    jmp    @1
    47. @@: and    ebx, 0Fh
    48.    add    eax, ebx
    49.    mov    [edi], al
    50.    inc    edi
    51. @1: movzx  edx, byte ptr[esi]
    52.    cmp    edx, 40h
    53.    sbb    ebx, ebx
    54.    sub    edx, 37h
    55.    and    ebx, 7
    56.    inc    esi
    57.    add    ebx, edx
    58.    js      @F
    59.    mov    eax, ebx
    60.    shl    eax, 4
    61.    mov    [edi], al
    62.    movzx  edx, byte ptr [esi]
    63.    cmp    edx, 40h
    64.    sbb    ebx, ebx
    65.    sub    edx, 37h
    66.    and    ebx, 7
    67.    inc    esi
    68.    add    ebx, edx
    69.    jns    @B
    70. @@: ret
    71. ;---------------------------------------
    72. HexDecode endp
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Noga
    это совсем не из той оперы
    7Friday
    учи матчасть иначе ничего не поможет. Все данные хранятся в двоичном, а не в hex виде. Как раз чтобы увидеть их как 4Е 54 46 53 20 20 20 20 нужно их преобразовать. Если в твоём массиве набор кодов символов то это уже и есть готовая текстовая строка не надо её никуда преобразовывать, используй и всё.
     
  7. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    Помогите плиз!

    Задача:

    Есть активное окно, в нём выделен текст, потом запускается программа, которая поместит этот текст в буфер обмена и закроется, всё :)

    Напишите программку,а, Добрые Люди :)
     
  8. S4urp8n

    S4urp8n New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    30
    на masm'e пожалуйста
     
  9. univer_vynosit_mne_mozg

    univer_vynosit_mne_mozg New Member

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

    Может быть, кто поможет. Есть программа на turbo pascal, с ассемблерными вставками. TP реализует только меню, в котором переключаются видео-режимы (на асме), а в графическом режиме ещё рисуется прямоугольник и движется слева направо.

    Мне необходимо модифицировать программу, чтобы прямоугольник (или любая другая фигура) двигались соответственно нажатию стрелок на клавиатуре.

    Самому изучать вопрос и делать сил никаких нет, сессия в разгаре, работа напрягает.

    Если кто поможет - буду искренне благодарен.

    Код (Text):
    1. var
    2. y,s,z,x:byte;
    3. k,f,l:integer;
    4. procedure quadro(p,r,o:integer);
    5. var i,j:integer;
    6. Begin
    7. for i:=p to o do
    8.         asm
    9.          mov ah,0ch
    10.          mov al,9
    11.          mov cx,i
    12.          mov dx,0
    13.          int 10h
    14.         end;
    15. for i:=p to o do
    16.          asm
    17.           mov ah,0ch
    18.           mov al,9
    19.           mov cx,i
    20.           mov dx,70
    21.           int 10h
    22.          end;
    23. for i:=0 to 70 do
    24.         asm
    25.          mov ah,0ch
    26.          mov al,9
    27.          mov cx,p
    28.          mov dx,i
    29.          int 10h
    30.         end;
    31. for i:=0 to 70 do
    32.        asm
    33.         mov ah,0ch
    34.         mov al,9
    35.         mov cx,o
    36.         mov dx,i
    37.         int 10h
    38.        end;
    39. {for i:=p to o do
    40.        for j:=0 to 70 do
    41.         asm
    42.          mov ah,0ch
    43.          mov al,9
    44.          mov cx,i
    45.          mov dx,j
    46.          int 10h
    47.         end;    }
    48. end;
    49.  
    50. Begin
    51. y:=1;
    52. asm
    53.  mov ah,0h
    54.  mov al,17
    55.  int 10h
    56. end;
    57. asm
    58.   mov ah,15h
    59.   int 10h
    60.   mov s,al
    61. end;
    62. while y<>0 do
    63.  begin
    64.   writeln('1-text');
    65.   writeln('2-graphic');
    66.   writeln('3-320x200');
    67.   writeln('4-return');
    68.   writeln('5-exit');
    69.   readln(z);
    70.   case z of
    71.    1:asm
    72.       mov ah,0h
    73.       mov al,0
    74.       int 10h
    75.      end;
    76.    2:begin
    77.      asm
    78.       mov ah,0h
    79.       mov al,16
    80.       int 10h
    81.      end;
    82.       k:=0;
    83.       f:=20;
    84.       l:=30;
    85.       quadro(k,f,l);
    86.       readln;
    87.       for x:=1 to 100 do
    88.        begin
    89.         asm
    90.          mov ah,5
    91.          mov al,x
    92.          int 10h
    93.         end;
    94.         asm
    95.          mov ch,0
    96.          mov cl,0
    97.          mov dh,24
    98.          mov dl,80
    99.          mov al,0
    100.          mov ah,06h
    101.          mov bh,0
    102.          int 10h
    103.         end;
    104.         k:=k+5;
    105.         f:=f+5;
    106.         l:=l+5;
    107.         quadro(k,f,l);
    108.        end;
    109.       asm
    110.        mov ah,5
    111.        mov al,0
    112.        int 10h
    113.        mov ah,2h
    114.        mov dh,7
    115.        mov dl,0
    116.        int 10h
    117.       end;
    118.    {   asm
    119.        mov ah,09
    120.        mov al,'f'
    121.        mov bh,00
    122.        mov bl,0c3h
    123.        mov cx,10
    124.        int 10h
    125.       end;}
    126.       asm
    127.        mov ah,2h
    128.        mov dh,8
    129.        mov dl,0
    130.        int 10h
    131.       end;
    132.      end ;
    133.    3:asm
    134.       mov ah,0h
    135.       mov al,04h
    136.       int 10h
    137.      end;
    138.    4:asm
    139.       mov ah,0h
    140.       mov al,s
    141.       int 10h
    142.      end;
    143.    5:y:=0;
    144.   end;
    145.  end;
    146.  End.
     
  10. univer_vynosit_mne_mozg

    univer_vynosit_mne_mozg New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2010
    Сообщения:
    2
    Задача поменялась и поменялись сроки на сдачу, сделаю, пожалуй, сам.

    P.S. движение стрелками кое-как сделали, если кому вдруг надо - ЛС'те (должно прийти на почту).
     
  11. idsp

    idsp New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2009
    Сообщения:
    13
    Начал изучать asm for Win32 и столкнулся со следующим:
    Есть ли где расшифровка имен и параметров WinAPI функций? (полные имена всех этих сокращений), а то от всяких
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam - у меня уже вытек мозг через левое ухо...

    И есть ли где уроки Iczelion'а одним файлом, но исправленные от опечаток и ошибок?!
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Сокращения в параметрах наззываются венгерской записью или префиксами венгерской записи. Означают они тип переменной.
    Вкратце:
    h == handle
    w == WORD (правда, wParam это не ворд)
    l == long
    c == count
    ch == character
    dw == DWORD
    u == unsigned
    b == boolean
    и так далее

    Сами имена легко понять - hWnd == Window handle, uMsg == message, wParam = parameter (#1), lParam == parameter (#2)
    DefWindowProc == default window procedure.
    Неужели так сложно?
     
  13. idsp

    idsp New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2009
    Сообщения:
    13
    Посоветуйте кроме статей Iczelion'а книги, статьи, сайты по asm for Win32 (книг что-то совсем нет). Iczelion'а я читаю, но хочется еще что-то в вдогонку. спасибо.
     
  14. idsp

    idsp New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2009
    Сообщения:
    13
    дак не сложно =) Просто я с WinAPI не знаком еще...
    спасибо.
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    еще
    i == index (номер, например, iFile - номер файла)
    p == pointer (указатель)
    lp == long pointer (это понятие устарело - сейчас pointer == long pointer, просто понятие осталось как наследствие прошлого)
    sz == Z-terminated String (нуль-терминированная строка)
    fn == function (используется обычно только указатель на функцию - pfn)
    m == member (член класса)

    Юров? не совсем именно под вин32, но зато по асму.
     
  16. idsp

    idsp New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2009
    Сообщения:
    13
    У меня есть Юров "Учебник для Вузов. Assembler" 2е издание, но там в основном 16-й асм, а это мне как бы не надо уже...
     
  17. idsp

    idsp New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2009
    Сообщения:
    13
    Хотел купить книгу какую-нибудь по WinApi, но ничего дельного не нашел (желательно с применением С++)
     
  18. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    ассемблер, WinAPI
    П. В. Румянцев "Азбука программирования в Win 32 API"
    Герберт Шилдт "Программирование на C и C++ для Windows 95"
    В.Пирогов "Assembler и Windows"
    Петцольд Ч. "Программирование для Windows 95"
     
  19. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    idsp
    примненение с++ относится к стилю прграммы. сам WinApi это чистые " C" функции которые
    можно использовать и там и там, и не только там :)
     
  20. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Скачать WinAPI полный справочник (3971 Кб)
    "Полная англоязычная справка по WinAPI функциям. Особенно полезна для программистов, но также может подсказать крэкеру на какую WinAPI функцию ставить прерывание, а также может пояснить что вообще делает такая то WinAPI функция."