На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (5) 1 [2] 3 4 ... Последняя » все  ( Перейти к последнему сообщению )  
> Первая программа на ассемблере.
   
Собственно сабж :-)
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    ни машинные кода, ни привет мир, ни солидный проект.. Просто написал на листике формулу и начал ее кодить на асме. Проверял в турбодебагере т.к. вывод символов еще не знал как делать на асме :)
      Цитата e-moe @
      Просто написал на листике формулу и начал ее кодить на асме.

      Такой вариант даже в голову не пришел :) Хоть кто то "по правилам" сделал :D
        Цитата AndNot @
        Такой вариант даже в голову не пришел :) Хоть кто то "по правилам" сделал :D

        просто асм был не первым языком программирования который я учил...
          AndNotчто-то, только заметила тему :), а что первое... ты прикинь не помню :)
            Первую прогу, на асме, helloworld, набирал в Hiew'e 6.11 (не такие уж и машкоды), дивясь причудам x86-ой архитектуры :)
              Ну ребята, на Вас всех вариантов не предусмотришь :D
                Цитата AndNot @
                Ну ребята, на Вас всех вариантов не предусмотришь

                ну "непомню" могбы предусмотреть :)
                  И на меня варианта нет. Я asm изучал по журналу "КомпьютерПресс", а первая программа была не "Hello, world", но и не серьёзный проект - оседала резидентом и после запуска NCMAIN.EXE переназначала синий цвет в палитре. Просто на мониторе с градациями серого плохо видно было :D
                    Всем спасибо :)
                      Цитата adrax @
                      Я начал постижение ассемблера с вывода простого MessageBox. Под DOS я асмом не увлекался

                      А жаль. Имеет ли ассемблер большой смысл под Windows, для меня этот вопрос весьма сомнителен.
                      MessageBox с таким же успехом можно и на Си вызвать, как и создания окон, кнопочек и всего интерфейса вообще.
                        Цитата
                        как и создания окон, кнопочек и всего интерфейса вообще.
                        да можно ваще на скрипте бэйсика *.vbs непомню только как :)
                          Цитата old_lamer @
                          А жаль.
                          :yes: Кодинг под дос дает немало знаний по железу и внутреннему устройству компа, по принципам его работы и взаимодействию перефирии. Это очень сильно облегчает жизнь даже в вин АПИ :)
                          Цитата old_lamer @
                          Имеет ли ассемблер большой смысл под Windows, для меня этот вопрос весьма сомнителен.
                          А почему бы и нет? На АПИ асм использоать так же легко как и Си, разницы никакой. Но всегда найдется место для оптимизации. Вот виденный мной на днях код(привожу по памяти):
                          ExpandedWrap disabled
                            function Alloc(var pBuff: array of Pointer; var hBuff: array of THandle; bufSize, NumBuff: Integer): Boolean;
                            var
                              i: Integer;
                            begin
                              for i := 0 to NumBuff-1 do begin
                                hBuff[i] := GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT, bufSize);
                                if hBuff[i] = 0 then
                                  begin
                                    Alloc := FALSE;
                                    Exit;
                                  end;
                                pBuff[i] := GlobalLock(hBuff[i]);
                                if pBuff[i] = nil then
                                  begin
                                    Alloc := FALSE;
                                    Exit;
                                  end;
                              end;
                              Alloc := TRUE;
                            end;
                          В данном куске возможна утечка памяти, но суть не в этом. Очевидны две вещи. Первое. Необходимо вернуть массив указателей. Второе. Участки памяти блокируются, соответственно нет никакой необходимости в раздельном выделении и блокировке (в самой проге они нигде не разблокируются, только при освобождении памяти). На асме я бы сделал примерно так:
                          ExpandedWrap disabled
                            Alloc proc NumBuff: dword, BufSize: dword
                              uses ebx, edi
                                mov     ebx, NumBuff
                                mov     eax, BufSize
                                add     eax, 4
                                mul     ebx
                                invoke  GloballAlloc, GMEM_FIXED or GMEM_ZEROINIT, eax
                                .if (eax != NULL)
                                    push    eax
                                    mov     edi, eax
                                    lea     eax, [eax+ebx*4]
                                    .while (ebx != 0)
                                        stosd
                                        add     eax, BufSize
                                        dec     ebx
                                    .endw
                                    pop     eax
                                .endif
                                ret
                            Alloc endp
                          На выходе в eax указатель на массив векторов или ноль, что так же позволяет контролировать результат функции. Возможно пример не самый удачный, но это первое что взбрело в голову :)
                          В общем есть где развернуться.
                          Цитата Дьяволица @
                          да можно ваще на скрипте бэйсика *.vbs непомню только как
                          Можно :) Но смысл? Кстати, если вспомнишь - черкни пожалуйста :)
                            ExpandedWrap disabled
                              MsgBox "Hello, World!"
                            переименовывем в *.vbs и воля :P ну и так далее только можно с параметрами и многие апи функции ;)

                            Добавлено
                            Цитата
                            Можно Но смысл?
                            ну типа в тему и ответ что зачем тогда в си когда можно ваще так ;)
                              Цитата Дьяволица @
                              MsgBox "Hello, World!"
                              переименовывем в *.vbs и воля :P

                              насколько я помню, создать окна и их оконные функции так не получится :(
                              Сообщение отредактировано: e-moe -
                                Цитата e-moe @
                                насколько я помню, создать окна и их оконные функции так не получится
                                правда ? :( а я думала можно
                                а откуда ты это помнишь ? ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0401 ]   [ 17 queries used ]   [ Generated: 11.05.25, 03:50 GMT ]