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

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

Тема в разделе "Assembler", создана пользователем Demyan18, 9 мар 2009.

  1. Demyan18

    Demyan18 Новичок

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

    Qorlum Новичок

    Регистрация:
    14 июл 2009
    Сообщения:
    4
    Симпатии:
    1
    Баллы:
    0
    Ответ

    Вот помучай этот код
    сам тоде изучаю асм но арифм. действия уже сделал
    Пример на 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 человеку нравится это.

Поделиться этой страницей