Comments 34
> Этот дедушка не умеет не то что делить — даже умножать.
Это нормально. Z80 тоже умножать не умеет.
Это нормально. Z80 тоже умножать не умеет.
+6
Это точно :)
Между ними разницы-то — всего 5 лет. Собсно Z80 это 8080 с доп.банком регистров, как я помню из вики — а 8080 это улучшенная версия 8008. А он в свою очередь — 8-разрядная версия 4004.
Но делить даже некоторые младшие AVR не умеют как помню, хотя с ними я очень слабо знакома.
Между ними разницы-то — всего 5 лет. Собсно Z80 это 8080 с доп.банком регистров, как я помню из вики — а 8080 это улучшенная версия 8008. А он в свою очередь — 8-разрядная версия 4004.
Но делить даже некоторые младшие AVR не умеют как помню, хотя с ними я очень слабо знакома.
0
Делить AVR вообще все поголовно не умеют, а младшие (и старые) еще и умножать не умеют. А вот любой дедушка семейства MCS51 умеет и делить, и умножать.
0
Вы правы! Спасибо! Ну я честно сказала что слаба знакома :)
0
А вот у прадедушки 8048 MSC48 нет даже команды вычитания, что поначалу впечатляет.
0
Ну это-то мелочи, т.к. вычитание зачастую это то же сложение. Я вот час назад разглядывая инструкцию к AVR (разбираясь с комментом выше) обнаружила что есть инструкция SUBI но нет ADDI — т.е. вычесть непосредственное значение можно а прибавить нельзя (что конечно не мешает вычесть отрицательное значение).
0
mc51 — вообще отличный выбор для начинающего.
-1
Собсно Z80 это 8080 с доп.банком регистров
Нет. Z80 просто обратно совместим с 8080. Помимо дополнительного банка регистров есть ещё ~500 дополнительных инструкций.
«Делить» не умеют даже совсем нескромные Itanium-ы
http://www.math.chalmers.se/Math/Grundutb/GU/MMG410/V11/FAQ/divsqrt.pdf
+4
У 8008 и у Z80 один создатель — Federico Faggin
Мне понравилась вот эта его лекция по сабжу www.youtube.com/watch?v=hugZii_eX30
Мне понравилась вот эта его лекция по сабжу www.youtube.com/watch?v=hugZii_eX30
0
Есть еще интересная информация — исследование о том, что Z80 не совсем 8 битный. Есть подозрения, что у него 4 битное АЛУ.
www.nedopc.org/forum/viewtopic.php?t=7790&start=6
www.nedopc.org/forum/viewtopic.php?t=9215
www.nedopc.org/forum/viewtopic.php?t=7790&start=6
www.nedopc.org/forum/viewtopic.php?t=9215
0
Умножают, не умножают…
Помню когда впервые эту песенку услышал, и полез в вики, был удивлен что родной Z80 был таки без умножения. Хотя это единственный ассемблер который я таки знал хорошо, а не на уровне написать пару строк в паскале, для ускорения или вызова низкоуровневых вещей.
С эмуляторами тоже забавно недавно было. Знакомый сказал мол 580-й (клон 8080) он видел только в эмуляторе. Я сказал мол живьем видел, но лишь мельком, а на следующий день я нахожу у себя инструкцию по бейсику СМ1800, которая была моей первой машиной (у деда в лаборатории стояла, я собственно на этом бейсике и писал первые строчки кода). Открываю вики и вижу, что это тот самый 580...))
Помню когда впервые эту песенку услышал, и полез в вики, был удивлен что родной Z80 был таки без умножения. Хотя это единственный ассемблер который я таки знал хорошо, а не на уровне написать пару строк в паскале, для ускорения или вызова низкоуровневых вещей.
С эмуляторами тоже забавно недавно было. Знакомый сказал мол 580-й (клон 8080) он видел только в эмуляторе. Я сказал мол живьем видел, но лишь мельком, а на следующий день я нахожу у себя инструкцию по бейсику СМ1800, которая была моей первой машиной (у деда в лаборатории стояла, я собственно на этом бейсике и писал первые строчки кода). Открываю вики и вижу, что это тот самый 580...))
+2
У меня не то, что клон. У меня оригинал работает стоит :) На голове появляется седина.
AMD 8088-1
8088

