Просмотр полной версии : Клинит башню от машинных систем счисления
Привет спектрумистам!!! Столкнулся со следующими проблемами
1. Нет реально работающего компа, слегка нету полной документации ;)
2. Второе, И самое главное, сейчас сформулирую, значит так:
все адреса в доках, числа в примерах и тд. записаны в 16-ной системе и..... ....В общем... у меня оооочень расплывчатый вопрос к кодерам.
Вы можете например так же свободно ориентироватся в 16-системе, как в десятичной? И как это достигается-то? Все же в самом начале сталкивались с этой проблемой. В свободное время сижу вот, пугаю родных: "ашка, эфка... значится 16, неее, 15, ага 1111 1111, эээ..."...
А можно как нибудь почеловечнее врубиться в предмет :rolleyes: ?
В смысле, переводить числа я умею, если долго потеть над каждым числом с
*Т.е.* мне интересна психология кодера в этом отношении.
Вот практический пример: читаю в доке - "$000000-$07FFFF chip-память
$080000-$1FFFFF зарезервировано $200000-$9FFFFF место для FASTпамяти".. и так далее до "FFFFFF". А потом уточняется, что мол, "это еще узкий диапазон, на M68030 адреса занимают двойное слово, так что типа не расстраивайтесь"..
А я и не расстраиваюсь, я просто выпадаю в осадок, это сколько кодить надо чтобы начать врубаться в адреса Z80 диапазона, я уж молчу про 32битные процы((((
Если постоянно или хотя бы часто "общаться" в hex, довольно быстро приходит привычка, и дальше всё просто :) . Наверно, психология тут такая же, как в случае с иностранными языками: практика, побольше практики :) .
Довольно быстро запоминается, что A=10, B=11, итд, а также все возможные значения умножения разряда на разряд...
Довольно быстро запоминается, что A=10, B=11, итд, а также все возможные значения умножения разряда на разряд...
Главное запомнить что в километре 1024 метра, а в минуте 64 секунды и все будет хорошо! :)
Shadow Maker
03.05.2005, 11:14
Да, как бы потом даже не переводишь, а реально мыслишь - типа - #4000 - это экран, и мне пох, какой у него десятичный адрес, все стандарные порты запоминаются... Это я в плане документации - какая разница в какой они кодировке написаны. Тем более в любой асм как правило встроен калькулятор - взял да посмотрел. А вообще никто не мешает же работаеть в dec?
Все это - дело привычки.
а потом - степени двойки запоминаются - и понять где примерно находится фдрес 6EF8 - не проблема.
в Hex работать проще в частности и потому, что многие адреса выровнены по степени двойки, и проще запомнить #4000, а не 16384 (адрес начала спектрумовского экрана, уже упоминался выше).
И #4000 * #4 = #10000 выглядит понятнее чем 16384 *4 = 65536.
а 65536 - 1 = 65535 соответсвует #10000 - #1 = #FFFF.
Вобщем, видно что с машиной проще разговривать на "машинном" - то есть в Hex - цифры получаются красивей и "ровней".
Часто приходится умножать в уме не на 10 или 100, как в обычной жизни, а на 16 или 256, тогда гораздо проще выглядят выкладки типа:
#15F * #10 = #15F0 чем 351 *16 = 5616 или
#15F * #100 = #15F00 чем 351 *256 = 89856.
вотъ ^__^
Shadow Maker
03.05.2005, 11:57
Собсна аффтор просил ему рассказать как можно быстро врубится в эту машинную систему счисления. Думаю, что самое главное - НЕ ПАРИТСЯ. Вот Робус вообще всегда только в dec пишет и ничего, так что как тебе удобнее, так и делай. Вот =_=
Shadow Maker good сказал ;)
реально помнишь 4 адреса в памяти
#0000 пзу
#4000 (16384) экран +например #1800 атрибуты +#0300 буфер принтера и пошли переменные
#8000 (32768) серединка памяти
#c000 (49152) меняемые странички памяти
ну и по мелочам
#6000 (24576) стандартное начало программ
#7FFD (32765 если OUT'ишь из бейсика) порт переключения страничек
#FE (254) порт бордюра, клавиатуры, и магнитофона
и практически фсе ;)
например если по #FDFD делаешь приход прерывания, то уже понимаешь, что это "где-то там, в высоте, за #C000, под самым ПЗУ" :)
в общем, ничего страшного.
Поддерживаю CHAR: именно так и я знаю НЕХ. Пишу себе в DEC. Ну приходится иногда с калькулятором попереводить. Никто толком не скажет как БЫСТРО научиться в НЕХ. Wlodek тоже прав - практика - и понемногу начнешь. А на амиге... Да. По перву я тоже пух от столь длинных чисел... А потом привык :) Но все ж работал в DEC.
Правильно говорят - это просто практика ... Я люблю всё писать в DEC, сам не знаю почему, просто уже мозги так стоят ... Примерно за 1-2 года я запомнил почти все n*256, где 0<=n<=255, за это же время запомнил десятичные значения команд, конечно не все, но думаю, что имея только бейсик и вообще ничего, смогу писать в машинном коде ... Это практика да и только ... А, вообще-то, нужно просто выбрать то что удобнее ... Я, кстати, заметил, что лучше всего помнить в BIN ! Конечно 65535 писать в бине это бред, но у меня почти всегда AND роднится с бином ... Главное в OCT'е (восьмеричке) не писать, это точно собьёт с мысли всех ... Хотя ... Смотрите, какая приятная защита сырца, можно ещё в "троичке" ...
Главное в OCT'е (восьмеричке) не писать, это точно собьёт с мысли всех ... Хотя ... Смотрите, какая приятная защита сырца, можно ещё в "троичке" ...
В восьмеричной тоже удобно, например для 1801вм1 в других системах просто неудобно писать, а так дело привычки. Я когда под Бк0010 програмил писал на восьмеричке, а на пентагон перелез стал писать в шестнадцатеричной. Так что просто надо смотреть что лично для тебя удобно ;) .
А я вспоминаю те времена когда ломал загрузчики ( у друга была модель кажется Delta, процессор работал на другой частоте, в ПЗУ на 1366 все времянки были изменены,а нестандартные лоадеры не работали) тупо выписывал код через PEEK addr, а потом переводил по книжке.
Время тратилось больше, зато значение многих команд заучил наизусть
В восьмеричной тоже удобно, например для 1801вм1 в других системах просто неудобно писать, а так дело привычки. Я когда под Бк0010 програмил писал на восьмеричке, а на пентагон перелез стал писать в шестнадцатеричной. Так что просто надо смотреть что лично для тебя удобно ;) .А еще в восьмеричке удобно задавать байт атрибутов экрана. Например: 017o - это paper 1+ ink 7, а 117o - то же самое + bright 1.
А еще в восьмеричке удобно задавать байт атрибутов экрана. Например: 017o - это paper 1+ ink 7, а 117o - то же самое + bright 1.
Круто! Держи 5 баллов! Переходим на 8-миричку ;)
В смысле, переводить числа я умею, если долго потеть над каждым числом с
*Т.е.* мне интересна психология кодера в этом отношении.
Вот практический пример: читаю в доке - "$000000-$07FFFF chip-память
$080000-$1FFFFF зарезервировано $200000-$9FFFFF место для FASTпамяти".. и так далее до "FFFFFF". А потом уточняется, что мол, "это еще узкий диапазон, на M68030 адреса занимают двойное слово, так что типа не расстраивайтесь"..
0-524287 - чип-память
524288-2097151 - зарезервировано
2097152-10485759 - фаст
От бредовых десятичных чисел и крыша может поехать... =)))))))))
Привет спектрумистам!!! Столкнулся со следующими проблемами
1. Нет реально работающего компа, слегка нету полной документации ;)
2. Второе, И самое главное, сейчас сформулирую, значит так:
все адреса в доках, числа в примерах и тд. записаны в 16-ной системе и..... ....В общем... у меня оооочень расплывчатый вопрос к кодерам.
Вы можете например так же свободно ориентироватся в 16-системе, как в десятичной? И как это достигается-то? Все же в самом начале сталкивались с этой проблемой. В свободное время сижу вот, пугаю родных: "ашка, эфка... значится 16, неее, 15, ага 1111 1111, эээ..."...
А можно как нибудь почеловечнее врубиться в предмет :rolleyes: ?
А так и надо - шестнадцатеричная соответствует группам по 4 бита двоичной. Я давно например научился переводить туда-обратно в уме, а вот для перевода из/в десятичную юзаю калькулятор. Ещё я научился двигать влево-вправо числа в шестнадцатеричной, а складываю их опять же на калькуляторе =)
Шестнадцатеричная система - не самоцель, а просто способ, облегчающий программирование. Например, если стоит and #c8, то ясно, что остаются биты 7,6 и 3. А если and 200 ? Или ещё пример - таблички по 256-байтовым границам. В hex'е например: org #6a00 : table1 ds 256, а в dec'е? org 27136 ???? Но никто же не заставляет, когда надо именно 100 раз скажем цикл прокрутить, писать #64 !...
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot