Циклы в ассемблере[Help me]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cheater_man, 1 Apr 2010.

  1. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Нужно организовать оператор условия на асме, например
    Code:
    if(a>=34&&a<=100&&b==4)
    
    Используя маш. команду OR
     
    #1 cheater_man, 1 Apr 2010
    Last edited: 2 Apr 2010
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    o_O сам понял че написал? цикл например if...
     
    _________________________
  3. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    cheater_man, тот код, что ты привел, это оператор условия (который может использоваться в цикле), но не цикл

    распиши подробнее задачу
     
  4. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Короче есть строчка кода на С
    Code:
    .....
    if(a>=34&&a<=100)
    .....
    
    Нужно этот же код на асму переписать с командой OR
    Без OR будет примерно так:
    Code:
    mov ax,a
    mov bx,34
    cmp ax,bx
    mov ax,1
    jge m1
    sub ax,ax
    m1:
    test ax,ax
    jnz переходим к след условию a<=100
    jmp if невыполнился
    ....
    
    :D А вот как сделать это с OR :confused:
    Нужно сначала сравнить эти выражения, а потом проверить OR'ом.Вообще так возможно(используем только регистры ax и bx)???
     
  5. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    Code:
    mov ax,a
    cmp ax,34
    JL невыполнился
    cmp ax,100
    JG невыполнился
    наверное вот так как то. а что ты хочеш делать с OR непонятно)
     
  6. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Это то да :) Но не то.
     
  7. Swat2k

    Swat2k New Member

    Joined:
    12 Sep 2007
    Messages:
    38
    Likes Received:
    4
    Reputations:
    0
    Code:
    include 'win32ax.inc'
    .data
    a db 34d;
    b db 4d;
    .code
    OEP:
            mov ah,[a]  ;ah = a
            mov al,[b]  ;al = b
            cmp ah,34d  ;
            jnae _exit  ; exit if not above or equal (X < Y)
            cmp ah,100d;
            ja _exit    ; exit if above (X > Y)
            cmp al,4d;
            jnz _exit   ; exit if above (X != Y)
            invoke  MessageBox,HWND_DESKTOP,"Число a , находится на отрезке [34,100] и b == 4",invoke GetCommandLine,MB_OK
    _exit:  invoke  ExitProcess,0
    .end OEP
    Интересно бы было посмотреть на вариант с OR
     
    #7 Swat2k, 2 Apr 2010
    Last edited: 2 Apr 2010
  8. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Спасибо всем за советы ;) Разобрался сам :)
    Closed & deleted