Важная информация

User Tag List

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 79

Тема: Ассемблер. Первые шаги.

  1. #21
    Member Аватар для budder
    Регистрация
    13.04.2005
    Адрес
    Петрозаводск
    Сообщений
    83
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mig'95 Посмотреть сообщение
    Какое-то уродство, не правда ли?
    Наверняка есть более изящный способ реализации алгоритма.
    Его мне и хотелось бы увидеть. Вопрос не праздный, ответ на него поможет мне разобраться с ветвлением в программе (а интересует в первую очередь именно оно).
    Вот вариант немного получше:
    Код:
            ORG #6000
            LD HL,#093E
            LD DE,#5800
            LD BC,#2001
    L0      LD A,C
            AND (HL):INC HL
            JR Z,$+2+2+2:LD A,#57:JR $+4
            LD A,#47
            LD (DE),A:INC E
            DJNZ L0
            RET
    В данной ситуации лучше отказаться от CALL'ов... Также передачу правильней делать через аккумулятор, т.к. иногда нужно брать значения из переменных...

    Можно ещё упростить, но проца уже будет без ветвлений.

  2. #22
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    PO/PE - это совсем не та чётность, которую бит 0 показывает...
    Можно так сделать:
    Код:
            LD HL,#5800
            LD DE,#093E
            LD B,32
    L0      LD A,(DE)
            AND A
            LD A,#57
            JP PO,L1
            LD A,#47
    L1      LD (HL),A
            INC L
            INC DE
            DJNZ L0
            RET
    Последний раз редактировалось SAM style; 20.05.2007 в 23:36.
    Все любят гипножабу

  3. #23
    Member Аватар для budder
    Регистрация
    13.04.2005
    Адрес
    Петрозаводск
    Сообщений
    83
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    PO/PE - это совсем не та чётность, которую бит 0 показывает...
    само собой...

  4. #24
    Member Аватар для budder
    Регистрация
    13.04.2005
    Адрес
    Петрозаводск
    Сообщений
    83
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mig'95 Посмотреть сообщение
    Я стесняюсь спросить.. Но что это значит?
    собственно по биту 0 проверяется кратность числа 2-ке...

    флаг P/V же принимает значение от P при командах and, xor, и т.д. (он также может принимать значение от V)
    P - индицирует "чётность" в результате операции, т.е. принимает значение 1, если кол-во включенных битов кратно 2 (в том числе 0) и 0, если кол-во включенных битов не кратно 2...

    PE - чётность (P/V=1)
    PO - нечётность (P/V=0)
    Последний раз редактировалось budder; 22.05.2007 в 05:20.

  5. #25
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
        ld hl,#5800
        ld de,#093e
        ld b,32
    cyc:
        ld a,(de)
        and 1
        rla
        rla
        rla
        rla
        xor #47
        ld (hl),a
        inc l
        inc de
        djnz cyc
        ret

  6. #26
    Member Аватар для jim
    Регистрация
    31.03.2005
    Адрес
    Новосибирская область
    Сообщений
    96
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию по поводу af

    у меня простой вопрос, что будет в регистре H после выполнения:
    ..
    push af
    pop hl
    ..
    ?

  7. #27
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jim Посмотреть сообщение
    у меня простой вопрос, что будет в регистре H после выполнения:
    ..
    push af
    pop hl
    ..
    ?
    h = a; l = f

  8. #28
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mig'95 Посмотреть сообщение
    Как понимать IXL и IXH?
    Это младший (IXL) и старший (IXH) байты IX. То же самое, как H и L составляют HL.
    Все любят гипножабу

  9. #29
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mig'95 Посмотреть сообщение
    Тогда мне не совсем понятно действие команды ADD IXL. Что она прибавляет к содержимому младшего байта рег. пары IX?
    И ещё, при загрузке двухбайтового значения в рег пару IX, означает ли, что в I загружается старший байт, а в X - младший? Собсно смущает то, что I активно используется при обработке прерываний..
    Это эмуль сокращает. На самом деле это ADD A,IXL (A=A+IXL)
    Не путай - IX это не I и X (это Index register X). IX=256*IXH+IXL. Кстати, IXL и IXH бывает ещё обозначаются как LX и HX
    Все любят гипножабу

  10. #30
    Activist Аватар для Retrograd
    Регистрация
    29.12.2006
    Адрес
    Одесса
    Сообщений
    435
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А подскажите, плиз:

    push af
    ld a,#02
    call #1601
    ld de,text

    print:
    ld a,(de)
    inc de
    rst #10
    and a
    jr z,print
    ret

    text defb "ZX-Spectrum",0

    Почему после RST#10 в АF появлется значение 38h? Как сделать проверку "конец строки" в таком случае?
    ZXM-Phoenix 1024 + ZXKit1, Sinclair ZX Spectrum+, АТМ 2 TURBO+, PentEVO rev. C, Speccy2007, Commodore C64, Amiga A1200, Amiga A500, MSX2, Atari 800XL, Atari 130XE + SDrive, Atari ST, Atari Jaguar, Altera DE1,

    +Небольшая стоечка в серверной комнате.

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

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

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

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

Похожие темы

  1. SjASMPlus Z80 кросс ассемблер
    от Aprisobal в разделе Программирование
    Ответов: 1663
    Последнее: 19.06.2021, 01:36
  2. Первые итоги
    от CityAceE в разделе Форум
    Ответов: 25
    Последнее: 15.07.2005, 08:03
  3. sjasm - первые глюки
    от breeze в разделе Программирование
    Ответов: 9
    Последнее: 24.03.2005, 10:51
  4. ZX ассемблер (и не только?) с библиотеками
    от shade в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2005, 19:43

Ваши права

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