Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Программирование —› Вопросы по асме |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 06 июля 2007 19:06 · Поправил: locker_fx · Личное сообщение · #1 Здравствуйте уважаемые про-асм кодеры! Я всё-таки решился научиться этому древнему мега-искусству кода на асме. Второй день читаю и читаю(набираюсь инфой, а потом начну практику). Вот всё вроде бы хорошо, но вот думаю для практики напишу одну школьную несложную задачку: есть число(именно число) его надо перевести в письменную запись(к примеру 1367,25 тысяча тристо шестьдесят семь рублей двадцать пять копеек). Но тут я понял что во всех туторах прочитанных мною ОЧЕНЬ много API, но нет по работе со строками... Подскажите плиз где можно почитать про аботу со строками? И ещё как вы обходитесь без массивов? Всё в строчке хранить и вырезать нужное? Понимаю что для всех гуру это элементарно и неинтересно, но всё же прощу отнестись с пониманием, к тем кто недавно стал на путь истинный... P.S. Забыл сказать: Гугл за за свет незаплатил, а Яндекс'у интернет отключили за спам ))))))))))) Заранее благодарен за помощь!!! ----- моя подпись! |
|
Создано: 10 июля 2007 20:37 · Личное сообщение · #2 locker_fx пишет: После прочетния этого предложения у меня зарадилась мысль что сам МАСМ разработан Hutch'ем и MS не имеет никакого отношения(хотя ранее знал что МАСМ-это от мелкомягких, но стал думать что я ошибался). Вобщем мелочь и к асме не имеет никакого отношения...да и хватит МС славы прибавлять... )))) кажется, от MS только сам компилятор/линкер и еще некоторые инструменты. а все библиотеки и .inc-файлы - от этого самого хатча |
|
Создано: 11 июля 2007 08:10 · Поправил: Bitfry · Личное сообщение · #3 Просто не все внимательно читают. Вот полная цитата: === MASM32 Это очень распространённый пакет, собранный Стивеном Хатченсоном (Hutch). Важно понять, что MASM32 вовсе не компилятор, а сборник для программирования под Win32, в который входит 32-битный компилятор MASM. === Придётся написать ещё яснее. Есть MASM – компилятор от MS и MASM32 – пакет от Hutch'a и не надо их путать. Когда-то был MASM6 – пакет от MS, но этот проект давно загнулся (а точнее влился в VS). ----- Всем привет, я вернулся |
|
Создано: 11 июля 2007 08:57 · Личное сообщение · #4 |
|
Создано: 11 июля 2007 16:10 · Личное сообщение · #5 |
|
Создано: 11 июля 2007 19:37 · Личное сообщение · #6 |
|
Создано: 11 июля 2007 20:37 · Личное сообщение · #7 =TS= пишет: могу посоветовать создать массив указателей на строки... А строки использовать ASCIIZ -- строки в однобайтовой ASCII кодировке с завершающим нулем. Тогда реализация алгоритма будет не намного сложнее чем на языке высокого уровня хорошая идея, буду пытаться её рализовать AlexZ,=TS= а как обращаться с массивами в асме? ----- моя подпись! |
|
Создано: 11 июля 2007 20:52 · Личное сообщение · #8 |
|
Создано: 11 июля 2007 21:42 · Личное сообщение · #9 |
|
Создано: 11 июля 2007 22:02 · Поправил: lapslap · Личное сообщение · #10 |
|
Создано: 12 июля 2007 06:46 · Личное сообщение · #11 locker_fx пишет: а как правильно обьяснить массив указателей? =) объявить можно как угодно. sotona же сказал про массивы и строки. Представь для начала, что такое массив и как он будет выглядеть в памяти, тогда подбных вопросов не возникнет. MASM тоже не знает, что такое массивы =) Массив указателей - это всего-лишь несколько цыферок по порядку. А то, как ты к ним обращаешься уже и определяет, чем эти цыферки служат. Массивом, строкой или еще чем. Можно так: .data Arr1 dd n dup (00000000h) ... .code lea EDI,Arr1 mov [EDI],offset Str1 mov [EDI+4],offset Str2 Отладка, как всегда рулит)) ----- radio uno in ibisa ... |
|
Создано: 12 июля 2007 08:59 · Личное сообщение · #12 |
|
Создано: 12 июля 2007 09:07 · Поправил: Icelot · Личное сообщение · #13 locker_fx в случае с такой реализацией да, именно так. add: в статьях Битфрая про "нулевую" ошибку читал? Вообщем первый элемент массива = 0*4=0, т.е. EDI+0, второй = 1*4=4, т.е. EDI+1. Если не хочешь париться и считать первым элементом не 0-вой а 1-вый, то загружай всегда в EDI указатель не на 0-вой элемент при инициализации, а 1-вый. Т.е.: lea EDI,Arr1
----- radio uno in ibisa ... |
|
Создано: 12 июля 2007 10:24 · Поправил: locker_fx · Личное сообщение · #14 Icelot пишет: в статьях Битфрая про "нулевую" ошибку читал? Вообщем первый элемент массива = 0*4=0, т.е. EDI+0, второй = 1*4=4, т.е. EDI+1. Если не хочешь париться и считать первым элементом не 0-вой а 1-вый, то загружай всегда в EDI указатель не на 0-вой элемент при инициализации, а 1-вый. я привык работать с нулевого для меня так проще(за это я нелюблю ВБ, т.к. там у строки нету нулевого элемента). Кстати, в edi+0 будет не первый элемент а нулевой, т.к. 4*n=0 если n=0, где n-номер элемента массива.Согласен? ----- моя подпись! |
|
Создано: 12 июля 2007 10:39 · Личное сообщение · #15 |
|
Создано: 12 июля 2007 11:11 · Личное сообщение · #16 Icelot пишет: ты ведь спрашивал: я спрашивал потому что думал, что МАСМ имеет свой механизм работы с массивами и имеет строгие правила, например эл-ты нумеруются с 1. Ну, а т.к. механизма нет и программер делает сам, то он волен делать так как ему удобнее... Icelot пишет: ну так это хорошо пойму все норм кодеры(хотя есть исключения, которым удобнее делать всё наооборот) считают от нуля, т.к. это удобнее и спасает иногда от лишней мороки ----- моя подпись! |
|
Создано: 12 июля 2007 11:41 · Личное сообщение · #17 |
|
Создано: 12 июля 2007 12:13 · Личное сообщение · #18 locker_fx пишет: считают от нуля, т.к. это удобнее хех) чего ж тут удобнонго-то? просто так заведено, что у машины ряд положительных чисел начинается с нуля, поэтому все мы и привыкаем к этому. locker_fx пишет: А как можно запустив прогу под олькой передать й строку через ком. строку ? Т.е.? Передать строку проге, запущенной под Ольгой через ком. строку? оО это как? Задай вопрос поточнее. ----- radio uno in ibisa ... |
|
Создано: 12 июля 2007 13:21 · Личное сообщение · #19 |
|
Создано: 12 июля 2007 13:25 · Личное сообщение · #20 locker_fx пишет: А как можно запустив прогу под олькой передать й строку через ком. строку ? Ты вообще другие темы читаешь? Я уже не говорю про поиск: http://exelab.ru/f/action=vthread&forum=5&topic=9288 ----- Всем привет, я вернулся |
|
Создано: 12 июля 2007 17:32 · Личное сообщение · #21 |
|
Создано: 12 июля 2007 17:35 · Личное сообщение · #22 |
|
Создано: 13 июля 2007 17:06 · Личное сообщение · #23 Пытаюсь написать свою первую прогу на асм. И тут сразу появились вопросы: 1)как на асме оптимально реализовать то что выполняет эта строка на делфи: text:=str1+text; 2)Как в момент работы проги забить кусок памяти под строку? 3)Можно ли застолбить кусок памяти так, чтобы пока я его не юзаю винда его использовала, а не оставляла пустым(т.е. вопрос поэеономии ресурсов) ----- моя подпись! |
|
Создано: 13 июля 2007 17:43 · Личное сообщение · #24 |
|
Создано: 13 июля 2007 18:16 · Личное сообщение · #25 |
|
Создано: 13 июля 2007 18:29 · Личное сообщение · #26 |
|
Создано: 13 июля 2007 18:47 · Личное сообщение · #27 |
|
Создано: 13 июля 2007 18:51 · Личное сообщение · #28 |
|
Создано: 13 июля 2007 18:55 · Личное сообщение · #29 |
|
Создано: 13 июля 2007 19:08 · Поправил: FrenFolio · Личное сообщение · #30 locker_fx пишет: 1)как на асме оптимально реализовать то что выполняет эта строка на делфи: text:=str1+text; На самом деле, оптимальным будет написание своих аналогов API-функций lstrcat и lstrcpy. Это увеличит скорость выполнения программы. locker_fx пишет: Справочная система по языку ассемблера IBM PC автор Юров Это хороший справочник, но заметь, именно справочник. Тебе же лучше все же начать изучение асма с учебников. Могу порекомендовать книги Крупника и Пирогова. ----- Программист SkyNet |
|
Создано: 13 июля 2007 21:09 · Поправил: locker_fx · Личное сообщение · #31 n0name пишет: invoke lstrcat, str1, text invoke lstrcpy, text, str1 Может опять я туплю.., но чё-то неполучается у меня: Вот код проги: .386 .model flat, stdcall option casemap :none ; case sensitive ;##################################################################### #### include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib ;##################################################################### #### .data MsgBoxCaption db "It's the first your program for Win32",0 text db "работает!!!",0 str1 db "Прога ",0 ;##################################################################### #### .code start: invoke lstrcat, str1, text invoke lstrcpy, text, str1 invoke MessageBox, NULL, addr text, addr MsgBoxCaption, MB_OK invoke ExitProcess, NULL end start Вылазит месадж бокс с текстом "работает!!!" Если это я туплю, то не пинайте сильно, я только учусь... ----- моя подпись! |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Вопросы по асме |
Эта тема закрыта. Ответы больше не принимаются. |