User Tag List

Показано с 1 по 10 из 28

Тема: Арифметические процедуры на ассемблере

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    15.01.2005
    Сообщений
    201
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а вообще, все это жесткая порнуха; кто миллисекунды увеличивает? на прерываниях? ну и делается это тогда отдельными счетчиками на мсек/сек/мин/час, увеличивающимися друг за другом, зачем вообще процессор и такты излишне жечь делением?! )

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    10.02.2014
    Адрес
    г. Тула
    Сообщений
    539
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    44
    Поблагодарили
    30 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Дмитрий2012, если время потом нужно вывести, то как предложил char можно сделать табличку с константами
    Пока "мотаю на ус" С табличками не знаком, никогда не использовал их. Возможно попробую и такой вариант для саморазвития, как только сделаю вариант с делением.

    Цитата Сообщение от char Посмотреть сообщение
    а вообще, все это жесткая порнуха; кто миллисекунды увеличивает? на прерываниях?
    миллисекунды считает "железка" и хранит у себя. И в одном из пунктов меню утилиты, которую пишу для этой "железки" процессор занят только выводом на экран этого времени. Можно сказать это простой "показометр". Так что в данном случае не критично как перекодировать время. Главное, чтобы правильно на экран выводилось в часах, минутах, секундах ...

  4. #3

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Дмитрий2012 Посмотреть сообщение
    С табличками не знаком, никогда не использовал их.
    к примеру нарисую умножение на 3 по табличке

    Код:
    ld h,$c0 ;старший адрес таблички
    
    ld l,a  ;то что нужно умножить
    
    ld a,(hl)  ;получаем результат
    
    ;сама табличка
    org $c000
    defb 0*3
    defb 1*3
    defb 2*3
    defb 3*3
    ....
    ;и так до
    defb 255*3

    если нам не хватает 8 бит для результата
    Код:
    ld h,$c0 ;старший адрес таблички
    
    ld l,a  ;то что нужно умножить
    
    ld с,(hl)  ;получаем младший байт результат
    
    inc h ; меняем табличку
    
    ld b,(hl) ;получаем старший байт результата
    
    ;сама табличка
    org $c000
    defb (0*3) % 256 ;% - остаток от деления. в sjasmplus можно low (0*3)
    defb (1*3) % 256
    defb (2*3) % 256
    defb (3*3) % 256
    ....
    ;и так до
    defb (255*3)% 256
    
    org $c100
    defb (0*3) / 256 ; в sjasmplus можно high (0*3)
    defb (1*3) / 256
    defb (2*3) / 256
    defb (3*3) / 256
    ....
    ;и так до
    defb (255*3) / 256

    с таким же успехом можно делать таблички в другой плоскости (правда с некоторыми ограничениями)
    в l заносить номер таблички
    а в h подставлять данные для обработки


    таким образом можно запихнуть любое количество операций любой сложности с одной переменной
    (нет можно и с несколькими конечно но это уже сложней и памяти жрет неимоверно)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 32
    Последнее: 10.09.2024, 06:21
  2. Функция #0a процедуры #3d13
    от axor в разделе Программирование
    Ответов: 3
    Последнее: 12.10.2006, 16:31
  3. Арифметические операции с двухбайтными числами
    от mishutka в разделе Программирование
    Ответов: 10
    Последнее: 17.02.2006, 19:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •