Консультация № 191433
07.10.2017, 19:09
0.00 руб.
0 6 1
Уважаемые эксперты, здравствуйте! У меня возникли вопросы по книге О.А.Калашникова,

глава 3, листинг 3.2:
1) в сегментный регистр es загружается число 0B800h - что значит "это число соответствует сегменту дисплея в текстовом режиме" ?
2) что означает запись es:[di] (что означают квадратные скобки) ? почему же не записать просто es:di ?
3) mov ah, 31 -
a) "31" - десятичное или шестнадцатиричное число ?
б) что означает термин "атрибут" символа ?
в) любого символа ? означает ли это цвет фона (синий), или же имеются какие-то другие параметры (любого ?) символа ?
4) mov al,01 -
а) "01" - десятичное или шестнадцатиричное число ?
б) в регистр al заносится ASCII-код символа - означает ли это, что может быть любой текстовый (ASCII) символ, а не только "рожица" ?

лет 5-6 тому назад я читал информацию в Интернете, что в 1950-70-е годы на Украине (Украинская ССР) разрабатывали архитектуры (именно с математических основ) своих Советских микрокомпьютеров (микропроцессоров), которая была отлична от фон-Неймановской архитектуры и Гарвардской архитектуры, разрабатываемых в США. верно ли это ? где можно познакомиться с работами Украинских ученых по данной области науки и тематике за 1950-80-е годы ?
для полного понимания Ассемблеров - что и как они (Ассемблеры) делают-выполняют - хотелось бы понять и изучить работы украинских математиков-физиков-программистов за 1950-70-е годы по теме разработок архитектур и микропроцессоров. имеется ли доступ к данной информации на территории экс-СССР в настоящее время ?
также для понимания Ассемблеров (Intel-овской версии) хотелось бы познакомиться с архитектурой и электронным строением старых микропроцессоров - 8086-8088 ? а также как разрабатываются микропроцессоры, вообще ? как исполняются коды (в электронике - сигналы электромагнитных напряжений-импульсов) в реальном времени ? имеется ли доступ к данной информации на территориях РФ, Украины, Белоруссии в настоящее время ? можете ли вы подсказать книги или научные статьи по данным тематикам ?

у меня имеются еще вопросы по сегментации и адресации памяти (ОЗУ и ПЗУ), которые являются на самом деле довольно обширными и научными темами - эти вопросы я задам в следующих сообщениях.

Спасибо.

Обсуждение

давно
Посетитель
401339
51
07.10.2017, 21:04
общий
Уважаемые эксперты, добрый вечер,

для полного и самосогласованного понимания Ассемблеров и опыта работы на них - будь то Intel-овские, Apple-овские или другие Ассемблеры (для различных микропроцессоров и микроконтроллеров) - а также программирования "железа" (hardware) - новичкам необходимо также знать в полной мере двоичные, восьмиричные и шестнадцатиричные системы исчисления, в частности - почему в Computer Science (только что основанный компьютерные науки) в 1920-30-е года "проникли" именно двоичная-и-шестнадцатиричная системы исчисления (а не троичная-четвиричная-пятиричная системы исчисления) ? по своей интуиции - могу сказать (i guess - я угадываю), что ответы (физико-математические - а именно формулы и их математический вывод) на эти вопросы прячутся где-то в теме "Обработка сигналов" ("Signal Processing"). может быть имеются книги по данной обширной теме ?

для того, чтобы уметь программировать на различных и произвольных Ассемблерах, новичкам (коим я и многие другие на Форуме являемся) необходимо освоить не только синтаксис Ассемблеров, но и физико-математические основы (в том числе формулы и их вывод) существующих архитектур микро-компьютеров/процессоров/контроллеров, а также основы электроники (микро- и нано-) микропроцессоров, микроконтроллеров, микрокомпьютеров - аналоговую и цифровую электронику - с самих основ и вплоть до самосогласованного применения и использования различных элементов электроники для собственного дизайна (пусть даже элементарного-простого, но своего) микропроцессоров и других цифровых и аналоговых устройств. то есть, что я хочу сказать - необходимо изучать темы Компьютерных наук (IT) и электроники не отдельно, а совместно - то есть применять различные научные темы применительно для разработки какого-либо одного (или нескольких) электронных устройств - ведь микрокомпьетры можно наверное разрабатывать не только, используя сложные электронные микросхемы (радиоэлектронные детали черного цвета со многими ножками-отводами) сразу, но и обычные аналоговые радиоэлектронные детали-элементы - для программирования на Ассемблерах нужно знать и уметь работать с электроникой - я для этого новичкам нужна практика (!!!!! - практические навыки своими руками и мозгами) разработок микроэлектронных (аналоговых и цифровых) радиоустройств (пусть даже элементарных-простых) - пусть даже свои простые-элементарные разработки происходят (осуществляются) сначала в воображении, а потом на бумаге (при помощи ручки, карандаша, стиралки, линейки) и затем при помощи вычислений на компьютере с помощью математических программ - Matlab, Mathematica, Maple (лицензионные продукты-софт) - или с помощью программирования на C/C++ или Fortran-77/90/95 (free GNU license). а затем уже освоить тему разработок (написания source codes) уже сами Ассемблеров (человеко-подобных языков для "общения" с микроэлектронной начинкой радиоэлектронных устройств-приборов).

