1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.

Арифметические действия в assembler

  1. Вот тут мучаю такой пример:((8А+128В)/(А+В))+D)
    И что-то нечего не получается. Пользуюсь литературой: Александр Крупник - Ассемблер. Самоучитель.2005
    Переменные A, B, В, нужно записать в виде констант. В книге я этого не нашол та и арифметические действия описаны без конкретных примеров.
    Огромная просьба, посоветуйте как мне решить этот пример или подскажите какой книгой мне нужно пользоваться чтобы решить его, где будет все описано(что, как, почему, зачем) и с большим количеством законченных примеров, а не урывков.
     
  2. Ответ

    Вот помучай этот код
    сам тоде изучаю асм но арифм. действия уже сделал
    Пример на FASM


    format PE GUI; использовать PE формат исполняемого файла
    entry start ;Точка входа в программу
    section ".data" data readable writable

    formats db "%d",0
    result db 256 dup(?) ;Когда будем преобразовавать число строку, сюда сохраним результат

    section ".code" code readable executable

    start:
    ;Алгоритм сложения чисел 1 и 2
    mov eax,1;Перемещаем в eax число 1
    add eax,2 ;Складываем содержимое eax и 1 результат в eax.
    push eax
    push formats
    push result
    call [wsprintfA]
    push 4h
    push 0
    push result
    push 0
    call [MessageBoxA] ;Выводим результат на экран.

    ;Алгоритм вычитания 4 из 10
    mov ax,10
    sub ax,4
    push eax
    push formats
    push result
    call [wsprintfA]

    push 4h
    push 0
    push result
    push 0
    call [MessageBoxA] ;Выводим результат на экран.


    ;Алгоритм умножения 2 на 6

    mov eax,2;Перемещаем в ax число 2
    mov ebx,1
    mul ebx

    push eax
    push formats
    push result
    call [wsprintfA]

    push 4h
    push 0
    push result
    push 0
    call [MessageBoxA] ;Выводим результат на экран.

    ;Алгоритм вычитания 4 из 10
    mov eax, 12
    mov edx, 0
    mov ebx, 2;
    div ebx

    push eax
    push formats
    push result
    call [wsprintfA]
    push 4h
    push 0
    push result
    push 0
    call [MessageBoxA] ;Выводим результат на экран.

    push 0
    call [ExitProcess]
    ret
    data import; таблица импорта

    dd 0,0,0,RVA kernel_name,RVA kernel_table
    dd 0,0,0,RVA user_name,RVA user_table

    kernel_table:
    ExitProcess dd RVA _ExitProcess
    dd 0
    user_table:
    MessageBoxA dd RVA _MessageBoxA
    wsprintfA dd RVA _wsprintfA
    dd 0

    kernel_name db 'kernel32.dll',0
    user_name db 'user32.dll',0

    _ExitProcess dw 0
    db 'ExitProcess',0
    _MessageBoxA dw 0
    db 'MessageBoxA',0
    _wsprintfA dw 0
    db 'wsprintfA',0

    end data
     
    1 человеку нравится это.