Сейчас на форуме: (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› Вопросы по асме |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 06 июля 2007 19:06 · Поправил: locker_fx · Личное сообщение · #1 Здравствуйте уважаемые про-асм кодеры! Я всё-таки решился научиться этому древнему мега-искусству кода на асме. Второй день читаю и читаю(набираюсь инфой, а потом начну практику). Вот всё вроде бы хорошо, но вот думаю для практики напишу одну школьную несложную задачку: есть число(именно число) его надо перевести в письменную запись(к примеру 1367,25 тысяча тристо шестьдесят семь рублей двадцать пять копеек). Но тут я понял что во всех туторах прочитанных мною ОЧЕНЬ много API, но нет по работе со строками... Подскажите плиз где можно почитать про аботу со строками? И ещё как вы обходитесь без массивов? Всё в строчке хранить и вырезать нужное? Понимаю что для всех гуру это элементарно и неинтересно, но всё же прощу отнестись с пониманием, к тем кто недавно стал на путь истинный... P.S. Забыл сказать: Гугл за за свет незаплатил, а Яндекс'у интернет отключили за спам ![]() Заранее благодарен за помощь!!! ----- моя подпись! ![]() |
|
Создано: 06 июля 2007 19:18 · Личное сообщение · #2 |
|
Создано: 06 июля 2007 19:18 · Личное сообщение · #3 locker_fx пишет: Подскажите плиз где можно почитать про аботу со строками? И ещё как вы обходитесь без массивов? Всё в строчке хранить и вырезать нужное? Массивы есть. massiv db 60 dup(0) ; массив из 60 байт TType struc aName db 60 dup(0) aSize dd 0 TType ends structura TType <> Кстати может прокатит и массив структур (давно не кодил): massiv TType 60 dup(?) ; что-нибудь типа этого По строкам есть wsprintf вроде бы и lstrXXX ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 06 июля 2007 19:30 · Личное сообщение · #4 |
|
Создано: 06 июля 2007 19:43 · Личное сообщение · #5 =TS= пишет: могу посоветовать создать массив указателей на строки... А строки использовать ASCIIZ -- строки в однобайтовой ASCII кодировке с завершающим нулем. Тогда реализация алгоритма будет не намного сложнее чем на языке высокого уровня мне бы сначало со строками разобраться, потом уже о масивах думать буду... спасибо за совет YDS,AlexZ спасибо за то что откликнулись! YDS пишет: dwtoa и lstrcat AlexZ пишет: wsprintf вроде бы и lstrXXX а какая из функций для чего используется? Какие данные надо передавать куда возвращается результат? Какой *.inc для их использования нужен? Или если нет инка как выглядит прототип... если вас не затруднит ответтьте нна эти вопросы, пожалуйста. Всем огромное спасибо за помощь! ----- моя подпись! ![]() |
|
Создано: 06 июля 2007 19:49 · Личное сообщение · #6 locker_fx пишет: а какая из функций для чего используется? Какие данные надо передавать куда возвращается результат? Какой *.inc для их использования нужен? Или если нет инка как выглядит прототип... Так понимаю, изучаешь MASM32. Загляни тогда в файл ..masm32\INCLUDE\masm32.inc - станет ясно + help по API, который идет вместе с RADAsm. ![]() |
|
Создано: 06 июля 2007 20:23 · Личное сообщение · #7 YDS пишет: Так понимаю, изучаешь MASM32 ага, его YDS пишет: Загляни тогда в файл ..masm32\INCLUDE\masm32.inc - станет ясно заглянул, мея 0 опыта тяжелова-то. Погуглил в поисках описания dwtoa и lstrcat, но нашёл тока код с их использованием и ещё попутно генератор случайных чисел на асме(пригодиться потом). слух я напримерах бысрее догоняю. Еслитебя не затруднит,ты не мог бы написать как будет например выглядеть код проги, которая находит сколько раз в строке встречается подстрока и прога которая разрезает строку посимвольно и выводит наэкран например только цифры входящие в строку? Заранее спасибо! ----- моя подпись! ![]() |
|
Создано: 06 июля 2007 20:59 · Личное сообщение · #8 locker_fx пишет: как будет например выглядеть код проги, которая находит сколько раз в строке встречается подстрока и прога которая разрезает строку посимвольно и выводит наэкран например только цифры входящие в строку? Для этих целей удобно и целесообразно использовать цепочечные команды, - scac - для сканирования заданной строки на определенный символ, и cmps - для сравнения строк. ----- Программист SkyNet ![]() |
|
Создано: 06 июля 2007 21:30 · Поправил: Icelot · Личное сообщение · #9 Число в строку можешь перевести и без АПИ ;) Сканируешь строку (scas или cmps) или свой цикл организовываешь. Чтобы из числа получить его ANSI представление достаточно прибавить к нему 30h (смотри коды ANSI). Т.е. 0h (число)= 30h (ANSI). bitfry.narod.ru/11.htm#bit6 - вот подробнее. И вообще если прочитаешь все чтивы bitfry.narod.ru то найдешь ответы на многие вопросы. Бери Айсилиона+дневники и постепенно разбирайся. По ходу дела всё встретится. ----- radio uno in ibisa ... ![]() |
|
Создано: 06 июля 2007 21:40 · Личное сообщение · #10 |
|
Создано: 06 июля 2007 21:47 · Личное сообщение · #11 |
|
Создано: 07 июля 2007 13:43 · Личное сообщение · #12 YDS пишет: + help по API, который идет вместе с RADAsm. либо MSDN oт визуал студио либо Help по Win32 API из борланд С++Билдера или делфа <<< lstrcat Function ---------------------------------------------------------------------- ---------- The lstrcat function appends one string to another. Syntax LPTSTR lstrcat( LPTSTR lpString1, LPTSTR lpString2 ); Parameters lpString1 [in, out] Pointer to a null-terminated string. The buffer must be large enough to contain both strings. lpString2 [in] Pointer to the null-terminated string to be appended to the string specified in the lpString1 parameter. Return Value If the function succeeds, the return value is a pointer to the buffer. If the function fails, the return value is NULL. Remarks Security Alert Using this function incorrectly can compromise the security of your application. The first argument, lpString1, must be large enough to hold lpString2 and the closing '\0', otherwise a buffer overrun may occur. Buffer overruns may lead to a denial of service attack against the application if an access violation occurs. In the worst case, a buffer overrun may allow an attacker to inject executable code into your process, especially if lpString1 is a stack-based buffer. Consider using one of the following alternatives: StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, or StringCchCatNEx. You should review Security Considerations: Windows User Interface before continuing. Windows 95/98/Me: lstrcatW is supported by the Microsoft Layer for Unicode (MSLU). Although the W version already exists on Microsoft Windows 98/Me, it is included to give more consistent behavior across all Windows operating systems. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems. Example For an example, see Reading from a Mailslot. Function Information Minimum DLL Version kernel32.dll Header Declared in Winbase.h, include Windows.h Import library Kernel32.lib Minimum operating systems Windows 95, Windows NT 3.1 Unicode Implemented as ANSI and Unicode versions. See Also Strings Overview, StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatN, StringCchCatNEx, lstrcmp, lstrcmpi, lstrcpy, lstrlen ---------------------------------------------------------------------- ---------- © 2005 Microsoft Corporation. All rights reserved. >>> - это из МСДН ... ![]() ![]() |
|
Создано: 09 июля 2007 20:29 · Личное сообщение · #13 |
|
Создано: 09 июля 2007 20:37 · Поправил: El_Diablo · Личное сообщение · #14 |
|
Создано: 09 июля 2007 21:38 · Личное сообщение · #15 |
|
Создано: 10 июля 2007 15:46 · Личное сообщение · #16 |
|
Создано: 10 июля 2007 15:53 · Поправил: Icelot · Личное сообщение · #17 Алгоритм работы: считать содержимое источника; записать содержимое операнда источника в операнд приемник, начиная с его младших разрядов; распространить двоичный нуль на свободные старшие разряды операнда назначения. byte ptr значит переслать один байт, [] значит по адресу. Если в EAX адрес строки, то в EDX будет её первый символ. ----- radio uno in ibisa ... ![]() |
|
Создано: 10 июля 2007 17:01 · Личное сообщение · #18 |
|
Создано: 10 июля 2007 17:06 · Личное сообщение · #19 |
|
Создано: 10 июля 2007 17:29 · Личное сообщение · #20 |
|
Создано: 10 июля 2007 18:12 · Личное сообщение · #21 |
|
Создано: 10 июля 2007 18:51 · Личное сообщение · #22 |
|
Создано: 10 июля 2007 18:58 · Личное сообщение · #23 locker_fx Вот, написал простейшую прогу, демонстрирующую работу со строками (поиск заданного символа в строке) и работу пресловутой инструкции movzx. .386
Ниже ссыль на архив: там найдешь саму прогу, исходник и файл проекта для IDE WinASM Studio. ![]() rapidshare.com/files/42134685/Example_scas.rar.html ----- Программист SkyNet ![]() |
|
Создано: 10 июля 2007 18:58 · Личное сообщение · #24 |
|
Создано: 10 июля 2007 19:01 · Личное сообщение · #25 |
|
Создано: 10 июля 2007 19:05 · Личное сообщение · #26 Ну а что касаемо инструкции movzx, то она нужна для приравнивания размерностей регистров. Например, вот так mov eax, bl
сделать нельзя! ![]() А вот так можно movzx eax, bl . ![]() Это видно из исходника. И можешь переписать эти две инструкции mov bl, 'k'
на mov eax, 'k' - это тоже самое.
Вот... ![]() ----- Программист SkyNet ![]() |
|
Создано: 10 июля 2007 19:07 · Личное сообщение · #27 |
|
Создано: 10 июля 2007 19:31 · Личное сообщение · #28 |
|
Создано: 10 июля 2007 20:00 · Личное сообщение · #29 Bitfry пишет: В чём неточность? Если что-то такое есть - исправлю. я думаю ничего исправлять не нужно. Вот собственно то что я имел ввиду >цитата из учебника Bitfry>Это очень распространённый пакет, собранный Стивеном Хатченсоном (Hutch). После прочетния этого предложения у меня зарадилась мысль что сам МАСМ разработан Hutch'ем и MS не имеет никакого отношения(хотя ранее знал что МАСМ-это от мелкомягких, но стал думать что я ошибался). Вобщем мелочь и к асме не имеет никакого отношения...да и хватит МС славы прибавлять... )))) А вообще хотелбы сказать огромное спасибо за такой учебник! Всё замечательно, а главное что это не просто книжка а часть души и на её написание ушло много времени и сил.., но зато какой эффект!!! ИМХО Калашникв и Iczerlion отдыхает. Я бы сказал что у них просто книга, а чтивы с инсталляцией. Всё ещё не усел прочитать. Если найду какие-нибудь весомые неточности(я думаю ошибок быть уже не может...) то обязательно напишу. ----- моя подпись! ![]() |
|
Создано: 10 июля 2007 20:19 · Личное сообщение · #30 |
. 1 . 2 . 3 . >> |
![]() |
eXeL@B —› Программирование —› Вопросы по асме |
Эта тема закрыта. Ответы больше не принимаются. |