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

User Tag List

Страница 10 из 16 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 154

Тема: Мнемоники i8080 vs Z80

  1. #91
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Злостно воспользовался служебным положением и вытащил тему из "Радио 86РК", где ей в общем-то и не место. Пускай место будет тут.

    - - - Добавлено - - -

    Поведаю о нескольких командах столь ожидаемого мною процессора i8008.

    Есть у него группа команд прямой пересылки данных из регистра в регистр. Ну, как и у всех вменяемых процессоров. Моторолла МС6800 завистливо выглядывает изза угла со своими ДВУМЯ командами TAB и TBA
    В качестве первой буквы мнемоники там взяли L(oad), что уже само по себе как-то странно... Где же MOVе? Ну да фиг с ним.
    Думаете, построение мнемоник так идет типа Lxx A,B?
    А вот фигу. Было сделано интересней.
    Грузим в регистр А значение другого регистра или число:

    LAA
    LAB
    LAC
    LAD
    LAE
    LAH
    LAL
    LAI

    Красиво, правда?
    Могу привести подобное и для прочих регистров (B,C,D,E,H,L), но не буду, поскольку смысл понятен.

    У этого процессора в большинстве случаев можно тупо парсить три буквы мнемоники и сразу пихать код команды. Здесь программа-ассемблер вообще простая как три рубля должна быть. Но при чтении сорцов поначалу возникает чувство огромной кучи команд, которые ты панически "не помнишь". Но потом вспоминаешь, что это лишь разновидность того-то.
    Вот в данном случае, как мне кажется, есть слегка перебор с привязкой мнемоника-код.

    - - - Добавлено - - -

    Бонусом - догадайтесь, что делает команда LLL
    Последний раз редактировалось Ewgeny7; 13.12.2016 в 23:46.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

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

  3. #92
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ёптель, так об этом я и писал Х страниц треда ранее: тупое упрощение ассемблирующей программы - вот причина особенностей мнемоник Интел - все переложить на программиста, он таковский, "жить захочет и не так раскорячится". Десяток мнемоник загрузки у 8080 это еще оказывается у них был прогресс: научились обрабатывать операнды из второго столбика , у 8008 их вон было пару сотен. Рукалицо.
    Последний раз редактировалось Error404; 14.12.2016 в 00:15.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  4. #93
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Error404, просто самый первый ассемблер писался ручками на бумажжжке. Поэтому он обязан был быть простой, краткий, легкий, резкий как понос. А вот далее уже можно было усложнять его, поскольку писать новый в старом - уже легче, чем на бумажке

    - - - Добавлено - - -

    Вообще, изучать старинные процессоры - очень интересно.
    Например, у этого же 8008 есть по ВОСЕМЬ кодов команд JMP и CAL. Но нет команды NOP. Зато HLT - аж три кода, включая и... 00h.
    Работа с портами организована тоже - полное рукалицо. То, к какому порту ты обращаешься, прописано в самом коде команды, а не в отдельном байте. При этом, портов на ввод может быть восемь (0100ххх1), а на вывод - двадцать четыре (01ххххх1, ххххх >= 01000)...
    Что поделаешь, заря процессоростроения...
    Последний раз редактировалось Ewgeny7; 14.12.2016 в 00:32.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  5. #94
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    INTEL 8008 Instructions


    CPU control group

    binary old new Description

    0 0 0 0 0 0 0 x HLT HLT
    1 1 1 1 1 1 1 1 HLT HLT

    Input and output group
    binary old new Description


    0 1 0 0 M M M 1 INP IN port MMM
    0 1 R R M M M 1 OUT OUT port RRMMM (RR <> 0)

    Jump group
    binary old new Description


    0 1 x x x 1 0 0 JMP JMP unconditionally jump
    0 1 0 0 0 0 0 0 JFC JNC JMP if carry = 0
    0 1 0 0 1 0 0 0 JFZ JNZ JMP if result <> 0
    0 1 0 1 0 0 0 0 JFS JP JMP if sign = 0 (positive)
    0 1 0 1 1 0 0 0 JFP JPO JMP if parity = odd
    0 1 1 0 0 0 0 0 JC JC JMP if carry = 1
    0 1 1 0 1 0 0 0 JZ JZ JMP if result = 0
    0 1 1 1 0 0 0 0 JS JM JMP if sign = 1 (negative)
    0 1 1 1 1 0 0 0 JP JPE JMP if parity = even

    Call and return group
    binary old new Description


    0 1 x x x 1 1 0 CAL CALL unconditionally call subroutine
    0 1 0 0 0 0 1 0 CFC CNC CALL if carry = 0
    0 1 0 0 1 0 1 0 CFZ CNZ CALL if result <> 0
    0 1 0 1 0 0 1 0 CFS CP CALL if sign = 0 (positive)
    0 1 0 1 1 0 1 0 CFP CPO CALL if parity = odd
    0 1 1 0 0 0 1 0 CC CC CALL if carry = 1
    0 1 1 0 1 0 1 0 CZ CZ CALL if result = 0
    0 1 1 1 0 0 1 0 CS CM CALL if sign = 1 (negative)
    0 1 1 1 1 0 1 0 CP CPE CALL if parity = even
    0 0 x x x 1 1 1 RET RET unconditionally return
    0 0 0 0 0 0 1 1 RFC RNC RET if carry = 0
    0 0 0 0 1 0 1 1 RFZ RNZ RET if result <> 0
    0 0 0 1 0 0 1 1 RFS RP RET if sign = 0 (positive)
    0 0 0 1 1 0 1 1 RFP RPO RET if parity = odd
    0 0 1 0 0 0 1 1 RC RC RET if carry = 1
    0 0 1 0 1 0 1 1 RZ RZ RET if result = 0
    0 0 1 1 0 0 1 1 RS RM RET if sign = 1 (negative)
    0 0 1 1 1 0 1 1 RP RPE RET if parity = even
    0 0 A A A 1 0 1 RST RST call subroutine at adrs AAA000

    Load group
    binary old new Description


    1 1 D D D S S S Lds MOV d,s load d with content of s
    1 1 D D D 1 1 1 LdM MOV d,M load d with content of Mem
    1 1 1 1 1 s s s LMs MOV M,s load M with content of s
    0 0 d d d 1 1 0 LdI MVI d Load register d with data
    0 0 1 1 1 1 1 0 LMI MVI M Load Memory M with data b

    Arithmetic group
    binary old new Description


    1 0 0 0 0 s s s ADs ADD s add contents of s to A
    1 0 0 0 0 1 1 1 ADM ADD M add contents of M to A
    0 0 0 0 0 1 0 0 ADI ADI b add constant b to A
    1 0 0 0 1 s s s ACs ADC s add contents of s + CY to A
    1 0 0 0 1 1 1 1 ACM ADC M add contents of M + CY to A
    0 0 0 0 1 1 0 0 ACI ACI b add constant b + CY to A
    1 0 0 1 0 s s s SUs SUB s sub contents of s from A
    1 0 0 1 0 1 1 1 SUM SUB M sub contents of M from A
    0 0 0 1 0 1 0 0 SUI SUI b sub constant b from A
    1 0 0 1 1 s s s SBs SBB s sub contents of s + CY from A
    1 0 0 1 1 1 1 1 SBM SBB M sub contents of M + CY from A
    0 0 0 1 1 1 0 0 SBI SBI b sub constant b + CY from A
    1 0 1 0 0 s s s NDs ANA s logical AND of s and A to A
    1 0 1 0 0 1 1 1 NDM ANA M logical AND of M and A to A
    0 0 1 0 0 1 0 0 NDI ANI b logical AND of const b and A to A
    1 0 1 0 1 s s s XRs XRA s logical XOR of s and A to A
    1 0 1 0 1 1 1 1 XRM XRA M logical XOR of M and A to A
    0 0 1 0 1 1 0 0 XRI XRI b logical XOR of const b and A to A
    1 0 1 1 0 s s s ORs ORA s logical OR of s and A to A
    1 0 1 1 0 1 1 1 ORM ORA M logical OR of M and A to A
    0 0 1 1 0 1 0 0 ORI ORI b logical OR of const b and A to A
    1 0 1 1 1 s s s CPs CMP s compare s with A, set flags
    1 0 1 1 1 1 1 1 CPM CMP M compare M with A, set flags
    0 0 1 1 1 1 0 0 CPI CPI b compare const b with A, set flags
    0 0 d d d 0 0 0 INd INR d increment register d (d<>A)
    0 0 d d d 0 0 1 DCd DCR r decrement register d (d<>A)

    Rotate group
    binary old new Description


    0 0 0 0 0 0 1 0 RLC RLC rotate content of A left
    0 0 0 0 1 0 1 0 RRC RRC rotate content of A right
    0 0 0 1 0 0 1 0 RAL RAL rotate content of A left through CY
    0 0 0 1 1 0 1 0 RAR RAR rotate content of A right through CY

    - - - Добавлено - - -

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    а на вывод - двадцать четыре (01ххххх1, ххххх >= 01000)...
    Как вроде 27. В инструкции указан диапазон 10...37

  6. #95
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Denn Посмотреть сообщение
    HardWareMan, как я вижу выделенное на скрине. С9 - это RET, 47 не помню, хотя наверное выделено неверно: там 01 С9 47, т.е. в ВС или в DE грузим 47С9h. Далее из 4000h читаем в аккум, последний сдвигаем вероятно вправо (делим пополам, если по-русски), потом по какой-то кондиции флага <C> делаем RET, далее МУВ А,Б, затем CALL 1DAh и JMP 0B35h. Ещё что-то помню даже
    Почти. Да, я 01 не выделил.
    LXI B,47C9H
    LDA 4000H
    RRC
    RST 1
    MOV A,B
    CALL 01DAH
    JMP 0B35H
    Вполне осмысленный код, верно? А ведь это М68000, кусок в кишках Titan - Overdrive Megademo.

    - - - Добавлено - - -

    Цитата Сообщение от Error404 Посмотреть сообщение
    ёптель, так об этом я и писал Х страниц треда ранее: тупое упрощение ассемблирующей программы - вот причина особенностей мнемоник Интел - все переложить на программиста, он таковский, "жить захочет и не так раскорячится". Десяток мнемоник загрузки у 8080 это еще оказывается у них был прогресс: научились обрабатывать операнды из второго столбика , у 8008 их вон было пару сотен. Рукалицо.
    Конечно. Чего его жалеть то? Сидит, нихрена не делает, только штаны протирает. ИЧСХ, за полвека почти ничего не изменилось.

  7. #96
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Error404, просто самый первый ассемблер писался ручками на бумажжжке. Поэтому он обязан был быть простой, краткий, легкий, резкий как понос. А вот далее уже можно было усложнять его, поскольку писать новый в старом - уже легче, чем на бумажке
    Сказочки это все, про бумажки (ну может кроме начала 50х). Как и сказочки про БилГейтца что он бейсик на бумажке написал. Мифы. Городские легенды. Не надо примерять на себя. Все разработки крупных заводов или припроизводственных институтов (и блатных "золотых мальчиков" типа Билла) делались на мейнфреймах, зачастую на языках более высокого уровня чем ассемблер. Мейнфреймы (и машины среднего класса типа IBM360) даже в нищем СССР для этого были более чем доступны, чего уж говорить о странах золотого миллиарда. Потому что это производство, а не гараж с любителями (которых были единицы штук и ничего фундаментального или ресурсоемкого они не сделали). И перед глазами у них были примеры ассемблеров с тех самых платформ - весьма развитые (на ассемблере мейнфреймов до сих пор пишут бизнес-приложения). Другое дело, что любую разработку можно сделать удобной, а можно по принципу "сейчас бысто сделаем просто чтоб было, все равно на нем писать всерьез не станут - только чтобы ЯВУ осилить, да контроллеры с кодом в десяток строк"

    - - - Добавлено - - -

    Кстати, вполне возможно что бешеный успех мелким восьмибиткам и не планировался, соответственно и не напрягались особо на счет удобств пользователя. А дальше уже работал капиталистический принцип "ну пипл же хавает" (чему этот тред - подтверждение).
    Оффтоп. Как там в 8008 - тоже 3 питания?
    Последний раз редактировалось Error404; 14.12.2016 в 09:08.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  8. #97
    Guru Аватар для Denn
    Регистрация
    04.05.2006
    Адрес
    St.-Petersburg
    Сообщений
    2,220
    Спасибо Благодарностей отдано 
    475
    Спасибо Благодарностей получено 
    900
    Поблагодарили
    592 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    Arrow

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Почти. Да, я 01 не выделил.
    LXI B,47C9H
    LDA 4000H
    RRC
    RST 1
    MOV A,B
    CALL 01DAH
    JMP 0B35H
    Вполне осмысленный код, верно?
    Явки 47C9H и 4000H не орионовские, так что для меня смысла мало


    Цитата Сообщение от HardWareMan Посмотреть сообщение
    А ведь это М68000
    Класс! Я оказывается понимаю проц, который не знаю
    Последний раз редактировалось Denn; 14.12.2016 в 11:16.
    Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел

  9. #98
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Как вроде 27. В инструкции указан диапазон 10...37
    24. Не все коды задействованы.
    Да, удалить пост не забудь!
    Здесь набор команд представлен удобнее.

    - - - Добавлено - - -

    Цитата Сообщение от Error404 Посмотреть сообщение
    Как и сказочки про БилГейтца что он бейсик на бумажке написал.
    Я вообще такого не читал.
    Было такое, что Гей-ц, летя в самолете со своим Барсиком, умудрился что-то там ДОПИСАТЬ и закончить сей продукт. Как потом оказалось - без ошибок. Но это может быть и десяток-другой команд. Такое я где-то читал в историях барсиков.

    Цитата Сообщение от Error404 Посмотреть сообщение
    Все разработки крупных заводов или припроизводственных институтов (и блатных "золотых мальчиков" типа Билла) делались на мейнфреймах, зачастую на языках более высокого уровня чем ассемблер.
    Может быть и такое, я свечку не держал. А в моем посте больше сарказма, чем утверждения

    Цитата Сообщение от Error404 Посмотреть сообщение
    Как там в 8008 - тоже 3 питания?
    Дык.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  10. #99
    Banned
    Регистрация
    04.03.2010
    Адрес
    Россия. Пятигорск.
    Сообщений
    2,296
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    24. Не все коды задействованы.
    Ну, может. У меня в инструкциях указан диапазон такой 10...37, а особо читать не хочется их и много, они и на английском, а это соответственно долго, да и объёмные они, по 45 МБ. Поэтому особо не стал вникать в текст, но там есть и про NOP, как она реализуется. Но опять же из-за не нужности, детально вникать не хочется.

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Да, удалить пост не забудь!
    Спасибо, что напомнил. Обязательно, но позже.

  11. #100
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Но опять же из-за не нужности, детально вникать не хочется.
    А я вникаю, готовлюсь, мне миникомп на нем собирать и запускать.
    Правда, заказанный процессор опять куда-то в Черную Дыру Абамы пропал.
    Для желающих поучавствовать в тотализаторе - RF462001245CN

    - - - Добавлено - - -

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    да и объёмные они, по 45 МБ
    Возьми поменьше, по 5 с хвостиком мегабайт.

    - - - Добавлено - - -

    Вариант компа на 4004 придется таки делать с участием CPLD. Цены на реал высоки.
    А ядро 4004 с (обещанным) точным симулированием есть в интернетах. Аж в EPM570 влезает, прям как потактовый клон ВМ80
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

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

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

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

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

Похожие темы

  1. Ответов: 72
    Последнее: 08.12.2019, 00:36
  2. I8080 TO Z80 SOURCE TRANSLATOR
    от Sergey в разделе Программирование
    Ответов: 31
    Последнее: 22.04.2018, 07:52
  3. Совместимость Z80 и i8080 (580ВМ80)
    от Dmitry Dubrovenko в разделе Для начинающих
    Ответов: 50
    Последнее: 08.05.2016, 09:54
  4. Код эмуляции i8080 на С
    от medvdv в разделе Эмуляторы отечественных компьютеров
    Ответов: 15
    Последнее: 27.03.2015, 03:43
  5. Эмулятор i8080
    от Higgins в разделе Разное
    Ответов: 2
    Последнее: 20.05.2011, 11:43

Ваши права

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