User Tag List

Страница 8 из 16 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 152

Тема: ВМИР-1

  1. #71

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Во бля, сам сколько раз проверял конец цикла:
    MOV A,B
    ORA C
    А в отношении HL не сообразил.Видимо голова становится деревянной.

    ---------- Post added at 09:13 ---------- Previous post was at 07:46 ----------

    А не завести ли тему - где размещать нестандартные подходы к подпрограммам на ассемблере? Я например самоучка, и мне каждый раз приходится изобретать велосипед. Но ведь наверное я не один такой.

  2. #72

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    perestoronin, а может где то здесь, в РАЗНОЕ?

  3. #73

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В общим написал пока так:

    MVI A, 01 (3E 01) 7
    ADD L (85) 4
    JNZ 0047 (C2 4700) 10
    MVI A, 01 (3E 01) 7
    ADD H (84) 4
    JNZ 0047 (C2 4700) 10

    Раз JNZ 0047, значит ты проверяешь флаг Z.

  4. #74

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,030
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Даже правильнее так, при сравнении какая операция выполняется над операндами и соответственно какой бит в регистре признаков при этом будет меняться и отвечать за совпадение или не совпадение.
    Сравнение == неразрушающее вычитание. Результат вычитания не записывается в аккумулятор, а признаки АЛУ обновляются так же, как при SUB/SBI.
    Больше игр нет

  5. #75

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    а при сравнении, какой флаг изменяется?
    Он и изменяется. Процессор вычитает из аккумулятора проверяемый байт, и смотря по результату изменяется - если они равны и результат вычитания равен 0, то Z. Если проверяемый байт больше содержимого аккумулятора, то С. Причем надо учесть, что такие команды как CPI, CMP так же вычитают и выставляют флаги, но содержимое аккумулятора не изменяют.

  6. #76

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от perestoronin Посмотреть сообщение
    INC L
    в смысле INR L?

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

  8. #77

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если нужен цикл 65536 раз, и в распоряжении имеем только регистры H,L, то обычно делают так:
    Код:
        LXI H,0
    L1: тело цикла
        ...
        DCR L
        JNZ L1
        DCR H
        JNZ L1
    Итого 8 байт.

    Если можно портить акк., то сравнить HL и 0FFFFh можно и так:
    Код:
       MOV A,H
       ANA L
       INR A
       JNZ L1
    Итого 6 байт.

    Но обычно сравнивают с нулём:
    Код:
       MOV A,H
       ORA L
       JNZ L1
    Итого 5 байт.

  9. #78

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    пишем его в память, увеличиваем HL +1 проверяем и по новой, как только -> проверяем и оно равно FFFF то естественно не переходим на начало
    Т.е. записали по адресу FFFE, увеличили на еденицу, сравнили - ага, оно равно FFFF и всё, по этому адресу уже не пишем. Я поэтому и писал, что сравнивать нужно с нулём, т.е. когда HL перевалит рубеж FFFF->0000.

  10. #79

    Регистрация
    12.12.2011
    Адрес
    г. Иркутск
    Сообщений
    2,509
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    У меня в HL находится адрес куда будет писаться содержимое аккумулятора, пишется с первой ячейки ОЗУ, т. е. в моём случае с адреса 0800h. И потом увеличивается на единицу.
    Тогда тебе нужно ловить не FFFF, а 0. Ведь в FFFF ты еще пишешь.

  11. #80

    Регистрация
    28.03.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,777
    Спасибо Благодарностей отдано 
    555
    Спасибо Благодарностей получено 
    200
    Поблагодарили
    138 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Вот это как вроде не подходит, так как команда ORA S реализует логическую операцию ИЛИ над содержимым аккумулятора и регистром L в нашем случае, а в аккумуляторе содержимое H, так как мы ранее его туда переслали. И в итоге если в HL будет: в Н - 1101 0111, а в L - тоже самое, то операция ИЛИ даст нам нулевой результат, и дальше ничего не будет действовать.
    Ничего подобного. Операция ИЛИ над одинаковыми операндами даст в результате тот же аргумент (в данном случае 1101 0111 ИЛИ 1101 0111 будет тоже 1101 0111). Как минимум один бит ненулевой, поэтому флаг Z установлен не будет.

    А вот как раз если оба операнда нулевые, то будет установлен флаг Z.

Страница 8 из 16 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Ваши права

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