Сериозна част
Както беше посочено в коментарите, вече не можете да заредите програма в паметта на съвременния компютър, като бъркате с превключватели, тя трябва да бъде в някаква форма на носител, в широк смисъл, така че фърмуерът да може да я зареди и изпълни.
Човек може да програмира фърмуер в ROM (или подобен) с програмист, това е възможно най-близко до записването на нули и единици в паметта на компютъра. Имайте предвид, че обикновено машинният код е написан в шестнадесетичен, а не в двоичен код.
В една модерна операционна система можете да пишете машинен код с всеки шестнадесетичен редактор, проблемът е, че двоичните файлове на програмата не съдържат само изпълним код. Те също така съдържат заглавки и много "мета" (да ги наречем така) данни. Така че ще трябва да изградите валидна структура с всички заглавки, секции и т.н.
Това не е невъзможно, всичко се свежда до някаква основна математика и добра справка, просто е много досадно.
Игрова част
Като игра, ако искате да усетите старата тръпка от писането на програми в двоичен код, можете да следвате предложението на Michael и да използвате програма за зареждане, която ви позволява да записвате числа в паметта.
Написах ви един за IA32 (вероятно вашата архитектура), трябва да използвате NASM, за да го сглобите и да запишете 512-байтовия изходен файл на всеки стартиращ носител (Google ще ви помогне). След това рестартирайте компютъра си.
Ето някои ограничения (функции?)
- Можете да използвате само 0, 1 и enter, всичко останало се игнорира.
- Не можете да коригирате грешки или да презапишете предишен написан машинен код.
- Веднага щом бъдат въведени 8 бита, един байт се записва в паметта.
- Байтовете се записват един след друг в реда, в който са събрани.
- Не можете да запишете повече от 3,5KiB данни, ако имате нужда от повече, първо трябва да напишете нова програма за запис в паметта и след това да я използвате.
- Ако натиснете enter, програмата ще изпълни машинния код, който сте въвели.
- Ако натиснете enter преди да сте завършили байт, вмъкнатите битове се отхвърлят.
Тук вмъквам машинен код за програма, която пише Здравей на екрана .
Ето кода
BITS 16
jmp 07c0h:WORD __START__
__START__:
mov ax, cs
mov ss, ax
xor sp, sp
push cs
pop ds
push 0b800h
pop es
mov di, 200h ;Write binary code from 7c0h:200h to 7c0h:ffffh, i.e. 3,5KiB
.screen_input:
mov ax, 03h
int 10h
xor si, si
.byte_input:
mov cx, 0800h
.bit_input:
xor ah, ah
int 16h
cmp al, 0dh
je .jump
cmp al, '0'
jb .bit_input
cmp al, '1'
ja .bit_input
mov ah, 0ch
mov WORD [es:si], ax
add si, 02h
shr al, 1
rcl cl, 1
dec ch
jnz .bit_input
mov BYTE [di], cl
inc di
add si, 90h
cmp si, 0fa0h
jae .screen_input
jmp .byte_input
.jump:
jmp 7c0h:200h
TIMES 505-($-__START__) db 0
dw 0aa55h
person
Community
schedule
24.06.2015
PDP-11
миникомпютър или подобен. Или може би микрокомпютърAltair 8800
или някой от неговите конкуренти, макар че това би ви върнало малко назад. По същия начин ръчното пробиване на перфокарта не е твърде трудно за система, способна да стартира по този начин, просто е ужасно досадно. - person doynax   schedule 24.06.2015