в настоящее время, "свое личное воображение, научно-техническая литература и сопутствующий софт, доступные в Интернете, ручка-карандаш-бумага-стиралка-линейка и использование компьютера для математических вычислений-программирования" - это единственный способ учебного само-освоения различных Ассемблеров, электроники-"железа" (hardware), и их практического применения и функционирования - особенно в настоящее время в странах экс-СССР, где научные книги, журналы, статьи, реальные радиоэлектронные детали и приборы стоят очень-очень больших денег, которые (деньги) недоступны обычным (а не валютным миллионерам и миллиардерам) экс-Советским гражданам.

Спасибо.
давно
Старший Модератор
31795
6196
08.10.2017, 16:29
общий
08.10.2017, 16:29
Адресаты:
Для понимания этого Вам нужно начать с понимания -как формируется физический адрес реального режима.
Процессор в реальном режиме может адресовать только 1Mb памяти, а это 16-ть сегментов по 64Kb. С сегментом в 64Kb Вы уже знакомы. Если говорить точнее, физический адрес получается из суммы значения сегментного регистра*16 и адреса в сегменте:
F0000=F000*16
0FFFF
FFFFF=1Mb=1048576 байт.
Теперь об организации памяти в реальном режиме:
0-сегмент-служебный сегмент Bios/Dos, в нем хранят служебные переменные, таблицу прерываний(все перечислять не буду).
1-9 сегмент- сегменты области пользователя.
A-C сегмент- видеобуфера/видеоконтролера.
D-E сегмент в котором расположена Dos и резиденты Bios, но не факт, т.
к. от системы к системе эти области меняются.
F-сегмент, в который копируется содержимое ПЗУ Bios.
Разберитесь с этой информацией(см. на книгу С.В.Кулакова -программирование на аппаратном уровне). Завтра отвечу уже на все Ваши вопросы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401339
51
09.10.2017, 00:57
общий
Адресаты:
Уважаемые Константин Николаевич и эксперты,
здравствуйте,

спасибо за Ваше сообщение.

с точки зрения простого объяснения как формируется физический адрес (Ваше объяснение и из Wikipedia) - мне стало это понятным - происходит сдвиг на четыре бита (эквивалентно умножению на 16) в двадцатибитной шине адресов и данных.

Константин Николаевич, это все теория, которую могут освоить также и молодые научные сотрудники и молодые профессиональные программисты. меня же интересует -
1) что руководило и побуждало разработчиков (как правило их было не больше двух, может быть один) выбирать такие числа-параметры для сегментов и памяти - 64 килобайта ... 1мегабайт ... четырехбитное смещение в шине адресов (а не пятибитное или другое-битное смещение) и т.д.

Константин Николаевич, по свое специальности я - физик (компьютерное моделирование в атомной (квантовые электронные переходы в атомах) и лазерной физике) и могу предположить, что разработчиками Интеловских процессоров руководило (может и руководит и сейчас) религиозный фанатизм-вера в какие-то числовые закономерности - это присутствовало в науке в средние века в Европе и в Древнем Египте. это только предположения, основанные на моем профессиональном и наблюдательном опыте из моего прошлого - так как мы с Вами не Вольфы Мессинги, и поэтому заглядывать в прошлое и будущее других людей на расстоянии не можем. с другой стороны, Intel - это коммерческая компания - поэтому возможно, что разработки микропроцессоров были ... сворованы из какого-либо Американского университета - из своего опыта знаю, что этим способом (научно-техническое воровство) пользуются крупные коммерческие компании в Великобритании.

2) также меня интересует сама схемотехника (полупроводниковая микроэлектроника) и дизайн (разработка) самих микропроцессоров - то есть хотелось бы научиться разрабатывать самому микропроцессоры (на бумаге (сначала) и, потом, на компьютере) - для этого хотелось бы научиться также и разработке элементной базы (вентили, переключатели, запоминающие устройства и т.д.) на примере аналоговой электроники (обычные диоды, резисторы, конденсаторы, биполярные транзисторы) - для того, чтобы перейти к изучению микроэлектронного строения, функционирования и разработке (самому) микроэлектронной структуры пусть даже старых (старые модели) микропроцессоров/микроконтроллеров, необходимо довольно профессионально владеть базой-основой, а именно аналоговой схемотехникой-электроникой.
может быть сможете порекомендовать какие-либо книги по аналоговой электронике-схемотехнике, начинающиеся с самих радиоэлектронных основ-фундамента ?

