[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. Lewis Carroll

    Lewis Carroll New Member

    Joined:
    28 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Может кто нибудь дать пример программы на ассме, переводящей введенное числовое выражение в обратную польскую запись ?
     
  2. wm2

    wm2 New Member

    Joined:
    12 Mar 2008
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Найти среднее арифметическое квадратов ненулевых элементов последовательности. Массив слов. // как это сделать на asm ? cpu 80486 16 ти разрядный.... при помощи цикла
     
  3. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Code:
            .model tiny
            .code
            .386
    
            org 100h
    start:
            xor si, si
            mov cx, 7
    
    lp:     cmp     word ptr mas[si], 0
            je      nxt
            mov     dx, word ptr mas[si]
            imul    dx, word ptr mas[si]
            add     bx, dx
    nxt:
            inc     si
            inc     si
            loop    lp
    
            mov     ax, bx
            mov     cx, 7
            cwd
            idiv    cx
            mov     res, ax
    
            ret
    
        mas dw -1,2,4,0,-2,3,1
        res dw  0
    
    end start
    как-то так
     
    #723 becensed, 11 Apr 2010
    Last edited: 11 Apr 2010
  4. airyashov

    airyashov New Member

    Joined:
    15 Jan 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    требуется поправить
     
  5. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    что делает эта опрация
    add -0x3f85fbc0(,%ebx,4),%esi
    AT&T (вроде этот в linux ядре используется)
     
  6. norway

    norway New Member

    Joined:
    3 Dec 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    В коде морфнаха заметил очень интересные строки
    Code:
    mov eax,[edi+IMAGE_OPTIONAL_HEADER32.ImageBase] ; закидываем в eax адрес имейдж базы
    ....
    add eax,[FileSize] ; прибавляем к адресу имейджбазы размер файла
    .....
    cmp eax,1314BBB9h; производим сравнение пинч ли это
       jnz fornexta
       mov [RB_is],2
       fornexta:
    cmp eax,1314C600h ; производим сравнение пинч ли это
       jnz fornexta2
       mov [RB_is],2
       fornexta2:   
    ....
        mov edx,[edi+IMAGE_SECTION_HEADER.PointerToRawData]; закидываем в edx смещение в файле
                           add edx,[hMap]  ; плюсуем с началом файла в памяти    
    ....
    mov eax,[RB_is] 
            .if eax = 2; если у нас пинч... 
             add edx,512; добавляем 512 к смещению+началу файла в памяти
             .endif
              mov ecx,[edi+IMAGE_SECTION_HEADER.SizeOfRawData]; закидываем в eсx физический размер секции на диске 
              .if eax = 2 ; если у нас пинч... 
              sub ecx,512; уменьшаем на 512
             .endif      
    
    ...
           mov edx,[edi+IMAGE_SECTION_HEADER.VirtualAddress];закидываем в edx виртуальный адрес
                                     add edx,[dwImageBase]; складываем с имейдж базой
                                     mov eax,[RB_is] 
                             .if eax = 2 ; если у нас пинч... 
                             add edx,512; добавляем к виртуальному адресу 512
                             .endif     
    ....
    
    После этих преобразований у нас получиться что первые 512байт секции уйдут и в память грузиться не будут...
    Загрузил пинча в иде и заметил что в этих сегментах расположены данные которые выкидывать нельзя...

    вот отрывок из секции данных в первых 512 байтах

    Code:
    .data:1314B0D2; char aSoftwareMicr_1[]
    .data:1314B0D2 aSoftwareMicr_1 db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
    .data:1314B0D2                                        ; DATA XREF: sub_13141780+Ao
    .data:1314B0D2                                        ; sub_13141780+30o
    .data:1314B0FC; char aProgramfilesdi[]
    .data:1314B0FC aProgramfilesdi db 'ProgramFilesDir',0 ; DATA XREF: sub_13141780+2Bo
    .data:1314B10C                 dd 6 dup(0)
    
    Сей код размещен специально чтобы морфнахом не криптовали пинчи? или есть какой то сокральный смысл?))
     
  7. [underwater]

    [underwater] Member

    Joined:
    29 Mar 2009
    Messages:
    78
    Likes Received:
    92
    Reputations:
    27
    Помогите пожалуйста - надо написать на асме:
     
  8. B1TMAST3R

    B1TMAST3R New Member

    Joined:
    18 Apr 2010
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0
    Простейшее задание. Сорцы на MASM ТУТ . Пароль к архиву - Antichat.ru
     
    2 people like this.
  9. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Я в asm пока новичек поєтому не судите строго.
    У меня такой вопрос как различают -128 и 128 в однобайтовом двоичном коде если они имеют одинаковій вид 1000 0000
     
  10. _iks_

    _iks_ Member

    Joined:
    21 Feb 2009
    Messages:
    60
    Likes Received:
    59
    Reputations:
    61
    Диапазон там должен быть от -128 до 127, то есть число 128 там отсутствует.
     
  11. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Почему если максимальное число в однобайтовом виде равно 255
     
  12. B1TMAST3R

    B1TMAST3R New Member

    Joined:
    18 Apr 2010
    Messages:
    3
    Likes Received:
    2
    Reputations:
    0

    Потому что есть "подтипы" переменных Signed и Unsigned. По вопросам дальнейшей поддержки обращайся к справочникам по переменным
     
    #732 B1TMAST3R, 4 May 2010
    Last edited: 4 May 2010
  13. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    Стоит начать с изучение книг по асму. Обычно в самом начале(например Крупник "Изучаем ассемблер") расписывают как работает механизм хранения и работы с отрицательными числами. А так в кратце если операция дает отрицательное число то там предусмотрен флаг. А как чего откуда можно еще вот тут например почитать.
     
  14. swt1

    swt1 Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    306
    Likes Received:
    78
    Reputations:
    21
  15. megavolt2000

    megavolt2000 New Member

    Joined:
    19 Oct 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Разработка и реализация на ассемблере программы обмена данными между ЭВМ через последовательный интерфейс.
    кто может сделать?
     
  16. XimiK69

    XimiK69 Member

    Joined:
    2 Jan 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    Задача. На вход подается текстовой документ на языке BASIC, на выходе должен получить код программы на языке ассемблер, т.е. написать некий однопроходный транслятор. Проблема при обработке переменных...Допустим на примере
    Code:
    LET A = B+1
    На ассемблере переменные A,B я считаю как "перемещаемые операнды", которые я должен изначально объявить в блоке "data?"
    Code:
    A dd ?
    но я не знаю какие переменные мне встретятся и заранее их объявить не могу, сначала думал закодировать латинский 26 букв в виде массива на ассемблере, но соль в том, что переменные могут состоять из набора букв и цифр размера не больше 8, локально объявить эти переменные тоже не получается. Какие могут быть идеи по объявлению этих переменных в ассемблере. В ассемблере я дилетант, пришлось столкнуться с ним только при написании этой задачи, поэтому прошу совета . . .
     
  17. ~JiM~

    ~JiM~ New Member

    Joined:
    24 Apr 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    вот у меня есть прога одна... на комп...
    в проге есть форма для данных (текст)...
    вот надо чтоб из этой формы то, что написал юзер, отсылалось мне на аську или мыло...
    чё надо шоб эт сделать или кто сделает?)...
     
  18. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Исходники проги есть?
     
  19. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Code:
    mov     ebx, eax
    and     ebx, esi
    Не могу понять что делает команда and
     
  20. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    устанавливает биты в регистре ebx в 0, на основе маски, содержащейся в esi, т.е. в ebx сбросятся те биты, которые установлены в 0 в esi