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

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

  1. emnm

    emnm New Member

    Joined:
    16 Nov 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Дело в том, что я даже не знаю как код написать правильно.
    Помоги если сможешь, плиз.
     
  2. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    emnm, ты скажи что тебе и для чего написать то.
    masm, tasm, fasm, или может 8086, или вообще arm?!
    Скажи как вводятся значения a и b?!
    Точнее, короче.
     
  3. emnm

    emnm New Member

    Joined:
    16 Nov 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Походу для masm

    чтобы код выглядел так вот, пример:

    .386
    .model flat, c
    .data
    extern a:word
    extern b:word
    temp dword?
    .code
    public exp_it
    exp_it PROC
    --------------;
    .....
    ....
    ....
     
  4. Errorist

    Errorist New Member

    Joined:
    22 Nov 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Здравя! Возможно ли обращение к usb flash посредством стандартных перериваний BIOS, если да, то каких..? Простите за ламерский вопрос, спасибо!
     
  5. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Тебе в универ/школу надо? Покажи, что вы там делали уже. Покажи любую программу, которую вы делали с преподом или из методички.
     
  6. emnm

    emnm New Member

    Joined:
    16 Nov 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Мне в универ надо.
    Вот пример другой программы.

    a/b +3, если a< b
    b, если a= b
    (b-9)/a, если a > b



     
  7. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Не проверял, но по аналогии если, то так:
    Code:
    
    ;(b-9)/a, если a > b
    ;b, если a= b
    ;a/b +3, если a< b
    
            .386
            .model flat, c
        
            .data
        
        extern a:word
        extern b:word
    
            .code
    
        public exp_it
    
    exp_it PROC
            ;--------------;
            xor     ebx, ebx
            xor     edx, edx
            ;---------------;
            mov     AX, a
            mov     BX, b
            cmp     AX, BX
            ;---------------;
            jg      abig ; a>b
            jl      asmol; a<b
            
            ;------a=b----;
    ;22, если a=b;
            mov     ax, 22
            cwd             ;))))
            jmp     p_exit
    
            ;--- a<b-------;
    asmol:
    ;a-9, если a<b;
            sub     ax, 9
            cwd
            jmp     p_exit
    
            ;------a>b------l
    abig:
    ;b/a, если a>b;
            cmp     bx, 0
            jz      p_error
            mov     ax, b
            mov     bx, a
            cwd
            idiv    bx
            jmp     p_exit
            ;--------------------;
    p_error:
            xor     eax, eax
            ;--------------------;
    p_exit:
            ret
    exp_it ENDP
    
    END
     
    #847 becensed, 19 Dec 2010
    Last edited: 19 Dec 2010
  8. emnm

    emnm New Member

    Joined:
    16 Nov 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Спасибо большое, но мне этот пример нужен

    b/a, если a>b;
    22, если a=b;
    a-9, если a<b;
     
  9. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    а это он и есть
     
  10. Tverskoy

    Tverskoy New Member

    Joined:
    29 Jul 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Категорически всех приветствую!
    Искал в гуглах, на WASM'е но вразумительного так ничего и не нашел...
    Есть ли у кого код под MASM (а он точно есть) поиска подстроки в строке?
    Имеем:
    string db 'дохрененная строка с текстом',0
    string1 db 'Искомый_текст',0

    на выхлопе получить смешение в байтах до первого вхождения.
    если есть пример на WinAPI буду очень рад.
    PS: вроде простая и востребованная функция, но в упор нет нигде её реализации :(
     
  11. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Идем в папочку masm32/m32lib/instring.asm и вуаля - готовая функция. Реализация, поставляемая прямо в комплекте с masm32. Она же описана в help/masmlib.chm.
     
  12. totenkopf

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

    Joined:
    19 Jul 2010
    Messages:
    92
    Likes Received:
    64
    Reputations:
    19
    а еще можно использовать функцию из библиотеки msvcrt

    Code:
    include msvcrt.inc
    includelib msvcrt.lib
    
    .data
    szString db "Hello World!",0
    szToken db "World",0
    
    .code
    
    invoke crt_strstr,addr szString,addr szToken
    
    в EAX смещение "World" или 0 если не найдено
    
    Но говорят это не тру.
     
  13. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    mov eax, 0A
    mov ecx, 3
    div ecx

    пишет integer overflow (я понял из-за чего это).
    как решить проблему при делении? (хотелось бы чтобы делил без остатка)
     
  14. totenkopf

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

    Joined:
    19 Jul 2010
    Messages:
    92
    Likes Received:
    64
    Reputations:
    19
    Code:
    xor edx,edx
    mov eax, 0A
    mov ecx, 3
    div ecx
    
    в edx остаток
    
    Или использовать вычисления с плавающей точкой

    Code:
    .data
    x real8 10.0
    y real8 3.0
    
    .data?
    z real8 ?   
    res db 20 dup(?) 
    
    .code
    start:
    
    xor edx,edx
    finit
    fld x
    fdiv y
    fstp z
    
    invoke FloatToStr,z,addr res
    invoke MessageBox,0,addr res,0,MB_OK
    
    
    invoke ExitProcess,0	
    end start
    
     
    #854 totenkopf, 28 Dec 2010
    Last edited: 28 Dec 2010
    1 person likes this.
  15. lenz

    lenz New Member

    Joined:
    6 Jan 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    начал изучать assembler олега калашникова ассемблер это проста, закачал порограмму(masm 611) и не получается создать первую программу com-фаил. Соэдал test.bat файл. В нем C:\Downloads\assembler\masm\MASM611\BIN\ml.exe test.asm /AT
    По Калашникову должно получится два файла(test.obj и test.com)
    Однако после запуска test.bat получил только один test.obj и окно:
    C:\Downloads\assembler\progmy>C:\Downloads\assembler\masm\MASM611\BIN\ml.exe test.asm /AT
    Microsoft (R) Macro Assembler Version 6.11
    Copyright (C) Microsoft Corp 1981-1993. All rights reserved.
    Assembling: test.asm
    fatal error A1020: cannot find link.exe
    C:\Downloads\assembler\progmy>pause
    Для продолжения нажмите любую клавишу . . .

    В чем ошибка?
     
  16. Edward

    Edward Banned

    Joined:
    11 Feb 2010
    Messages:
    329
    Likes Received:
    21
    Reputations:
    -1
    to Lenz:

    написано же:
    Линкер он найти не может.
     
  17. Tokarev

    Tokarev New Member

    Joined:
    7 Oct 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Code:
    CSEG segment
    Begin:
    
    mov ah,9
    mov dx,offset Message
    int 21h
    
    int 20h
    
    Message db 'Hello, world!$'
    
    CSEG ends
    end Begin
    
    Скомпилированная TASM прога не работает: сообщение Hello World не выводится (при запуске выводится набор русских букв)
     
  18. becensed

    becensed Member

    Joined:
    2 Dec 2009
    Messages:
    84
    Likes Received:
    24
    Reputations:
    1
    Конкретнее. С какими параметрами собирал прогу, в какой ОС запускаешь?
     
  19. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Что делает команда OR?
     
  20. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    судя по названию логическое ИЛИ