Да лаадно. Всё ровно то-же самое, только компьютерный язык заточен исключительно под работу с данными и выбора вариантов решений. Язык исключительно логики — если-то-иначе, повторить n раз, записать значение, прочитать значение, перейти к такому-то куску текста, сравнить A и B. Вот и готов минимальный словарь машинного кода или его отображения на человеческий (ассемблер). Машина мыслит ровно так как человек ибо язык машины построен на ровно тех-же принципах что и человеческая логика. Но есть нюансы. Например ИИ. Вот тут начинаются интересности ибо уже сейчас в некоторых применениях начинается технологическая сингулярность. И уже сейчас не знают как нейронка принимает именно те решения, которые принимает.
Тот же print "Hello world!" согласно вики обрабатывает некоторые сумрачные чисто машинные процессы.
BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Комментарии к программе
Данная программа работает при её размещении по смещению 10016. Отдельные инструкции выделены цветом:
BB 11 01, B9 0D 00, B4 0E, 8A 07 — команды присвоения значений регистрам.
43 — инкремент регистра BX.
CD 10, CD 20 — вызов программных прерываний 1016 и 2016.
E2 F9 — команда для организации цикла.
Малиновым показаны данные (строка «Hello, world!»).
Тот же код ассемблерными командами:
XXXX:0100 mov bx, 0111h ; поместить в bx смещение строки HW
XXXX:0103 mov cx, 000Dh ; поместить в cx длину строки HW
XXXX:0106 mov ah, 0Eh ; поместить в ah номер функции прерывания 10h
XXXX:0108 mov al, [bx] ; поместить в al значение ячейки памяти, адрес которой находится в bx
XXXX:010A inc bx ; перейти к следующему байту строки (увеличить смещение на 1)
XXXX:010B int 10h ; вызов прерывания 10h
XXXX:010D loop 0108 ; если cx≠0, то уменьшить cx на 1 и перейти по адресу 0108
XXXX:010F int 20h ; прерывание 20h: завершить программу
XXXX:0111 HW db 'Hello, World!' ; строка, которую требуется напечатать