MC68HC05

Тема в разделе "WASM.ELECTRONICS", создана пользователем DEADC0DE, 12 май 2008.

  1. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    Доброго времени суток коллеги!
    Непонятна инструкция в сабжевом контроллере
    jsr sub_B4B, x

    вроде аналог вызова call в Intel, но смущает , x. В мануале ничего про него не сказано, но такое чувство что это вызов со смещением... вот только относительно чего ? Может что просветит ?
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    может, страница
     
  3. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Скорее индексная адресация, т.е. х прибавляется.
    Может если в IDA включить комментарии, будет яснее.
     
  4. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    Включил и напротив этой инструкции ничего ((

    sub_CFA: ; CODE XREF: ROM:0C34P
    ROM:0CFA ; ROM:0C3BP ...
    ROM:0CFA sta byte_BC
    ROM:0CFC stx byte_BD
    ROM:0CFE lda #$10
    ROM:0D00 sta byte_C1
    ROM:0D02
    ROM:0D02 loc_D02: ; CODE XREF: sub_CFA+23j
    ROM:0D02 ldx byte_BC
    ROM:0D04 jsr byte_B4B, x <----- вот тут и непонятно
    ROM:0D07 ldx byte_BD
    ROM:0D09 lda word_D20, x
    ROM:0D0C bmi loc_D13
    ROM:0D0E jsr sub_CDF
    ROM:0D11 ldx byte_BD
    ROM:0D13
    ROM:0D13 loc_D13: ; CODE XREF: sub_CFA+12j
    ROM:0D13 ldx word_ADE, x
    ROM:0D16 jsr sub_9FC, x
    ROM:0D19 inc byte_BD
    ROM:0D1B dec byte_C1
    ROM:0D1D bne loc_D02
    ROM:0D1F rts
    ROM:0D1F ; End of function sub_CFA

    По адресу B4B находиться функция
    sub_B4B: ; DATA XREF: sub_CFA+Ao
    jsr sub_B67
    lda byte_AE
    add #$99
    sta byte_AE
    rts
    ; End of function sub_B4B
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    покажи байткод, соответствующий jsr'y.
     
  6. Ra_

    Ra_ New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    289
  7. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    JSR(a,x); (a,x) - absoite Indxed Indirect
    Код (Text):
    1.  Absolute Indexed Indirect -- (a,x)
    2.  
    3. The second and third bytes of the instruction are added to the X Index
    4. Register to form a 16-bit pointer in Bank 0. The contents of this pointer
    5. are loaded in the Program Counter. The Program Bank Register is not changed.
    6.  
    7.                  ____________________________
    8.     Instruction: | opcode | addrl  | addrh  |
    9.                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    10.                           | addrrh | addrl  |
    11.  
    12.                         + |        |  X Reg |
    13.                 -------------------------------
    14.                  |  00    |    address      |
    Вообще, это от сеговского чипа, не думаю что есть отличие в этой инструкции.
     
  8. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    n0name
    вот он:

    DD 0B 4B jsr sub_B4B, x
     
  9. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    twgt Да, я так и думаю, потому что сложив то что должно быть в Index Reg и адрес вызова, получился адрес по которому и начинается функция. Просто такой jsr со смещением встречается несколько раз и каждый раз ему предшествуют ldx с разными смещениями, я думаю это сделано для экономии места в ROM.
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    собственно вот вырезка из даташита.
     
  11. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    И еще вопрос что делает инструкция ?
    D9 0C D6 adc byte_CD6, x

    Первое что приходит в голову это прибавление к аккумулятору значения по адресу CD6 + carry flag + индексный регистр.
    Я прав ?
    И какой можно придумать аналог этой инструкции в x86 асме ?
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
     
  13. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    n0name
    A индексный регистр там при чем ?
     
  14. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    DEADC0DE
    Он так же прибавляется.

    ADC :)
     
  15. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    DEADC0DE
    ну как бы (M) зависит от режима адресации. Если режим IX, IX1, IX2, Тогда используется индексный регистр.
    Как бы может стоит почитать даташиты, разобратся с режимами адресации, где и когда какие регистры юзаются?
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ага? мне почему-то кажется что прибавляется ((X) + Off8)
    () - взятие значение.
     
  17. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    n0name
    Ну вот, как раз, от адрессации\опкода это зависит.
    Если ты приводил псевдокод для опкода D9 то именно так, берётся значение.
     
  18. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    twgt
    псевдокод как правило одинаков для всех опкодов. опкод влияет только на адресацию.
     
  19. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    n0name
    Не замечал такого раньше как-то - не часто включал комментирование кода для различных процессоров.
     
  20. DEADC0DE

    DEADC0DE New Member

    Публикаций:
    0
    Регистрация:
    23 апр 2008
    Сообщения:
    17
    Вообщем я и думал что прибавляется еще и X...