+5
У меня Intel 386 работал — я его полюбил за то что это реально был прорыв в то, без чего сейчас жизнь невозможна — многозадачные многопользовательские ОС.
0
Так это 8088, а не 8080, чей клон КР580ВМ80А. С этим имел дело любой пользователь икстишки.
+1
Пыль… Пожалейте его!
А по сути: оно ещё и работает?
А по сути: оно ещё и работает?
0
Да он вполне себе работает.
Пыли на самом деле тут не много, это он уже успел сново запылится.
вот тут у меня еще часть железок, если интересно.
fotki.yandex.ru/users/icce/album/155960
Правда не все.
Пыли на самом деле тут не много, это он уже успел сново запылится.
вот тут у меня еще часть железок, если интересно.
fotki.yandex.ru/users/icce/album/155960
Правда не все.
0
0
В «Спектрумах» в РОМе был «язык калькулятора», кажется так назывался. АПИ для математики.
0
Забавная игрушка. Но для работы её, похоже, надо серьёзно изучать, а то получается ужас.
Умножение 8*8 => 16 бит. 41 байт, не больше 280 тактов
fim p1,$23
fim p2,$35
fim p3,0
fim p4,0
fim p0,$08
repeat
clc
xch r9
ral
xch r9
xch r8
ral
xch r8
xch r7
ral
xch r7
xch r6
ral
xch r6
xch r5
ral
xch r5
xch r4
ral
xch r4
jcn $a,nadd
clc
xch r9
add r3
xch r9
xch r8
add r2
xch r8
jcn $a,nadd
isz r7,nadd
inc r6
nadd
isz r1,repeat
+1
а то получается ужас
Да, ужас и есть — на сайте недавно задачу на минификацию кода э-э-э… вот она преобразовать BCD в HEX выложили — я пока и пробовать не стала. Хотя судя по тому что кто-то в 37 байт запилил — какой-то нюанс в условии, который я не вижу — а если втупую делать у меня кода на три страницы (и то не работает).
+1
С битом «C» при вычитании, конечно, засада. Логичнее, если он устанавливается в 1 при «переполнении», а не наоборот.
Похоже, что в эмуляторе неправильно работает DAA: в инструкции написано, что при C=1 шестёрка прибавляется, а в эмуляторе — не хочет, и получается 9+9=12, а не 18.
Если я правильно понял задачу, то:
Похоже, что в эмуляторе неправильно работает DAA: в инструкции написано, что при C=1 шестёрка прибавляется, а в эмуляторе — не хочет, и получается 9+9=12, а не 18.
Если я правильно понял задачу, то:
35 байт, которые работают в эмуляторе
repeat
xch r0
dac
xch r0
jcn c1,add1
ldm 9
xch r0
xch r1
dac
xch r1
jcn c1,add1
ldm 9
xch r1
xch r2
dac
xch r2
jcn c1,add1
ldm 9
xch r2
xch r3
dac
xch r3
jcn c0,end
add1
isz r8,repeat
isz r9,repeat
isz r10,repeat
inc r11
jun repeat
end
30 байт, которые не работают (но, вроде бы, должны)
ldm 9
xch r4
repeat
clc
xch r0
add r4
daa
xch r0
xch r1
add r4
daa
xch r1
xch r2
add r4
daa
xch r2
xch r3
add r4
daa
xch r3
jcn c0,end
isz r8,repeat
isz r9,repeat
isz r10,repeat
inc r11
jun repeat
end
0
32 байта :)
repeat
xch r0
dac
jcn c1,add0
ldm 9
xch r1
dac
jcn c1,add1
ldm 9
xch r2
dac
jcn c1,add2
ldm 9
xch r3
dac
xch r3
jcn c0,end
add2
xch r2
add1
xch r1
add0
xch r0
isz r8,repeat
isz r9,repeat
isz r10,repeat
inc r11
jun repeat
end
Конечно, если r11:r8 изначально нулевые.
0
М-м-м, по хорошему их не имеет смысла сюда постить — можно ж прям там засабмитить попытаться. А то секрет украдут :D
0
Действительно. Но убирать уже поздно.
А там есть что-нибудь интересное?
А там есть что-нибудь интересное?
0
Там? Пряников и денег вроде не раздают :)
Ну просто в статистике по этой задаче можно зависнуть в топе списка назло потомкам. Но в общем на любителя конечно… Я и не пыталась эту сдавать. Но подсматривать в Ваше решение не хочу пока. М.б. прозрение озарит! Тем не менее спасибо — вернусь к нему если отчаюсь!
Ну просто в статистике по этой задаче можно зависнуть в топе списка назло потомкам. Но в общем на любителя конечно… Я и не пыталась эту сдавать. Но подсматривать в Ваше решение не хочу пока. М.б. прозрение озарит! Тем не менее спасибо — вернусь к нему если отчаюсь!
0
Забавная вещь, в своё время по 8080 в институтские годы нас сильно гоняли. Были стенды с самим процессором и периферией и ручным набор машинных кодов на цифровой клавиатуре. Сами написали под него компилятор, чтобы всё время по табличке не переводить, но вводить в любом случае вручную приходилось.
Спасибо, за статью и нахлынувшие тёплые воспоминания.
Спасибо, за статью и нахлынувшие тёплые воспоминания.
+1
Отсутствие умножения не значит невозможности создать сложную систему. У меня z80 решал систему нелинейных дифференциальных уравнений второго порядка (числа, естественно, были с плавающей запятой). Правда, очень медленно.
0
Ну с учетом того, что умножение — это краткая запись сложения, то действительно ничего удивительного.
0
Only those users with full accounts are able to leave comments. Log in, please.
Ассемблер Intel-4004 — для развлечения