DeleteFile на Arm assembler

Тема в разделе "WASM.ASSEMBLER", создана пользователем RedRam, 16 июн 2008.

  1. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    Написал программку для КПК удаления файла в текущей папке.
    Компилируется и линкуется без проблем, а запустил не работает.
    Кто знает обьясните в чём проблема?

    Код (Text):
    1.                   IMPORT    DeleteFileW
    2.                   IMPORT    ExitThread
    3.  
    4.                   EXPORT   start
    5.  
    6.                   AREA         .text, CODE
    7.  
    8. start
    9.                  eor                R0, R0, R0
    10.                  adr                R1, filepath
    11.                  bl                   DeleteFileW
    12.  
    13.                  eor                R0, R0, R0
    14.                  bl                   ExitThread
    15.  
    16. filepath   dcb               "fuck.doc",0,0,0
    17.  
    18.                  END
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    dcb - это случаем не байты?
    Как я понял юзается Windows Mobile.
    DeleteFileW принимает имя файла в юникоде.
     
  3. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    dcb то же что в винде db.
    Да ты понял всё абсолютно правильно.
    нули после каждой буквы не нужны?
     
  4. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Да.


    Есть хороший асм вытекщий из фасма.
    http://arm.flatassembler.net/

    Вот один из стандартных примеров
    Код (Text):
    1. ; Example of building a WinCE executable using direct coding
    2.  
    3.         format  PE GUI
    4.         entry   Start
    5.  
    6. section '.text' data code readable writeable executable
    7.  
    8. Start:
    9.         mov     r0,0                    ;window owner (NULL)
    10.         add     r1,pc,Text-$-8          ;the text
    11.         add     r2,pc,Caption-$-8       ;the caption
    12.         mov     r3,0                    ;style (MB_OK)
    13.         ldr     pc,[pc,MessageBoxW-$-8] ;display message and exit
    14.  
    15. Text    du      'Hello WinCE world',0
    16. Caption du      'ARM small PE',0
    17.  
    18.         align   4
    19.  
    20. data import
    21.  
    22.         dw      RVA core_imports,0,0,RVA core_name,RVA core_imports
    23.         rw      5
    24.  
    25.         core_imports:
    26.         MessageBoxW     dw      0x8000035A
    27.                         dw      0
    28.  
    29.         core_name       db      'COREDLL.DLL',0
    30.  
    31.         align   4
    32.  
    33. end data
    Макрос "du" сам преобразовывает в уникод-строку.
     
  5. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    Спасибо.Взял на заметку.
    А как собственно сконвертить в юникод вручную?
    И можноли набрать текст в hex кодах?
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    RedRam
    Если там, где ты делаешь, то наверное нулями через каждую литеру.
    Или можно попробовать так:
    Код (Text):
    1. dcw 'f','i','l','e',0
    Думаю что да, посмотри в документации к твоему ассемблеру как там правильно писать, или попробуй методом тыка 0x0A или 0Ah (например).
     
  7. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    'f','i','l','e',0
    'f',0,'i',0,'l',0,'e',0
    "f","i","l","e",0
    "f",0,"i",0,"l",0,"e",0
    не работают(((
    Есть ещё какие-нибудь идеи помимо hex?
     
  8. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    есть еще такие:
    'f',0,'i',0,'l',0,'e',0,0,0
    0,'f',0,'i',0,'l',0,'e',0,0
     
  9. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Дай скомпелированный exe посмотреть.

    через dcw делал или dcb?
     
  10. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    twgt
    Через dcb
    Что то не приаттачился
     
  11. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    поэтому и не работает. Либо сам нули ставь, либо dcw используй.
     
  12. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    twgt
    С dcw не компелируется выдаёт ошибку
    A0083: illegal expression type; expected absolute numeric
     
  13. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Мдас...
    http://www.wasm.ru/article.php?article=pocketpc

    Поэтому
    Либо импользовать fasmarm )
     
  14. RedRam

    RedRam New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    28
    twgt
    Hello World то пашет на 5+
    а вот файл не фига не удаляется(
    Не факт что в фасме без проблем сработает