Спасибо.
давно
Старший Модератор
31795
6196
09.10.2017, 11:21
общий
это ответ
Здравствуйте, ialmiev!

1) Сегменты А0000h и В0000h отданы видео-буферу. Видеокарта в режиме прямого доступа получает данные из буфера и отображает их на экране. Сегментный адрес видео-буфера определяется для каждого видео-режима(см. рис)

Но не все так просто, следующий код по разному работает в командной строке(CMD для WinXP+) и эмуляторе.
[code lang=asm]model tiny
.code
org 100h
begin: mov ax,0b800h
mov es,ax
xor di,di
mov bh,35h
mov bl,31h
call outMem
xor ax,ax
int 16h
mov ax,83h
int 10h
outMem: add di,100h
mov es:[di],bx
add bx,101h
ret
end begin[/code]

Причина проста, эмулятор копирует работу (comand.com для Win9x), в котором 3-й текстовый режим устанавливается по умолчанию, в командной строке он также как бы по умолчанию(CMD для WinXP+), но если вывод идет с помощью стандартных функций Dos / Bios, то запись в видео-буфер игнорируется и выводится с помощью WAPI прямо в видеокарту. Чтобы работала прямая запись в видео-буфер необходимо активировать 3-й режим принудительно(функция 0, прерывание 10h).

2) Запись ES : [ DI ] - означает что значение будет записано по адресу сегмент ES : значение регистра DI.

3-4) Код символа может быть любой, в пределах таблицы ASCII, атрибут тоже может быть любой, если он составлен по правилу:
бит 7 - мигание(обычно отключено);
биты 4-6 - цвет фона;
бит 3 - яркость цвета символа;
биты 0-2 - цвет символа.
Значения видны в таблице:


Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
09.10.2017, 12:51
общий
Адресаты:
В свое время велись разработки двоичной и троичной логики. Даже построили несколько машин "Сетунь". Решение применять двоичную логику было принято после долгих исследований и с учетом элементной базы того времени. Троичная логика на лампах реализовывалась с большим трудом. Двоичная логика была принята за базовую из-за простоты выполнения.
Во времена союза, считалось, что мы впереди планеты всей, выпускали ЭВМ-ы ламповые с ПЗУ на ферромагнитных кольцах, потом лампы меняли на транзисторы, , потом все меняли на ИС(интегральные схемы), БИСы(т.е. большие ИС) сейчас это все называют микросхемами.

Знаете чем отличается ИС от БИС, в первых реализовано какое-то функциональное устройство, у вторых, этих устройств больше двух, ну соответственно количество ножек у вторых больше ну и вес. На лекции как-то препод(П) нам все это рассказывал и когда он сказал у БИС аж, 48 ножек, из зала(З) прозвучало - и две ручки, П: а ручки зачем?
З: а переносить как будете?

По тем временам, современные микросхемы - супер-пупер СБИСы.

Честно говоря я как-то не задумывался над этим, в меня вбивали кучу данных, чтобы после выпуска я мог ремонтировать современную военную аппаратуру.

2)
Ну тогда начните с понимания работы диода и транзистора, именно на них строится работа ключей, повторителей, инверторов. На последних строятся триггера(бит), 8-мь триггеров(байт), куча триггеров(килобайты и т.д.). С помощью ключей выбирается отдельный байт и пересылается в такой же выбранный байт другого устройства, все это синхронизируется импульсами и так далее. На всем этом строится сумматоры, счетчики и другие более функциональные устройства, на которых потом собирается сама ЭВМ.
Тут описана работа процессора Z80 со схемотехникой, диаграммами, система команд и т.к, родоначальника х86. Взаимодействие ЦПУ и остального железа в журнале "Радио" за 86-ой год.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401339
51
09.10.2017, 23:34
общий
Адресаты:
Уважаемый Константин Николаевич,
здравствуйте,

1) спасибо большое за Ваши сообщения и ссылку на книгу. я немножко "поиграл" с видеорежимами (текст-фон) - для меня, новичка, это стало интересным занятием.
2) ну, хорошо, чтобы не останавливаться на достигнутом и не отвлекаться на другие темы - продолжу изучение книги О.А.Калашникова.
3) также вспомню вузовские курсы по физике полупроводников и по основам твердотельной электроники (диоды, транзисторы), также почитаю дополнительную литературу,
4) чтобы в голове все улеглось - новичкам необходимо изучать данные темы постепенно, с основ - не стесняться того, что многое (высшая математика и теоретическая физика) уже забыто - просто надо вспомнить, почитать книжки и лекции по разным темам,
5) где-то я читал, что выбор двоичной-троичной-четверичной логик был обоснован сначала теоретически, то есть с помощью вывода соответствующих формул - это происходило в США в начале 1930-х годов (я не помню автора(ов) и американские университеты, где этим занимались).

еще раз, спасибо.
Форма ответа