Умножение в ассемблере. Очень срочно

Тема в разделе "WASM.BEGINNERS", создана пользователем salaga, 26 май 2007.

Статус темы:
Закрыта.
  1. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    Пожалуйста помогите чайнику необходимо написать прогу на ассемблере умножения чисел с фиксированной запятойбсо сдвигом множимого в прямом коде ,код 2421 , формат (1,16) что с чего начать не знаю . Буду очень признателен тому кто ответит.
     
  2. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    Ребят хоть кто нибудь откликнитесь очень срочно надо экзамен висит.
     
  3. kush

    kush New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    46
    а что это такое
     
  4. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    смысл умножение заключается в следушем например мы имеем два числа в двоичном коде Например: A= 110 B=101
    A*B

    множитель 101 справа на лево первая единица значит прибавляем А

    000000 далее идет 0 значит просто сдвигаем влево
    +
    000110 далее 1 следовательно сдвигаем и прибавляем
    000110 000110
    + 001100 сдвиг
    011000 011000 сдвиг
    результат 011110
     
  5. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    да хотя бы прогу чтоб делала умножение со сдвигом множимого можно без всяких (прямом коде ,код 2421 , формат (1,16))
     
  6. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    Не уж то не кто не может помочь я думаю здесь необходимо использовать команду cmp и циклические сдвиги влево
     
  7. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Наверное так? Отладить, правда, нет времени. Ты уж сам как-нибудь...
    Переполнение тоже не заметим.
    Код (Text):
    1. .data
    2.     Result dw 0
    3.  
    4. .code
    5.     mov ax, A     ; Это будем сдвигать и складывать
    6.     mov bx, B     ; Биты этого будем анализировать
    7.  
    8.     mov cx, 16     ; 16 бит надо пройти в цикле
    9.     mov dx, 1       ; Начальная маска
    10.  
    11. chk_bit:
    12.     test bx, dx      ; Тестируем бит по маске
    13.     jz no_add       ; Бит = 0, пропускаем сложение
    14.  
    15.     add Result, ax   ; Бит не ноль, прибавим, значить...
    16.  
    17. no_add:
    18.     shl ax, 1    ; Слагаемое влево на 1 бит
    19.     shl dx, 1    ; Маску влево на 1 бит
    20.  
    21.     loop chk_bit
    22.  
    23.     ; теперь Result должен содержать производное
     
  8. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    AsmGuru62 спасибо за код
     
  9. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    проверил код работает может еще кто нибудь придложит другой код
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Нахал.
     
Статус темы:
Закрыта.