Другие языки программирования и технологии

Объясните пожалуйста следующие вещи в программировании

Здравствуйте. Скажите пожалуйста, когда человек нажимает на какую либо клавишу на клавиатуре, то это информация посылается в двоичном коде в виде нулей и единиц в процессор компьютера так. Далее, процессор начинает использовать АЛУ которое вычитывает это число, и переводит его в десятеричную. Но, я все же не пойму как мы видео на экране то что нажали на клавиатуре. Я так понимаю, что первый язык программирования был ассемблер, и он даже сейчас существует, по сколку изучая видео в интеренете, я понимаю что любой язык высокого уровня, переводит в низкий уровень в ассемблер, а затем он переводит в машинный код так?

Ну вот к примеру. Нажал я букву А на клаве, он в виде числа 00110011 отправился в процессор, затем он перевёлся в двоичную систему, а эту систему уже понял ассемблер, и вывел на экран? Я знаю что существует бинарное счисление кодов, и там в принципе написаны каждая буква и символ под каким кодом шифруется. Значит получаеться, что процессор отправляет все языку в десятичной системе так? Или как?
TE
Temirhan Esenali
126
эм... всё намного сложнее, чем ты тут понаписал...

и всё зависит от того, насколько глубоко в это всё ты хочешь залезть...

может оно тебе и не надо ?
З.
Зафар ...
93 157
Лучший ответ
Temirhan Esenali Я хочу узнать все языки программирования. И честно когда я смотрю разные видео и читаю книгу про ассемблер, вроде понимаю, но каждый раз углубляясь не пойму некоторой логики. Кто вообще создал бинарный код? Как вообще сделали так, что первые ЭВМ понимали эти коды? И вообще, Где можно посмотреть алфавит ассемблера? Он же язык, значит у него есть свой перевод с машинного в его?
Всё как минимум в десять раз сложнее. И процессор языку ничего не отправляет, и десятичная система используется только при выводе значков на монитор и вводе с клавиатуре специальными подпрограммами, встроенными в компилятор языка программирования. И все работает в машинном коде, ассемблер в основном только наглядное представление последовательностей двоичного машинного кода комбинациями символов, смысл которых понятнее человеку, процессору он совершенно не нужен.
При нажатии или отпускании клавиши встроенный в клавиатуру микропроцессор генерирует последовательности кодов (так называемых скан-кодов), разные для нажатия и отпускания (и никакого кода буквы, там есть, в числе прочего, только условный номер нажатой или отпущенной клавиши), которые пересылаются в порт ввода-вывода компьютера, у которого есть свой контроллер (фактически тоже микрокомпьютер), который сообщает базовой системе ввода-вывода (BIOS), что пришел сигнал с клавиатуры, та перерабатывает код и сигнализирует операционной системе, и дальше идет много ступеней обработки и переработки этого кода операционной системой и работающими в ней программами.
А первые языки программирования были не ассемблерами, а языками машинных команд процессора. процессора, программы в них записывались прямо в машинных кодах.
Сергей Шкунов
Сергей Шкунов
85 616
Temirhan Esenali Короче каждый свое пишет)) спасибо. Я так понял что мне и тут не кто не объяснит тольком
Всё не так. Возьми учебник по информатике.
Вон "Ivantrs" правильно написал - всё намного сложнее. Нажал на кнопочку "клавы" - вызвалось прерывание, которое обработало код клавиши или их комбинацию и запихнуло в стек клавиатуры... Дальше продолжать? )))
Да и не переводит процессор ничего в десятиричную систему исчисления. Всё внутри компа только в двоичных кодах. А на консоль выводится КАРТИНКА (цифры, буквы, точки изображения, звуки и т. д.) исключительно для нас, дураков, не умеющих видеть изящный двузначный код )))
Все намного тяжелее чем вы думаете.
1) когда человек нажимает на какую либо клавишу на клавиатуре, то...

В процессор поступает сигнал что на клавиатуре нажата клавиша, процессор прерывает выполнение текущей программы, сохраняет регистры и переходит в подрограмму обработки нажатой клавиши (так называемое прерывание. название говорит само за себя). В подпрограмме процессор наверняка сохраняет код нажатой клавиши в бУфер и возвращает управление прерваной программе. А сама програма может получить символы из буфера, если она в фокусе.

2) информация посылается в двоичном коде в виде нулей и единиц в процессор компьютера так

Да!

3) Далее, процессор начинает использовать АЛУ которое вычитывает это число, и переводит его в десятеричную

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

4) Но, я все же не пойму как мы видео на экране то что нажали на клавиатуре.

Если по нужному адресу записать байтик, то видеокарта на экран выведет точку. Расположение точки на экране будет зависеть только от того где байтики записали. Сейчас для цвета исполдьзуют 3 байта, но в видеокарте по некоторым соображениям 4 байта. Один байт не используется. Ну так вот записав байты по нужным адресам получим точки в нужных местах (то есть символ - это набор точек) А вот от того, какие значения запишем по этим адресам, будет зависеть цвет точки.

5) Я так понимаю, что первый язык программирования был ассемблер
Нет. Первым был машинный язык. Потом люди поняли что запоминать все эти числа (машинный язык по сути набор чисел) или держать памятку по поводу что число делает не выгодно и придумали ассемблер. По сути одна мнемоника языка ассемблера равна одной команде машиного языка.
Сергей Куреев
Сергей Куреев
15 408
Владимир Попов 4 байта это наверное для альфы?
Владимир Попов Почему 4 байта? так я и не понял
Владимир Попов Если положить что цвет будет задаваться по методолгии RGBA то диапазоны каждого будут от 0 до 255 итого по 1 байту для каждого. итого 4 байта... это с альфой
Это из той области, где никто ничего не знает))) в процессоре существуют сумматоры, конъюнкторы, дизъюнкторы и триггеры которые обрабатывают двоичные числа, по сути тем самым создавая логические связи которые в совокупности дают какое то конечный итог... смотреть на исполнение бинарного кода и понимать его невозможно находясь на вершине абстракции. Это почти тоже самое что и человек не в силах видеть в 3D или 4-ое измерение)))
Юрии Тусин
Юрии Тусин
10 755
Сергей Куреев Так для справки, конбюкции, дезъюкции, сложение умножение и т. п. операции как раз таки АЛУ и выполняет. Там у человека конечно каша написана, но все же слово АЛУ в процессоре присутствует, это отдельный блок множества блоков процессора (там еще есть кеш память, предсказатель переходов, сопроцессор, блок декодирования команд и т. д. и т. п.).
Temirhan Esenali Вот смотрите. Я знаю к примеру что такое бинарный код, и что он заложен в каждом процессоре. Что бы вы не нажали на клавиатуре, или на мышке, все это уже запргромированно в процессоре, ибо он уже за одну секунду считывает что вы ему послали, и выводит это на ваш экран. Вот тут как раз и Самое интересное, что я не могу понять! Если любая операционная система написана на каком то языке, то этот язык как то же нужно создать!

Похожие вопросы