ಅಸೆಂಬ್ಲಿ ಶಾಲೆ: ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅಭಿವೃದ್ಧಿ. ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್ ಹಾರಾಟ. ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಬರೆಯಲಾದ OS ಯಾವ ಸಾಮರ್ಥ್ಯ ಹೊಂದಿದೆ. ಅಸೆಂಬ್ಲಿ ಮತ್ತು ಕಂಪೈಲಿಂಗ್

ನಾನು ಇತ್ತೀಚೆಗೆ ಅಸೆಂಬ್ಲರ್ ಕಲಿಯಲು ನಿರ್ಧರಿಸಿದೆ, ಆದರೆ ಕೋಡ್‌ನ ಸಾಲುಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡಲು ನನಗೆ ಆಸಕ್ತಿ ಇರಲಿಲ್ಲ. ನಾನು ಅಸೆಂಬ್ಲರ್ ಅನ್ನು ಅಧ್ಯಯನ ಮಾಡುವಾಗ, ನಾನು ಕೆಲವು ವಿಷಯದ ಕ್ಷೇತ್ರವನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುತ್ತೇನೆ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ. ಹಾಗಾಗಿ ನನ್ನ ಆಯ್ಕೆಯು ಬೂಟ್‌ಲೋಡರ್ ಬರೆಯುವುದರ ಮೇಲೆ ಬಿದ್ದಿತು. ನನ್ನ ಸಂಶೋಧನೆಗಳ ಫಲಿತಾಂಶವು ಈ ಬ್ಲಾಗ್‌ನಲ್ಲಿದೆ.

ಅಭ್ಯಾಸದೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟ ಸಿದ್ಧಾಂತವನ್ನು ನಾನು ಪ್ರೀತಿಸುತ್ತೇನೆ ಎಂದು ನಾನು ಈಗಿನಿಂದಲೇ ಹೇಳಲು ಬಯಸುತ್ತೇನೆ, ಆದ್ದರಿಂದ ಪ್ರಾರಂಭಿಸೋಣ.

ಮೊದಲಿಗೆ ನಾನು ಸರಳವಾದದನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂದು ತೋರಿಸುತ್ತೇನೆ MBRಇದರಿಂದ ನಾವು ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಫಲಿತಾಂಶವನ್ನು ಆನಂದಿಸಬಹುದು. ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ನಾವು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗುತ್ತಿದ್ದಂತೆ, ನಾನು ಸೈದ್ಧಾಂತಿಕ ಮಾಹಿತಿಯನ್ನು ನೀಡುತ್ತೇನೆ.

ಮೊದಲಿಗೆ, USB ಫ್ಲಾಶ್ ಡ್ರೈವಿಗಾಗಿ ಬೂಟ್ಲೋಡರ್ ಮಾಡೋಣ!

ಗಮನ!!! ನಮ್ಮ ಮೊದಲ ಅಸೆಂಬ್ಲರ್ ಪ್ರೋಗ್ರಾಂ ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವಿಗಾಗಿ ಮತ್ತು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಅಥವಾ ಇತರ ಸಾಧನಗಳಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಚ್ಡಿಡಿ. ತರುವಾಯ, ಎಲ್ಲಾ ಉದಾಹರಣೆಗಳು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಲು, ವಿವಿಧ ಸಾಧನಗಳಲ್ಲಿ ಕೋಡ್ನ ಕಾರ್ಯಾಚರಣೆಯ ಬಗ್ಗೆ ನಾನು ಹಲವಾರು ಸ್ಪಷ್ಟೀಕರಣಗಳನ್ನು ನೀಡುತ್ತೇನೆ.

ನಾವು ಬರೆಯುತ್ತೇವೆ ಫಾಸ್ಮ್, ಲೋಡರ್‌ಗಳನ್ನು ಬರೆಯಲು ಇದು ಅತ್ಯುತ್ತಮ ಕಂಪೈಲರ್ ಎಂದು ಪರಿಗಣಿಸಲ್ಪಟ್ಟಿರುವುದರಿಂದ, ಅದು MBR Fasm ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಎರಡನೇ ಕಾರಣವೆಂದರೆ ಅದು ಫೈಲ್‌ಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡುವುದನ್ನು ತುಂಬಾ ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಯಾವುದೇ ನಿರ್ದೇಶನಗಳಿಲ್ಲ ಆಜ್ಞಾ ಸಾಲಿನಮತ್ತು ಇತ್ಯಾದಿ. ಅಸೆಂಬ್ಲರ್ ಅನ್ನು ಕಲಿಯುವುದರಿಂದ ಮತ್ತು ನಿಮ್ಮ ಗುರಿಗಳನ್ನು ಸಾಧಿಸುವುದರಿಂದ ನಿಮ್ಮನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿರುತ್ಸಾಹಗೊಳಿಸುವಂತಹ ಅಸಂಬದ್ಧತೆ. ಆದ್ದರಿಂದ, ಆರಂಭಿಕ ಹಂತದಲ್ಲಿ ನಮಗೆ ಎರಡು ಕಾರ್ಯಕ್ರಮಗಳು ಮತ್ತು ಕೆಲವು ಅಗತ್ಯವಿರುತ್ತದೆ ಅನಗತ್ಯಕನಿಷ್ಠ ಗಾತ್ರದ ಫ್ಲಾಶ್ ಡ್ರೈವ್. ನಾನು 1Gb ಅನ್ನು ಅಗೆದು ಹಾಕಿದೆ (ಇದು ತ್ವರಿತವಾಗಿ ಫಾರ್ಮ್ಯಾಟ್ ಆಗುತ್ತದೆ, ಮತ್ತು ಅದು ಕರುಣೆ ಅಲ್ಲ, ಏನಾದರೂ ಇದ್ದರೆ). ನಮ್ಮ ಬೂಟ್ಲೋಡರ್ ಕೆಲಸ ಮಾಡಿದ ನಂತರ, ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಇನ್ನು ಮುಂದೆ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ. ನನ್ನ ವಿಂಡೋಸ್ 7 ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಫಾರ್ಮಾಟ್ ಮಾಡಲು ನಿರಾಕರಿಸುತ್ತದೆ. ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಮತ್ತೆ ಜೀವಕ್ಕೆ ತರಲು ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ HP USB ಡಿಸ್ಕ್ ಸಂಗ್ರಹಣೆ ಫಾರ್ಮ್ಯಾಟ್ ಟೂಲ್ (HPUSBFW.EXE) ಅಥವಾ ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವ್‌ಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ಇತರ ಉಪಯುಕ್ತತೆಗಳು.

ನಾವು ಅವುಗಳನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ ಮತ್ತು ಅನುಗುಣವಾದ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗೆ ಅಥವಾ ನೀವು ಇಷ್ಟಪಡುವ ಸ್ಥಳದಲ್ಲಿ ಎಸೆಯುತ್ತೇವೆ.

ತಯಾರಿ ಪೂರ್ಣಗೊಂಡಿದೆ, ನಾವು ಕ್ರಮಕ್ಕೆ ಹೋಗೋಣ

Fasmw.exe ತೆರೆಯಿರಿ ಮತ್ತು ಕೆಳಗಿನವುಗಳನ್ನು ಅಲ್ಲಿ ಬರೆಯಿರಿ. ಫಲಿತಾಂಶವನ್ನು ನೋಡಲು ನಾವು ಕನಿಷ್ಟ ಕೋಡ್ ಅನ್ನು ಸ್ಕೆಚ್ ಮಾಡುತ್ತೇವೆ. ನಂತರ ನಾವು ಇಲ್ಲಿ ಬರೆದಿರುವುದನ್ನು ವಿಶ್ಲೇಷಿಸುತ್ತೇವೆ. ನಾನು ನನ್ನ ಕಾಮೆಂಟ್‌ಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ನೀಡುತ್ತೇನೆ.

FASM ಕೋಡ್: ============= boot.asm ===============

org 7C00h; ಈ ನಿರ್ದೇಶನವನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು ನಮ್ಮ ಪ್ರೋಗ್ರಾಂ ವಿಳಾಸಗಳನ್ನು ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ

ಬಳಕೆ16; ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಕೋಡ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ

cli ;ವಿಭಾಗದ ರೆಜಿಸ್ಟರ್‌ಗಳಲ್ಲಿ ವಿಳಾಸಗಳನ್ನು ಬದಲಾಯಿಸಲು ಅಡಚಣೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ

mov ಕೊಡಲಿ, 0

mov sp, 7C00h

sti ;ಅಡೆತಡೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ (ವಿಳಾಸಗಳನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ)

mov ax, 0003h; ಪರದೆಯ ಮೇಲೆ ರೇಖೆಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ವೀಡಿಯೊ ಮೋಡ್ ಅನ್ನು ಹೊಂದಿಸಿ

ಇಂಟ್ 10 ಗಂ

mov ax, 1301h ;ಸ್ಟ್ರಿಂಗ್‌ನ ನಿಜವಾದ ಔಟ್‌ಪುಟ್ 13h int 10h ಕಾರ್ಯವಾಗಿದೆ (ಹೆಚ್ಚಿನ ವಿವರಗಳು ನಂತರ)

mov bp, stroka ;ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರಿಂಗ್‌ನ ವಿಳಾಸ

mov dx, 0000h; ಲೈನ್ ಮತ್ತು ಕಾಲಮ್ ಇದರಲ್ಲಿ ಪಠ್ಯವನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ

mov cx, 15 ;ಔಟ್‌ಪುಟ್ ಸ್ಟ್ರಿಂಗ್‌ನ ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆ

mov bx, 000eh ;00-ವೀಡಿಯೊ ಪುಟ ಸಂಖ್ಯೆ (ಸ್ಪರ್ಶ ಮಾಡದಿರುವುದು ಉತ್ತಮ) 0e-ಅಕ್ಷರ ಗುಣಲಕ್ಷಣಗಳು (ಬಣ್ಣ, ಹಿನ್ನೆಲೆ)

ಇಂಟ್ 10 ಗಂ

jmp $;ಟ್ರೆಡ್ ವಾಟರ್ (ಈ ಹಂತದಲ್ಲಿ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಲೂಪ್ ಮಾಡುತ್ತದೆ)

ಸ್ಟ್ರಿಂಗ್ db "ಸರಿ, MBR ಲೋಡ್ ಆಗಿದೆ!"

ಬಾರಿ 510 - ($ - $$) db 0 ;ಹಿಂದಿನ ಬೈಟ್ ಮತ್ತು ಮುಂದಿನದ ನಡುವಿನ ಜಾಗವನ್ನು ಸೊನ್ನೆಗಳೊಂದಿಗೆ ತುಂಬುವುದು

db 0x55 ,0xAA ;ಕೊನೆಯ ಎರಡು ಬೈಟ್‌ಗಳು

ಈ ಕೋಡ್ ಅನ್ನು (Ctrl+F9) fasm"e ನಲ್ಲಿ ಕಂಪೈಲ್ ಮಾಡಿ ಮತ್ತು ಪರಿಣಾಮವಾಗಿ ಬೈನರಿ ಫೈಲ್ ಅನ್ನು boot.bin ಎಂದು ಕೆಲವು ಅನುಕೂಲಕರ ಸ್ಥಳದಲ್ಲಿ ಉಳಿಸಿ. ನಮ್ಮ ಬೈನರಿಯನ್ನು ಫ್ಲಾಶ್ ಡ್ರೈವ್‌ಗೆ ಬರೆಯುವ ಮೊದಲು, ಸ್ವಲ್ಪ ಸಿದ್ಧಾಂತ.

ನೀವು ಕಂಪ್ಯೂಟರ್‌ಗೆ ಫ್ಲ್ಯಾಷ್ ಡ್ರೈವ್ ಅನ್ನು ಪ್ಲಗ್ ಮಾಡಿದಾಗ, ನೀವು ಫ್ಲ್ಯಾಷ್ ಡ್ರೈವಿನಿಂದ ಬೂಟ್ ಮಾಡಲು ಬಯಸುವ BIOS ಸಿಸ್ಟಮ್‌ಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ, ಆದ್ದರಿಂದ BIOS ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನೀವು ಬೂಟ್ ಮಾಡಲು ಬಯಸುವ ಸಾಧನವನ್ನು ನೀವು ಆರಿಸಬೇಕಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ ನಾವು ಆರಿಸಿದ್ದೇವೆ USB ನಿಂದ ಬೂಟ್ ಮಾಡಲು (ಇದನ್ನು ನೀವೇ ಹೇಗೆ ಮಾಡಬೇಕೆಂದು ನೀವು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಏಕೆಂದರೆ BIOS ಇಂಟರ್ಫೇಸ್ ವಿಭಿನ್ನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಹೊಂದಿದೆ... ನೀವು ಅದನ್ನು ಗೂಗಲ್ ಮಾಡಬಹುದು BIOS ಸೆಟ್ಟಿಂಗ್‌ಗಳುನಿನಗಾಗಿ ಮದರ್ಬೋರ್ಡ್. ನಿಯಮದಂತೆ, ಅಲ್ಲಿ ಸಂಕೀರ್ಣವಾದ ಏನೂ ಇಲ್ಲ).

ಈಗ ನೀವು ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವಿನಿಂದ ಬೂಟ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಿ ಎಂದು BIOS ಗೆ ತಿಳಿದಿದೆ, ಅದು ಫ್ಲಾಶ್ ಡ್ರೈವಿನಲ್ಲಿ ಸೆಕ್ಟರ್ ಸೊನ್ನೆಯನ್ನು ಬೂಟ್ ಮಾಡಬಹುದೆಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಇದನ್ನು ಮಾಡಲು, BIOS ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ ಸೆಕ್ಟರ್ ಸೊನ್ನೆಯ ಕೊನೆಯ ಎರಡು ಬೈಟ್‌ಗಳುಮತ್ತು, ಅವರು 0x55 0xAA ಗೆ ಸಮನಾಗಿದ್ದರೆ, ಆಗ ಮಾತ್ರ ಅದನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ರಾಮ್. ಇಲ್ಲದಿದ್ದರೆ, BIOS ನಿಮ್ಮ ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಸರಳವಾಗಿ ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ. ಈ ಎರಡು ಮ್ಯಾಜಿಕ್ ಬೈಟ್‌ಗಳನ್ನು ಕಂಡುಕೊಂಡ ನಂತರ, ಇದು ಸೆಕ್ಟರ್ ಶೂನ್ಯವನ್ನು 0000: 7С00h ವಿಳಾಸದಲ್ಲಿ RAM ಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಫ್ಲ್ಯಾಷ್ ಡ್ರೈವ್ ಅನ್ನು ಮರೆತು ಈ ವಿಳಾಸಕ್ಕೆ ನಿಯಂತ್ರಣವನ್ನು ವರ್ಗಾಯಿಸುತ್ತದೆ. ಈಗ ಕಂಪ್ಯೂಟರ್‌ನ ಮೇಲಿನ ಎಲ್ಲಾ ಶಕ್ತಿಯು ನಿಮ್ಮ ಬೂಟ್‌ಲೋಡರ್‌ಗೆ ಸೇರಿದೆ ಮತ್ತು ಅದು RAM ನಿಂದ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವಿನಿಂದ ಹೆಚ್ಚುವರಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಬಹುದು. DMDE ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಈ ವಲಯವು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಎಂಬುದನ್ನು ಈಗ ನಾವು ನೋಡುತ್ತೇವೆ.

1.ನಿಮ್ಮ ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಕಂಪ್ಯೂಟರ್‌ಗೆ ಸೇರಿಸಿ ಮತ್ತು ಅದು ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.

2.DMDE ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ತೆರೆಯಿರಿ. ಚಿತ್ರದಲ್ಲಿನ ಎಲ್ಲಾ ಮುಂದಿನ ಹಂತಗಳನ್ನು ಓದಿ:

ಈ ಕಾಮಿಕ್ ಅನ್ನು ವೀಕ್ಷಿಸಿದ ನಂತರ, ನಿಮ್ಮ MBR ಅನ್ನು ಫ್ಲಾಶ್ ಡ್ರೈವ್‌ಗೆ ಲೋಡ್ ಮಾಡುವ ಕೌಶಲ್ಯವನ್ನು ನೀವು ಹೊಂದಿರುತ್ತೀರಿ. ಮತ್ತು ನಮ್ಮ ಲೋಡರ್‌ನ ಬಹುನಿರೀಕ್ಷಿತ ಫಲಿತಾಂಶವು ಹೀಗಿದೆ:


ಮೂಲಕ, ನಾವು ಕನಿಷ್ಟ ಬೂಟ್ಲೋಡರ್ ಕೋಡ್ ಬಗ್ಗೆ ಮಾತನಾಡಿದರೆ, ಅದು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

ಆರ್ಗ್ 7C00h
jmp$
ಡಿಬಿ 508 ಡಪ್ (0)
db 0x55.0xAA

ಅಂತಹ ಬೂಟ್‌ಲೋಡರ್, ನಿಯಂತ್ರಣವನ್ನು ಪಡೆದ ನಂತರ, ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸರಳವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸುತ್ತದೆ, ಒಂದು ಅರ್ಥಹೀನ jmp $ ಆಜ್ಞೆಯನ್ನು ಲೂಪ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ನಾನು ಅವಳನ್ನು ತುಳಿಯುವ ನೀರು ಎಂದು ಕರೆಯುತ್ತೇನೆ.

ನಾನು YouTube ನಲ್ಲಿ ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದಾದ ವೀಡಿಯೊವನ್ನು ಪೋಸ್ಟ್ ಮಾಡಿದ್ದೇನೆ:

ಅಂತಿಮವಾಗಿ, ಬೂಟ್ಲೋಡರ್ ಬಗ್ಗೆ ಕೆಲವು ಸಂಕ್ಷಿಪ್ತ ಸಂಗತಿಗಳು:

1. ಬೂಟ್‌ಲೋಡರ್, ಬೂಟ್‌ಲೋಡರ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ, ಇದನ್ನು MBR ಎಂದೂ ಕರೆಯುತ್ತಾರೆ, ಇದು 512 ಬೈಟ್‌ಗಳ ಗಾತ್ರವನ್ನು ಹೊಂದಿದೆ. ಐತಿಹಾಸಿಕವಾಗಿ,
ಹಳೆಯ ಮಾಧ್ಯಮ ಮತ್ತು ಸಾಧನಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಈ ಸ್ಥಿತಿಯನ್ನು ಪೂರೈಸಬೇಕು.
2. ಬೂಟ್ಲೋಡರ್ ಯಾವಾಗಲೂ ಫ್ಲ್ಯಾಶ್ ಡ್ರೈವ್, ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ನ ಶೂನ್ಯ ವಲಯದಲ್ಲಿದೆ, ಹಾರ್ಡ್ ಡ್ರೈವ್, DMDE ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಸಾಧನಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಇತರ ಹೆಕ್ಸ್ ಸಂಪಾದಕರ ದೃಷ್ಟಿಕೋನದಿಂದ. ಪಟ್ಟಿ ಮಾಡಲಾದ ಸಾಧನಗಳಲ್ಲಿ ಒಂದಕ್ಕೆ ಬೈನರಿ (ನಮ್ಮ boot.bin) ಅನ್ನು ಲೋಡ್ ಮಾಡಲು, ನಾವು ಅವರ ಆಂತರಿಕ ಭೌತಿಕ ರಚನೆಯ ಬಗ್ಗೆ ಯೋಚಿಸಬೇಕಾಗಿಲ್ಲ. DMDE ಪ್ರೋಗ್ರಾಂ ಈ ಸಾಧನಗಳಲ್ಲಿನ ಸೆಕ್ಟರ್‌ಗಳನ್ನು ಹೇಗೆ ಓದುವುದು ಎಂದು ಸರಳವಾಗಿ ತಿಳಿದಿದೆ ಮತ್ತು ಅವುಗಳನ್ನು LBA ಮೋಡ್‌ನಲ್ಲಿ ಪ್ರದರ್ಶಿಸುತ್ತದೆ (ಸರಳವಾಗಿ ಅವುಗಳನ್ನು 0 ರಿಂದ ಕೊನೆಯ ಸೆಕ್ಟರ್‌ಗೆ ಸಂಖ್ಯೆಗಳು). ನೀವು LBA ಬಗ್ಗೆ ಓದಬಹುದು
3. ಬೂಟ್‌ಲೋಡರ್ ಯಾವಾಗಲೂ 0x55 0xAA ಎರಡು ಬೈಟ್‌ಗಳೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳಬೇಕು.
4. ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ಯಾವಾಗಲೂ 0000: 7С00h ವಿಳಾಸದಲ್ಲಿ ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ.
5. ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಬೂಟ್ಲೋಡರ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ.


ಮೂಲ: AsmSchool: ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮಾಡಿ
ಲೇಖಕ: ಮೈಕ್ ಸೌಂಡರ್ಸ್
ಪ್ರಕಟಿಸಿದ ದಿನಾಂಕ: ಏಪ್ರಿಲ್ 15, 2016
ಅನುವಾದ: ಎ. ಪ್ಯಾನಿನ್
ಅನುವಾದ ದಿನಾಂಕ: ಏಪ್ರಿಲ್ 16, 2016

ಭಾಗ 4: ಈ ಸರಣಿಯಲ್ಲಿನ ಹಿಂದಿನ ಲೇಖನಗಳನ್ನು ಓದುವುದರಿಂದ ನೀವು ಗಳಿಸಿದ ಕೌಶಲ್ಯಗಳೊಂದಿಗೆ, ನೀವು ನಿಮ್ಮ ಸ್ವಂತ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು!

ಇದು ಯಾವುದಕ್ಕಾಗಿ?

  • ಕಂಪೈಲರ್‌ಗಳು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು.
  • CPU ಸೂಚನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು.
  • ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು.

ಹಲವಾರು ತಿಂಗಳುಗಳ ಅವಧಿಯಲ್ಲಿ, ನಾವು ಕಠಿಣ ಹಾದಿಯಲ್ಲಿ ಸಾಗಿದ್ದೇವೆ, ಅದು ಅಭಿವೃದ್ಧಿಯೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಯಿತು ಸರಳ ಕಾರ್ಯಕ್ರಮಗಳು Linux ಗಾಗಿ ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಇಲ್ಲದೆ ವೈಯಕ್ತಿಕ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಸ್ವಯಂ-ಒಳಗೊಂಡಿರುವ ಕೋಡ್‌ನ ಅಭಿವೃದ್ಧಿಯೊಂದಿಗೆ ಸರಣಿಯ ಕೊನೆಯ ಲೇಖನದಲ್ಲಿ ಕೊನೆಗೊಂಡಿತು. ಸರಿ, ಈಗ ನಾವು ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ಒಟ್ಟಿಗೆ ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ನಿಜವಾದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ಹೌದು, ನಾವು ಲಿನಸ್ ಟೊರ್ವಾಲ್ಡ್ಸ್ ಅವರ ಹೆಜ್ಜೆಗಳನ್ನು ಅನುಸರಿಸುತ್ತೇವೆ, ಆದರೆ ಮೊದಲು ನಾವು ಈ ಕೆಳಗಿನ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಬೇಕಾಗಿದೆ: "ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಎಂದರೇನು? ಅದರ ಕಾರ್ಯಗಳಲ್ಲಿ ಯಾವುದನ್ನು ನಾವು ಮರುಸೃಷ್ಟಿಸಬೇಕು?"

ಈ ಲೇಖನದಲ್ಲಿ, ನಾವು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನ ಮೂಲಭೂತ ಕಾರ್ಯಗಳ ಮೇಲೆ ಮಾತ್ರ ಕೇಂದ್ರೀಕರಿಸುತ್ತೇವೆ: ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು. ಸಂಕೀರ್ಣ ಕಾರ್ಯಾಚರಣಾ ವ್ಯವಸ್ಥೆಗಳು ವರ್ಚುವಲ್ ಮೆಮೊರಿ ನಿರ್ವಹಣೆ ಮತ್ತು ಸಂಸ್ಕರಣೆಯಂತಹ ಹೆಚ್ಚಿನ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ ನೆಟ್ವರ್ಕ್ ಪ್ಯಾಕೆಟ್ಗಳು, ಆದರೆ ಅವರ ಸರಿಯಾದ ಅನುಷ್ಠಾನಕ್ಕೆ ವರ್ಷಗಳ ನಿರಂತರ ಕೆಲಸದ ಅಗತ್ಯವಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಈ ಲೇಖನದಲ್ಲಿ ನಾವು ಯಾವುದೇ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನಲ್ಲಿರುವ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಮಾತ್ರ ಪರಿಗಣಿಸುತ್ತೇವೆ. ಕಳೆದ ತಿಂಗಳು ನಾವು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ (ಅದರ ಮೊದಲ ವಲಯ) 512-ಬೈಟ್ ಸೆಕ್ಟರ್‌ಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಣ್ಣ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ ಮತ್ತು ಈಗ ಡಿಸ್ಕ್‌ನಿಂದ ಹೆಚ್ಚುವರಿ ಡೇಟಾವನ್ನು ಲೋಡ್ ಮಾಡುವ ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲು ನಾವು ಅದನ್ನು ಸ್ವಲ್ಪ ಮಾರ್ಪಡಿಸುತ್ತೇವೆ.

ಬೂಟ್ ಲೋಡರ್ ಅಭಿವೃದ್ಧಿ

ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್‌ನ ಮೊದಲ 512-ಬೈಟ್ ಸೆಕ್ಟರ್‌ಗೆ ಹೊಂದಿಸಲು ನಾವು ಸಾಧ್ಯವಾದಷ್ಟು ಕಡಿಮೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಬಹುದು, ಅದು BIOS ನಿಂದ ಲೋಡ್ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ ನಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಯಾವುದೇ ಆಸಕ್ತಿದಾಯಕ ಕಾರ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು. ಆದ್ದರಿಂದ, ಸರಳ ಸಿಸ್ಟಮ್ ಬೂಟ್ ಲೋಡರ್‌ನ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಇರಿಸಲು ನಾವು ಈ 512 ಬೈಟ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇವೆ, ಇದು OS ಕರ್ನಲ್ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು RAM ಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. (ಇದರ ನಂತರ, ನಾವು OS ಕರ್ನಲ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತೇವೆ, ಅದು ಡಿಸ್ಕ್ನಿಂದ ಇತರ ಪ್ರೋಗ್ರಾಂಗಳ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ನಾವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಈ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ.)

ಈ ಲೇಖನದಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಉದಾಹರಣೆಗಳಿಗಾಗಿ ನೀವು ಮೂಲ ಕೋಡ್ ಅನ್ನು www.linuxvoice.com/code/lv015/asmschool.zip ನಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು. ಮತ್ತು ಇದು boot.asm ಎಂಬ ಫೈಲ್‌ನಿಂದ ನಮ್ಮ ಸಿಸ್ಟಮ್ ಬೂಟ್ ಲೋಡರ್‌ನ ಕೋಡ್ ಆಗಿದೆ:

BITS 16 jmp ಕಿರು ಆರಂಭ; ಲೇಬಲ್‌ಗೆ ಹೋಗು, ಡಿಸ್ಕ್ ವಿವರಣೆಯನ್ನು ಬಿಟ್ಟುಬಿಡುವುದು ; ಡಿಸ್ಕ್ ವಿವರಣೆಯ ಮೊದಲು ಸೇರ್ಪಡೆ "bpb.asm" ಪ್ರಾರಂಭವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: mov ax, 07C0h ; ಲೋಡ್ ವಿಳಾಸ mov ds, ಕೊಡಲಿ ; ಡೇಟಾ ವಿಭಾಗ mov ax, 9000h ; ಸ್ಟಾಕ್ ತಯಾರಿ mov ss, ax mov sp, 0FFFFh ; ಸ್ಟಾಕ್ ಕೆಳಗೆ ಬೆಳೆಯುತ್ತದೆ! cld ; ದಿಕ್ಕಿನ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ mov si, kern_filename ಕರೆ load_file jmp 2000h:0000h ; kern_filename db "MYKERNELBIN" ಫೈಲ್‌ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ OS ಕರ್ನಲ್ ಬೈನರಿ ಕೋಡ್‌ಗೆ ಪರಿವರ್ತನೆ %include "disk.asm" ಬಾರಿ 510-($-$$) db 0 ; 510 ಬೈಟ್‌ಗಳವರೆಗೆ ಸೊನ್ನೆಗಳೊಂದಿಗೆ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಪ್ಯಾಡಿಂಗ್ ಮಾಡುವುದು dw 0AA55h ; ಬೂಟ್ ಲೋಡರ್ ಬೈನರಿ ಎಂಡ್ ಮಾರ್ಕರ್ ಬಫರ್: ; ಡಿಸ್ಕ್ ವಿಷಯಗಳಿಗಾಗಿ ಬಫರ್ ಪ್ರಾರಂಭ

ಈ ಕೋಡ್‌ನಲ್ಲಿ, ಮೊದಲ CPU ಸೂಚನೆಯು jmp ಸೂಚನೆಯಾಗಿದೆ, ಇದು BITS ನಿರ್ದೇಶನದ ನಂತರ ಇದೆ, ಇದು NASM ಅಸೆಂಬ್ಲರ್‌ಗೆ 16-ಬಿಟ್ ಮೋಡ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ ಎಂದು ಹೇಳುತ್ತದೆ. ಸರಣಿಯಲ್ಲಿನ ಹಿಂದಿನ ಲೇಖನದಿಂದ ನೀವು ಬಹುಶಃ ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವಂತೆ, ಡಿಸ್ಕ್ನಿಂದ BIOS ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ 512-ಬೈಟ್ ಬೈನರಿ ಕೋಡ್ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಮೊದಲಿನಿಂದಲೂ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಆದರೆ ವಿಶೇಷವಾದ ಡೇಟಾವನ್ನು ಬಿಟ್ಟುಬಿಡಲು ನಾವು ಲೇಬಲ್ಗೆ ಹೋಗಬೇಕಾಗುತ್ತದೆ. ನಿಸ್ಸಂಶಯವಾಗಿ, ಕಳೆದ ತಿಂಗಳು ನಾವು ಡಿಸ್ಕ್ನ ಪ್ರಾರಂಭಕ್ಕೆ ಕೋಡ್ ಅನ್ನು ಬರೆದಿದ್ದೇವೆ (ಡಿಡಿ ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸಿ) ಮತ್ತು ಉಳಿದ ಡಿಸ್ಕ್ ಜಾಗವನ್ನು ಖಾಲಿ ಬಿಟ್ಟಿದ್ದೇವೆ.

ಈಗ ನಾವು ಸೂಕ್ತವಾದ MS-DOS ಫೈಲ್ ಸಿಸ್ಟಮ್ (FAT12) ನೊಂದಿಗೆ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಅನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ಈ ಫೈಲ್ ಸಿಸ್ಟಮ್ನೊಂದಿಗೆ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಸೆಕ್ಟರ್ನ ಪ್ರಾರಂಭದ ಬಳಿ ವಿಶೇಷ ಡೇಟಾದ ಸೆಟ್ ಅನ್ನು ಸೇರಿಸಬೇಕಾಗಿದೆ. ಈ ಸೆಟ್ ಅನ್ನು BIOS ಪ್ಯಾರಾಮೀಟರ್ ಬ್ಲಾಕ್ (BPB) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಡಿಸ್ಕ್ ಲೇಬಲ್, ಸೆಕ್ಟರ್‌ಗಳ ಸಂಖ್ಯೆ ಮತ್ತು ಮುಂತಾದ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಈ ಹಂತದಲ್ಲಿ ಇದು ನಮಗೆ ಆಸಕ್ತಿಯನ್ನುಂಟುಮಾಡಬಾರದು, ಏಕೆಂದರೆ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಲೇಖನಗಳ ಸರಣಿಗಳನ್ನು ಅಂತಹ ವಿಷಯಗಳಿಗೆ ಮೀಸಲಿಡಬಹುದು, ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಸೂಚನೆಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು bpb.asm ಎಂಬ ಪ್ರತ್ಯೇಕ ಮೂಲ ಕೋಡ್ ಫೈಲ್‌ನಲ್ಲಿ ಇರಿಸಿದ್ದೇವೆ.

ಮೇಲಿನದನ್ನು ಆಧರಿಸಿ, ನಮ್ಮ ಕೋಡ್‌ನಿಂದ ಈ ನಿರ್ದೇಶನವು ಬಹಳ ಮುಖ್ಯವಾಗಿದೆ:

%"bpb.asm" ಸೇರಿಸಿ

ಇದು NASM ನಿರ್ದೇಶನವಾಗಿದ್ದು, ಅಸೆಂಬ್ಲಿ ಸಮಯದಲ್ಲಿ ಪ್ರಸ್ತುತ ಮೂಲ ಫೈಲ್‌ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮೂಲ ಫೈಲ್‌ನ ವಿಷಯಗಳನ್ನು ಸೇರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ರೀತಿಯಾಗಿ ನಾವು BIOS ಪ್ಯಾರಾಮೀಟರ್ ಬ್ಲಾಕ್ನ ಅನುಷ್ಠಾನದ ಎಲ್ಲಾ ವಿವರಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಫೈಲ್ನಲ್ಲಿ ಇರಿಸುವ ಮೂಲಕ ನಮ್ಮ ಬೂಟ್ಲೋಡರ್ ಕೋಡ್ ಅನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಚಿಕ್ಕದಾಗಿ ಮತ್ತು ಅರ್ಥವಾಗುವಂತೆ ಮಾಡಬಹುದು. ಸೆಕ್ಟರ್ ಪ್ರಾರಂಭವಾದ ನಂತರ BIOS ಪ್ಯಾರಾಮೀಟರ್ ಬ್ಲಾಕ್ ಅನ್ನು ಮೂರು ಬೈಟ್‌ಗಳನ್ನು ಹೊಂದಿರಬೇಕು ಮತ್ತು jmp ಸೂಚನೆಯು ಕೇವಲ ಎರಡು ಬೈಟ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವುದರಿಂದ, ನಾವು ನೊಪ್ ಸೂಚನೆಯನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ (ಅದರ ಹೆಸರು "ಕಾರ್ಯಾಚರಣೆ ಇಲ್ಲ" ಎಂದು ಸೂಚಿಸುತ್ತದೆ - ಇದು ಸೂಚನೆಯಾಗಿದೆ ಉಳಿದಿರುವ ಬೈಟ್ ಅನ್ನು ತುಂಬಲು CPU ಚಕ್ರಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡುವುದನ್ನು ಬಿಟ್ಟು ಬೇರೇನೂ ಇಲ್ಲ.

ಸ್ಟಾಕ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು

ಮುಂದೆ ನಾವು ರೆಜಿಸ್ಟರ್‌ಗಳು ಮತ್ತು ಸ್ಟಾಕ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸಲು ಕಳೆದ ಲೇಖನದಲ್ಲಿ ಚರ್ಚಿಸಿದಂತೆಯೇ ಸೂಚನೆಗಳನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ, ಹಾಗೆಯೇ ಕೆಲವು ಸೂಚನೆಗಳಿಗಾಗಿ ದಿಕ್ಕಿನ ಧ್ವಜವನ್ನು ಹೊಂದಿಸಲು ನಮಗೆ ಅನುಮತಿಸುವ cld ("ಸ್ಪಷ್ಟ ನಿರ್ದೇಶನ") ಸೂಚನೆಯನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. lodsb ಸೂಚನೆಯಂತೆ, ಇದು ಕಾರ್ಯಗತಗೊಳಿಸಿದಾಗ, SI ರಿಜಿಸ್ಟರ್‌ನಲ್ಲಿ ಮೌಲ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಬದಲು ಹೆಚ್ಚಿಸುತ್ತದೆ.

ಅದರ ನಂತರ, ನಾವು ಸ್ಟ್ರಿಂಗ್‌ನ ವಿಳಾಸವನ್ನು SI ರಿಜಿಸ್ಟರ್‌ಗೆ ಹಾಕುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ load_file ಕಾರ್ಯವನ್ನು ಕರೆಯುತ್ತೇವೆ. ಆದರೆ ಒಂದು ನಿಮಿಷ ಅದರ ಬಗ್ಗೆ ಯೋಚಿಸಿ - ನಾವು ಇನ್ನೂ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿಲ್ಲ! ಹೌದು, ಇದು ನಿಜ, ಆದರೆ ಅದರ ಅನುಷ್ಠಾನವನ್ನು disk.asm ಎಂದು ನಾವು ಸೇರಿಸಿದ ಇನ್ನೊಂದು ಮೂಲ ಕೋಡ್ ಫೈಲ್‌ನಲ್ಲಿ ಕಾಣಬಹುದು.

MS-DOS ನಲ್ಲಿ ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾದ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್‌ಗಳಲ್ಲಿ ಬಳಸಲಾಗುವ FAT12 ಫೈಲ್ ಸಿಸ್ಟಮ್ ಲಭ್ಯವಿರುವ ಸರಳವಾಗಿದೆ. ಕಡತ ವ್ಯವಸ್ಥೆಗಳು, ಆದರೆ ಅದರ ವಿಷಯದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಹ ಗಣನೀಯ ಪ್ರಮಾಣದ ಕೋಡ್ ಅಗತ್ಯವಿರುತ್ತದೆ. ಲೋಡ್_ಫೈಲ್ ಸಬ್‌ರುಟೀನ್ ಸುಮಾರು 200 ಸಾಲುಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಈ ಲೇಖನದಲ್ಲಿ ತೋರಿಸಲಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ನಾವು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪರಿಗಣಿಸುತ್ತಿದ್ದೇವೆ, ನಿರ್ದಿಷ್ಟ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ಗೆ ಡ್ರೈವರ್ ಅಲ್ಲ, ಆದ್ದರಿಂದ ಜಾಗವನ್ನು ವ್ಯರ್ಥ ಮಾಡುವುದು ತುಂಬಾ ಬುದ್ಧಿವಂತವಲ್ಲ. ಈ ರೀತಿಯಲ್ಲಿ ಪುಟಗಳನ್ನು ಲಾಗ್ ಮಾಡಿ. ಸಾಮಾನ್ಯವಾಗಿ, ನಾವು ಪ್ರಸ್ತುತ ಮೂಲ ಕೋಡ್ ಫೈಲ್‌ನ ಅಂತ್ಯದ ಮೊದಲು disk.asm ಮೂಲ ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ಸೇರಿಸಿದ್ದೇವೆ ಮತ್ತು ಅದರ ಬಗ್ಗೆ ಮರೆತುಬಿಡಬಹುದು. (ನೀವು ಇನ್ನೂ FAT12 ಫೈಲ್ ಸಿಸ್ಟಮ್ನ ರಚನೆಯಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದರೆ, ನೀವು http://tinyurl.com/fat12spec ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಅವಲೋಕನವನ್ನು ಓದಬಹುದು, ತದನಂತರ disk.asm ಮೂಲ ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ನೋಡಿ - ಅದರಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಕೋಡ್ ಚೆನ್ನಾಗಿ ಕಾಮೆಂಟ್ ಮಾಡಿದ್ದಾರೆ.)

ಎರಡೂ ಸಂದರ್ಭಗಳಲ್ಲಿ, load_file ದಿನಚರಿಯು SI ರಿಜಿಸ್ಟರ್‌ನಲ್ಲಿ ಹೆಸರಿಸಲಾದ ಫೈಲ್‌ನಿಂದ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಆಫ್‌ಸೆಟ್ 0 ನಲ್ಲಿ ವಿಭಾಗ 2000 ಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಅದರ ನಂತರ ನಾವು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅದರ ಪ್ರಾರಂಭಕ್ಕೆ ಹೋಗುತ್ತೇವೆ. ಮತ್ತು ಅದು ಅಷ್ಟೆ - ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಸಿಸ್ಟಮ್ ಬೂಟ್ಲೋಡರ್ ತನ್ನ ಕಾರ್ಯವನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದೆ!

ನಮ್ಮ ಕೋಡ್ MYKERNELBIN ಬದಲಿಗೆ MYKERNELBIN ಅನ್ನು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಫೈಲ್ ಹೆಸರಾಗಿ ಬಳಸುವುದನ್ನು ನೀವು ಗಮನಿಸಿರಬಹುದು, ಇದು DOS ನಲ್ಲಿ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್‌ಗಳಲ್ಲಿ ಬಳಸಲಾಗುವ 8+3 ಹೆಸರಿಸುವ ಯೋಜನೆಗೆ ಚೆನ್ನಾಗಿ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, FAT12 ಫೈಲ್ ಸಿಸ್ಟಮ್ ಫೈಲ್ ಹೆಸರುಗಳ ಆಂತರಿಕ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಡಾಟ್ ಅಕ್ಷರವನ್ನು ನೋಡಲು ಮತ್ತು ಫೈಲ್ ಹೆಸರನ್ನು ಪರಿವರ್ತಿಸಲು ಕಾರ್ಯವಿಧಾನವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಮ್ಮ load_file ದಿನಚರಿ ಅಗತ್ಯವಿಲ್ಲ ಎಂದು ಖಾತರಿಪಡಿಸುವ ಫೈಲ್ ಹೆಸರನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಜಾಗವನ್ನು ಉಳಿಸುತ್ತೇವೆ. ಫೈಲ್ ಸಿಸ್ಟಮ್ನ ಆಂತರಿಕ ಪ್ರಾತಿನಿಧ್ಯ.

disk.asm ಮೂಲ ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ನಿರ್ದೇಶನದೊಂದಿಗೆ ಸಾಲಿನ ನಂತರ, ಸಿಸ್ಟಮ್ ಬೂಟ್ ಲೋಡರ್‌ನ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಸೊನ್ನೆಗಳೊಂದಿಗೆ 512 ಬೈಟ್‌ಗಳವರೆಗೆ ಪ್ಯಾಡ್ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಅದರ ಬೈನರಿ ಕೋಡ್‌ನ ಅಂತಿಮ ಚಿಹ್ನೆಯನ್ನು ಸೇರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ (ಇದನ್ನು ಚರ್ಚಿಸಲಾಗಿದೆ ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ). ಅಂತಿಮವಾಗಿ, ಕೋಡ್‌ನ ಕೊನೆಯಲ್ಲಿ "ಬಫರ್" ಲೇಬಲ್ ಇದೆ, ಇದನ್ನು ಲೋಡ್_ಫೈಲ್ ವಾಡಿಕೆಯ ಮೂಲಕ ಬಳಸಲಾಗುತ್ತದೆ. ಮೂಲಭೂತವಾಗಿ, ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಫೈಲ್‌ಗಾಗಿ ಹುಡುಕುತ್ತಿರುವಾಗ ಕೆಲವು ಮಧ್ಯಂತರ ಕೆಲಸವನ್ನು ಮಾಡಲು load_file ವಾಡಿಕೆಯ RAM ನಲ್ಲಿ ಉಚಿತ ಸ್ಥಳಾವಕಾಶದ ಅಗತ್ಯವಿದೆ ಮತ್ತು ಬೂಟ್ ಲೋಡರ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿದ ನಂತರ ನಾವು ಸಾಕಷ್ಟು ಮುಕ್ತ ಸ್ಥಳವನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಆದ್ದರಿಂದ ನಾವು ಬಫರ್ ಅನ್ನು ಇಲ್ಲಿ ಇರಿಸಿದ್ದೇವೆ.

ಸಿಸ್ಟಮ್ ಬೂಟ್ ಲೋಡರ್ ಅನ್ನು ಜೋಡಿಸಲು, ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:

Nasm -f bin -o boot.bin boot.asm

ಈಗ ನಾವು MS-DOS ಸ್ವರೂಪದಲ್ಲಿ ವರ್ಚುವಲ್ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಚಿತ್ರವನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ ಮತ್ತು ಕೆಳಗಿನ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಮ್ಮ ಬೂಟ್‌ಲೋಡರ್ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಅದರ ಮೊದಲ 512 ಬೈಟ್‌ಗಳಿಗೆ ಸೇರಿಸಬೇಕು:

Mkdosfs -C floppy.img 1440 dd conv=notrunc if=boot.bin of=floppy.img

ಈ ಹಂತದಲ್ಲಿ, ಸಿಸ್ಟಮ್ ಬೂಟ್ ಲೋಡರ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಪ್ರಕ್ರಿಯೆಯು ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು! ನಾವು ಈಗ ಬೂಟ್ ಮಾಡಬಹುದಾದ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಇಮೇಜ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಅದು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು mykernel.bin ಎಂಬ ಫೈಲ್‌ನಿಂದ ಲೋಡ್ ಮಾಡಲು ಮತ್ತು ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಮುಂದೆ, ಕೆಲಸದ ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕ ಭಾಗವು ನಮಗೆ ಕಾಯುತ್ತಿದೆ - ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ನ ಅಭಿವೃದ್ಧಿ.

ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್

ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಅನೇಕ ಪ್ರಮುಖ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಬೇಕೆಂದು ನಾವು ಬಯಸುತ್ತೇವೆ: ಶುಭಾಶಯ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸಿ, ಬಳಕೆದಾರರಿಂದ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿ, ಇನ್‌ಪುಟ್ ಬೆಂಬಲಿತ ಆಜ್ಞೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಿ ಮತ್ತು ಬಳಕೆದಾರರು ತಮ್ಮ ಹೆಸರನ್ನು ಸೂಚಿಸಿದಾಗ ಡಿಸ್ಕ್‌ನಿಂದ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ. ಇದು mykernel.asm ಫೈಲ್‌ನಿಂದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಕೋಡ್ ಆಗಿದೆ:

Mov ax, 2000h mov ds, ax mov es, ax loop: mov si, ಪ್ರಾಂಪ್ಟ್ ಕರೆ lib_print_string mov si, ಬಳಕೆದಾರ_ಇನ್‌ಪುಟ್ ಕರೆ lib_input_string cmp ಬೈಟ್ , 0 je ಲೂಪ್ cmp ಪದ , "ls" je list_files mov ax, si lib7_8 ಕರೆ jc load_fail ಕರೆ 32768 jmp ಲೂಪ್ load_fail: mov si, load_fail_msg ಕರೆ lib_print_string jmp ಲೂಪ್ ಪಟ್ಟಿ_ಫೈಲ್‌ಗಳು: mov si, file_list ಕರೆ lib_get_file_list ಕರೆ lib_print_string jmp ಲೂಪ್ ಪ್ರಾಂಪ್ಟ್ db0_db0 ", 13 13, 10, "ಕಂಡುಬಂದಿಲ್ಲ! ", 0 user_input times 256 db 0 file_list times 1024 db 0 %include "lib.asm"

ಕೋಡ್ ಅನ್ನು ನೋಡುವ ಮೊದಲು, ನಮ್ಮ ವೆಬ್‌ಸೈಟ್‌ನಿಂದ asmschool.zip ಆರ್ಕೈವ್‌ನಲ್ಲಿರುವ lib.asm ಮೂಲ ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ಸೇರಿಸುವ ನಿರ್ದೇಶನದೊಂದಿಗೆ ನೀವು ಕೊನೆಯ ಸಾಲಿಗೆ ಗಮನ ಕೊಡಬೇಕು. ನೀವು ಸಹ ಬಳಸಬಹುದಾದ ಪರದೆ, ಕೀಬೋರ್ಡ್, ತಂತಿಗಳು ಮತ್ತು ಡಿಸ್ಕ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಇದು ಉಪಯುಕ್ತ ದಿನಚರಿಗಳ ಗ್ರಂಥಾಲಯವಾಗಿದೆ - ಈ ಸಂದರ್ಭದಲ್ಲಿ ನಾವು ಈ ಮೂಲ ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್‌ನ ಮುಖ್ಯ ಮೂಲ ಕೋಡ್ ಫೈಲ್‌ನ ಕೊನೆಯಲ್ಲಿ ಕ್ರಮವಾಗಿ ಸೇರಿಸುತ್ತೇವೆ. ಎರಡನೆಯದನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಕಾಂಪ್ಯಾಕ್ಟ್ ಮತ್ತು ಸುಂದರವಾಗಿಸಲು. ಇದಕ್ಕಾಗಿ lib.asm ಲೈಬ್ರರಿ ದಿನಚರಿಗಳ ವಿಭಾಗವನ್ನು ನೋಡಿ ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿಲಭ್ಯವಿರುವ ಎಲ್ಲಾ ಉಪಕ್ರಮಗಳ ಬಗ್ಗೆ.

ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ಕರ್ನಲ್ ಕೋಡ್‌ನ ಮೊದಲ ಮೂರು ಸಾಲುಗಳಲ್ಲಿ, ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿದ ವಿಭಾಗ 2000 ಗೆ ಸೂಚಿಸಲು ನಾವು ಸೆಗ್ಮೆಂಟ್ ರೆಜಿಸ್ಟರ್‌ಗಳನ್ನು ಡೇಟಾದೊಂದಿಗೆ ಭರ್ತಿ ಮಾಡುತ್ತೇವೆ. ಖಾತರಿಗಾಗಿ ಇದು ಮುಖ್ಯವಾಗಿದೆ ಸರಿಯಾದ ಕಾರ್ಯಾಚರಣೆ lodsb ನಂತಹ ಸೂಚನೆಗಳು, ಪ್ರಸ್ತುತ ವಿಭಾಗದಿಂದ ಡೇಟಾವನ್ನು ಓದಬೇಕು ಮತ್ತು ಬೇರೆ ಯಾವುದರಿಂದಲ್ಲ. ಇದರ ನಂತರ, ನಾವು ವಿಭಾಗಗಳಲ್ಲಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಾಡುವುದಿಲ್ಲ; ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ 64 KB RAM ನೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ!

ಕೋಡ್‌ನಲ್ಲಿ ಲೂಪ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಅನುಗುಣವಾದ ಲೇಬಲ್ ಇದೆ. ಮೊದಲನೆಯದಾಗಿ, ಶುಭಾಶಯವನ್ನು ಮುದ್ರಿಸಲು ನಾವು lib.asm ಲೈಬ್ರರಿಯಿಂದ ದಿನಚರಿಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸುತ್ತೇವೆ, ಅವುಗಳೆಂದರೆ lib_print_string. ಶುಭಾಶಯ ಸಾಲಿನ ಮೊದಲು 13 ಮತ್ತು 10 ಬೈಟ್‌ಗಳು ತಪ್ಪಿಸಿಕೊಳ್ಳುವ ಅಕ್ಷರಗಳಾಗಿವೆ. ಹೊಸ ಗೆರೆ, ಯಾವುದೇ ಪ್ರೋಗ್ರಾಂನ ಔಟ್ಪುಟ್ ನಂತರ ಶುಭಾಶಯವನ್ನು ತಕ್ಷಣವೇ ಪ್ರದರ್ಶಿಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಯಾವಾಗಲೂ ಹೊಸ ಸಾಲಿನಲ್ಲಿ.

ಇದರ ನಂತರ, ನಾವು lib.asm ಲೈಬ್ರರಿಯಿಂದ lib_input_string ಎಂಬ ಇನ್ನೊಂದು ದಿನಚರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ, ಅದು ಬಳಕೆದಾರರ ಕೀಬೋರ್ಡ್ ಇನ್‌ಪುಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು SI ರಿಜಿಸ್ಟರ್‌ನಲ್ಲಿ ಸೂಚಿಸಲಾದ ಬಫರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಕೋಡ್‌ನ ಕೊನೆಯಲ್ಲಿ ಬಫರ್ ಅನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಘೋಷಿಸಲಾಗುತ್ತದೆ:

User_input ಬಾರಿ 256 db 0

ಈ ಘೋಷಣೆಯು ಸೊನ್ನೆಗಳಿಂದ ತುಂಬಿದ 256 ಅಕ್ಷರಗಳ ಬಫರ್ ಅನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ - ನಮ್ಮಂತಹ ಸರಳ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಾಗಿ ಆಜ್ಞೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅದರ ಉದ್ದವು ಸಾಕಷ್ಟು ಇರಬೇಕು!

ಮುಂದೆ ನಾವು ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಮೌಲ್ಯೀಕರಣವನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. user_input ಬಫರ್‌ನ ಮೊದಲ ಬೈಟ್ ಶೂನ್ಯವಾಗಿದ್ದರೆ, ನಂತರ ಬಳಕೆದಾರರು ಯಾವುದೇ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸದೆ Enter ಕೀಲಿಯನ್ನು ಒತ್ತಿದರೆ; ಎಲ್ಲಾ ತಂತಿಗಳು ಶೂನ್ಯ ಅಕ್ಷರಗಳೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತವೆ ಎಂಬುದನ್ನು ಮರೆಯಬೇಡಿ. ಆದ್ದರಿಂದ ಈ ಸಂದರ್ಭದಲ್ಲಿ ನಾವು ಲೂಪ್ನ ಆರಂಭಕ್ಕೆ ಹೋಗಬೇಕು ಮತ್ತು ಮತ್ತೊಮ್ಮೆ ಶುಭಾಶಯವನ್ನು ಮುದ್ರಿಸಬೇಕು. ಆದಾಗ್ಯೂ, ಬಳಕೆದಾರರು ಯಾವುದೇ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿದರೆ, ಅವರು ls ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿದ್ದಾರೆಯೇ ಎಂದು ನೋಡಲು ನಾವು ಮೊದಲು ಪರಿಶೀಲಿಸಬೇಕು. ಇಲ್ಲಿಯವರೆಗೆ, ನೀವು ನಮ್ಮ ಅಸೆಂಬ್ಲಿ ಭಾಷಾ ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ ವೈಯಕ್ತಿಕ ಬೈಟ್‌ಗಳ ಹೋಲಿಕೆಗಳನ್ನು ಮಾತ್ರ ವೀಕ್ಷಿಸಬಹುದು, ಆದರೆ ಡಬಲ್-ಬೈಟ್ ಮೌಲ್ಯಗಳು ಅಥವಾ ಯಂತ್ರ ಪದಗಳನ್ನು ಹೋಲಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ ಎಂಬುದನ್ನು ಮರೆಯಬೇಡಿ. ಈ ಕೋಡ್‌ನಲ್ಲಿ, ನಾವು user_input ಬಫರ್‌ನಿಂದ ಮೊದಲ ಯಂತ್ರ ಪದವನ್ನು ls ಸಾಲಿಗೆ ಅನುಗುಣವಾದ ಯಂತ್ರ ಪದದೊಂದಿಗೆ ಹೋಲಿಸುತ್ತೇವೆ ಮತ್ತು ಅವು ಒಂದೇ ಆಗಿದ್ದರೆ, ಕೆಳಗಿನ ಕೋಡ್ ಬ್ಲಾಕ್‌ಗೆ ಸರಿಸಿ. ಈ ಕೋಡ್ ಬ್ಲಾಕ್‌ನಲ್ಲಿ, ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಅಲ್ಪವಿರಾಮದಿಂದ ಪ್ರತ್ಯೇಕಿಸಲಾದ ಫೈಲ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು ನಾವು lib.asm ನಿಂದ ಇನ್ನೊಂದು ದಿನಚರಿಯನ್ನು ಬಳಸುತ್ತೇವೆ (ಅದನ್ನು ಫೈಲ್_ಲಿಸ್ಟ್ ಬಫರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಬೇಕು), ಆ ಪಟ್ಟಿಯನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸಿ ಮತ್ತು ಲೂಪ್‌ಗೆ ಹಿಂತಿರುಗಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ.

ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಕಾರ್ಯಕ್ರಮಗಳ ಅನುಷ್ಠಾನ

ಬಳಕೆದಾರರು ls ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸದಿದ್ದರೆ, ಅವರು ಡಿಸ್ಕ್ನಿಂದ ಪ್ರೋಗ್ರಾಂನ ಹೆಸರನ್ನು ನಮೂದಿಸಿದ್ದಾರೆ ಎಂದು ನಾವು ಭಾವಿಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲು ಇದು ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ. ನಮ್ಮ lib.asm ಲೈಬ್ರರಿಯು ಉಪಯುಕ್ತವಾದ lib_load_file ವಾಡಿಕೆಯ ಅನುಷ್ಠಾನವನ್ನು ಹೊಂದಿದೆ, ಇದು FAT12 ಡಿಸ್ಕ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಟೇಬಲ್‌ಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ: ಇದು AX ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಫೈಲ್ ಹೆಸರಿನೊಂದಿಗೆ ಸಾಲಿನ ಪ್ರಾರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಜೊತೆಗೆ ಲೋಡ್ ಮಾಡಲು ಆಫ್‌ಸೆಟ್ ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. CX ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ನಿಂದ ಬೈನರಿ ಕೋಡ್. ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಹೊಂದಿರುವ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ನಾವು ಈಗಾಗಲೇ SI ರಿಜಿಸ್ಟರ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ, ಆದ್ದರಿಂದ ನಾವು ಈ ಪಾಯಿಂಟರ್ ಅನ್ನು AX ರಿಜಿಸ್ಟರ್‌ಗೆ ನಕಲಿಸುತ್ತೇವೆ ಮತ್ತು ನಂತರ ಮೌಲ್ಯ 32768 ಅನ್ನು ಇರಿಸುತ್ತೇವೆ, ಇದನ್ನು ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ನಿಂದ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಆಫ್‌ಸೆಟ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ, CX ರಿಜಿಸ್ಟರ್‌ಗೆ.

ಆದರೆ ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ನಿಂದ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ನಾವು ಈ ನಿರ್ದಿಷ್ಟ ಮೌಲ್ಯವನ್ನು ಆಫ್‌ಸೆಟ್ ಆಗಿ ಏಕೆ ಬಳಸುತ್ತೇವೆ? ಸರಿ, ಇದು ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಾಗಿ ಮೆಮೊರಿ ಮ್ಯಾಪ್ ಆಯ್ಕೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ನಾವು ಒಂದೇ 64 KB ವಿಭಾಗದಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿರುವುದರಿಂದ ಮತ್ತು ನಮ್ಮ ಕರ್ನಲ್ ಬೈನರಿ ಆಫ್‌ಸೆಟ್ 0 ನಲ್ಲಿ ಲೋಡ್ ಆಗಿರುವುದರಿಂದ, ನಾವು ಮೊದಲ 32 KB ಮೆಮೊರಿಯನ್ನು ಕರ್ನಲ್ ಡೇಟಾಕ್ಕಾಗಿ ಮತ್ತು ಉಳಿದ 32 KB ಅನ್ನು ಲೋಡ್ ಪ್ರೋಗ್ರಾಂ ಡೇಟಾಗಾಗಿ ಬಳಸಬೇಕಾಗುತ್ತದೆ. ಹೀಗಾಗಿ, ಆಫ್‌ಸೆಟ್ 32768 ನಮ್ಮ ವಿಭಾಗದ ಮಧ್ಯಭಾಗವಾಗಿದೆ ಮತ್ತು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಮತ್ತು ಲೋಡ್ ಮಾಡಲಾದ ಪ್ರೊಗ್ರಾಮ್‌ಗಳಿಗೆ ಸಾಕಷ್ಟು RAM ಅನ್ನು ಒದಗಿಸಲು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ನಂತರ lib_load_file ದಿನಚರಿಯು ಬಹಳ ಮುಖ್ಯವಾದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ: ಕೊಟ್ಟಿರುವ ಹೆಸರಿನೊಂದಿಗೆ ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಫೈಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗದಿದ್ದರೆ ಅಥವಾ ಕೆಲವು ಕಾರಣಗಳಿಂದ ಅದನ್ನು ಡಿಸ್ಕ್‌ನಿಂದ ಓದಲಾಗದಿದ್ದರೆ, ಅದು ಸರಳವಾಗಿ ನಿರ್ಗಮಿಸುತ್ತದೆ ಮತ್ತು ವಿಶೇಷ ಕ್ಯಾರಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ. ಇದು ಕೆಲವು ಗಣಿತದ ಕಾರ್ಯಾಚರಣೆಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ಹೊಂದಿಸಲಾದ CPU ಸ್ಟೇಟ್ ಫ್ಲ್ಯಾಗ್ ಆಗಿದೆ ಮತ್ತು ಈ ಸಮಯದಲ್ಲಿ ನಮಗೆ ಆಸಕ್ತಿಯನ್ನು ಹೊಂದಿರಬಾರದು, ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ ನಾವು ತ್ವರಿತ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಈ ಧ್ವಜದ ಉಪಸ್ಥಿತಿಯನ್ನು ನಿರ್ಧರಿಸಬಹುದು. lib_load_asm ದಿನಚರಿಯು ಕ್ಯಾರಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಿದರೆ, ದೋಷ ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸುವ ಮತ್ತು ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಲೂಪ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಹಿಂತಿರುಗುವ ಕೋಡ್‌ನ ಬ್ಲಾಕ್‌ಗೆ ನೆಗೆಯಲು ನಾವು jc (ಒಯ್ಯುವ ವೇಳೆ ಜಿಗಿಯಿರಿ) ಸೂಚನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ.

ಅದೇ ಸಂದರ್ಭದಲ್ಲಿ, ವರ್ಗಾವಣೆ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ, lib_load_asm ಸಬ್‌ರುಟೀನ್ ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ನಿಂದ ಬೈನರಿ ಕೋಡ್ ಅನ್ನು RAM ಗೆ ವಿಳಾಸ 32768 ರಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿ ಲೋಡ್ ಮಾಡಿದೆ ಎಂದು ನಾವು ತೀರ್ಮಾನಿಸಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ ನಮಗೆ ಬೇಕಾಗಿರುವುದು ಬೈನರಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಈ ವಿಳಾಸದಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿದೆ, ಅಂದರೆ, ಬಳಕೆದಾರ-ನಿರ್ದಿಷ್ಟ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಪ್ರಾರಂಭಿಸಿ! ಮತ್ತು ಈ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ರೆಟ್ ಸೂಚನೆಯನ್ನು ಬಳಸಿದ ನಂತರ (ಕರೆ ಮಾಡುವ ಕೋಡ್‌ಗೆ ಹಿಂತಿರುಗಲು), ನಾವು ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಲೂಪ್‌ಗೆ ಹಿಂತಿರುಗಬೇಕಾಗುತ್ತದೆ. ಹೀಗಾಗಿ ನಾವು ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ರಚಿಸಿದ್ದೇವೆ: ಇದು ಸರಳವಾದ ಕಮಾಂಡ್ ಪಾರ್ಸಿಂಗ್ ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಲೋಡಿಂಗ್ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದನ್ನು ಸುಮಾರು 40 ಸಾಲುಗಳ ಅಸೆಂಬ್ಲಿ ಕೋಡ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ, ಆದರೂ lib.asm ಲೈಬ್ರರಿಯಿಂದ ದಿನಚರಿಯಿಂದ ಸಾಕಷ್ಟು ಸಹಾಯವನ್ನು ಹೊಂದಿದೆ.

ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ ಕೋಡ್ ಅನ್ನು ಜೋಡಿಸಲು, ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:

Nasm -f bin -o mykernel.bin mykernel.asm

ಇದರ ನಂತರ ನಾವು ಹೇಗಾದರೂ mykernel.bin ಫೈಲ್ ಅನ್ನು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಇಮೇಜ್ ಫೈಲ್‌ಗೆ ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ. ಲೂಪ್‌ಬ್ಯಾಕ್ ಸಾಧನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡಿಸ್ಕ್ ಇಮೇಜ್‌ಗಳನ್ನು ಆರೋಹಿಸುವ ತಂತ್ರವನ್ನು ನೀವು ತಿಳಿದಿದ್ದರೆ, ನೀವು floppy.img ಅನ್ನು ಬಳಸಿಕೊಂಡು ಡಿಸ್ಕ್ ಇಮೇಜ್‌ನ ವಿಷಯಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು, ಆದರೆ GNU Mtools (www.gnu.org/software /mtools) ಬಳಸಿಕೊಂಡು ಸುಲಭವಾದ ಮಾರ್ಗವಿದೆ. ಇದು ಪ್ಯಾಕೇಜ್ ರೆಪೊಸಿಟರಿಗಳಿಂದ ಲಭ್ಯವಿರುವ MS-DOS/FAT12 ಫೈಲ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಬಳಸುವ ಫ್ಲಾಪಿ ಡಿಸ್ಕ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರೋಗ್ರಾಂಗಳ ಒಂದು ಸೆಟ್ ಆಗಿದೆ. ಸಾಫ್ಟ್ವೇರ್ಎಲ್ಲಾ ಜನಪ್ರಿಯ ಲಿನಕ್ಸ್ ವಿತರಣೆಗಳು, ಆದ್ದರಿಂದ ನೀವು ಮಾಡಬೇಕಾಗಿರುವುದು ಆಪ್ಟ್-ಗೆಟ್, ಯಮ್, ಪ್ಯಾಕ್‌ಮ್ಯಾನ್ ಅಥವಾ ನಿಮ್ಮ ವಿತರಣೆಯಲ್ಲಿ ಸಾಫ್ಟ್‌ವೇರ್ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನೀವು ಬಳಸುವ ಯಾವುದೇ ಉಪಯುಕ್ತತೆಯನ್ನು ಬಳಸುವುದು.

ಸೂಕ್ತವಾದ ಸಾಫ್ಟ್‌ವೇರ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ನೀವು mykernel.bin ಫೈಲ್ ಅನ್ನು floppy.img ಡಿಸ್ಕ್ ಇಮೇಜ್ ಫೈಲ್‌ಗೆ ಸೇರಿಸಲು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಬೇಕು:

Mcopy -i floppy.img mykernel.bin::/

ಆಜ್ಞೆಯ ಕೊನೆಯಲ್ಲಿ ತಮಾಷೆಯ ಚಿಹ್ನೆಗಳನ್ನು ಗಮನಿಸಿ: ಕೊಲೊನ್, ಕೊಲೊನ್ ಮತ್ತು ಸ್ಲಾಶ್. ಈಗ ನಾವು ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಬಹುತೇಕ ಸಿದ್ಧರಾಗಿದ್ದೇವೆ, ಆದರೆ ಅದಕ್ಕೆ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಲ್ಲದಿದ್ದರೆ ಏನು ಪ್ರಯೋಜನ? ಅತ್ಯಂತ ಸರಳವಾದ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಮೂಲಕ ಈ ತಪ್ಪುಗ್ರಹಿಕೆಯನ್ನು ಸರಿಪಡಿಸೋಣ. ಹೌದು, ಈಗ ನೀವು ನಿಮ್ಮ ಸ್ವಂತ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದ್ದೀರಿ - ಗೀಕ್‌ಗಳ ಶ್ರೇಣಿಯಲ್ಲಿ ನಿಮ್ಮ ಅಧಿಕಾರವು ಎಷ್ಟು ಏರುತ್ತದೆ ಎಂಬುದನ್ನು ಊಹಿಸಿ. test.asm ಹೆಸರಿನ ಫೈಲ್‌ನಲ್ಲಿ ಈ ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಉಳಿಸಿ:

Org 32768 mov ah, 0Eh mov al, "X" int 10h ret

ಈ ಕೋಡ್ ಪರದೆಯ ಮೇಲೆ "X" ಅನ್ನು ಮುದ್ರಿಸಲು BIOS ಕಾರ್ಯವನ್ನು ಸರಳವಾಗಿ ಬಳಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಅದನ್ನು ಕರೆದ ಕೋಡ್‌ಗೆ ನಿಯಂತ್ರಣವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ - ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಆ ಕೋಡ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕೋಡ್ ಆಗಿದೆ. ಅಪ್ಲಿಕೇಶನ್‌ನ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವ org ಲೈನ್ CPU ಸೂಚನೆಯಲ್ಲ, ಆದರೆ NASM ಅಸೆಂಬ್ಲರ್ ನಿರ್ದೇಶನವು ಬೈನರಿ ಕೋಡ್ ಅನ್ನು ಆಫ್‌ಸೆಟ್ 32768 ನಲ್ಲಿ RAM ಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಇದನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲು ಎಲ್ಲಾ ಆಫ್‌ಸೆಟ್‌ಗಳನ್ನು ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬೇಕು.

ಈ ಕೋಡ್ ಅನ್ನು ಕೂಡ ಜೋಡಿಸಬೇಕಾಗಿದೆ, ಮತ್ತು ಪರಿಣಾಮವಾಗಿ ಬೈನರಿ ಫೈಲ್ ಅನ್ನು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಇಮೇಜ್ ಫೈಲ್‌ಗೆ ಸೇರಿಸುವ ಅಗತ್ಯವಿದೆ:

Nasm -f bin -o test.bin test.asm mcopy -i floppy.img test.bin::/

ಈಗ ಆಳವಾದ ಉಸಿರನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ, ನಿಮ್ಮ ಸ್ವಂತ ಕೆಲಸದ ಸಾಟಿಯಿಲ್ಲದ ಫಲಿತಾಂಶಗಳನ್ನು ಆಲೋಚಿಸಲು ಸಿದ್ಧರಾಗಿ ಮತ್ತು Qemu ಅಥವಾ VirtualBox ನಂತಹ PC ಎಮ್ಯುಲೇಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಇಮೇಜ್ ಅನ್ನು ಬೂಟ್ ಮಾಡಿ. ಉದಾಹರಣೆಗೆ, ಈ ಉದ್ದೇಶಕ್ಕಾಗಿ ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು:

Qemu-system-i386 -fda floppy.img

Voila: ಸಿಸ್ಟಮ್ ಬೂಟ್‌ಲೋಡರ್ boot.img, ನಾವು ಡಿಸ್ಕ್ ಇಮೇಜ್‌ನ ಮೊದಲ ಸೆಕ್ಟರ್‌ಗೆ ಸಂಯೋಜಿಸಿದ್ದೇವೆ, ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರ್ನಲ್ mykernel.bin ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಇದು ಸ್ವಾಗತ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಡಿಸ್ಕ್‌ನಲ್ಲಿರುವ ಎರಡು ಫೈಲ್‌ಗಳ ಹೆಸರನ್ನು ಪಡೆಯಲು ls ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿ (mykernel.bin ಮತ್ತು test.bin), ತದನಂತರ ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಮತ್ತು ಪರದೆಯ ಮೇಲೆ X ಅನ್ನು ಪ್ರದರ್ಶಿಸಲು ಕೊನೆಯ ಫೈಲ್‌ನ ಹೆಸರನ್ನು ನಮೂದಿಸಿ.

ಇದು ತಂಪಾಗಿದೆ, ಅಲ್ಲವೇ? ಈಗ ನೀವು ಅಂತಿಮಗೊಳಿಸುವಿಕೆಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು ಕಮಾಂಡ್ ಶೆಲ್ನಿಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್, ಹೊಸ ಆಜ್ಞೆಗಳ ಅನುಷ್ಠಾನಗಳನ್ನು ಸೇರಿಸಿ, ಮತ್ತು ಹೆಚ್ಚುವರಿ ಪ್ರೋಗ್ರಾಂ ಫೈಲ್‌ಗಳನ್ನು ಡಿಸ್ಕ್‌ಗೆ ಸೇರಿಸಿ. ನೀವು ನಿಜವಾದ PC ಯಲ್ಲಿ ಈ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಬಯಸಿದರೆ, ಸರಣಿಯಲ್ಲಿನ ಹಿಂದಿನ ಲೇಖನದಿಂದ "ನಿಜವಾದ ಹಾರ್ಡ್ವೇರ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಲ್ಲಿ ಬೂಟ್ಲೋಡರ್ ಅನ್ನು ರನ್ ಮಾಡುವುದು" ವಿಭಾಗವನ್ನು ನೀವು ಉಲ್ಲೇಖಿಸಬೇಕು - ನಿಮಗೆ ನಿಖರವಾಗಿ ಅದೇ ಆಜ್ಞೆಗಳು ಬೇಕಾಗುತ್ತವೆ. ಮುಂದಿನ ತಿಂಗಳು, ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದಾದ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸಿಸ್ಟಮ್ ಕಾರ್ಯಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿಸುವ ಮೂಲಕ ನಾವು ನಮ್ಮ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಹೆಚ್ಚು ಶಕ್ತಿಯುತಗೊಳಿಸುತ್ತೇವೆ, ಕೋಡ್ ನಕಲು ಕಡಿಮೆ ಮಾಡಲು ಕೋಡ್-ಹಂಚಿಕೆ ಪರಿಕಲ್ಪನೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತೇವೆ. ಹೆಚ್ಚಿನ ಕೆಲಸಗಳು ಇನ್ನೂ ಮುಂದಿವೆ.

lib.asm ಗ್ರಂಥಾಲಯದ ದಿನಚರಿಗಳು

ಮೊದಲೇ ಹೇಳಿದಂತೆ, ನಿಮ್ಮ ಕರ್ನಲ್‌ಗಳಲ್ಲಿ ಬಳಸಲು lib.asm ಲೈಬ್ರರಿಯು ಉಪಯುಕ್ತ ದಿನಚರಿಗಳ ದೊಡ್ಡ ಗುಂಪನ್ನು ಒದಗಿಸುತ್ತದೆ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂಗಳುಮತ್ತು ವೈಯಕ್ತಿಕ ಕಾರ್ಯಕ್ರಮಗಳು. ಅವುಗಳಲ್ಲಿ ಕೆಲವು ಈ ಸರಣಿಯ ಲೇಖನಗಳಲ್ಲಿ ಇನ್ನೂ ಸ್ಪರ್ಶಿಸದ ಸೂಚನೆಗಳು ಮತ್ತು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಬಳಸುತ್ತವೆ, ಇತರರು (ಡಿಸ್ಕ್ ವಾಡಿಕೆಯಂತಹವು) ಫೈಲ್ ಸಿಸ್ಟಮ್‌ಗಳ ವಿನ್ಯಾಸಕ್ಕೆ ನಿಕಟ ಸಂಬಂಧ ಹೊಂದಿದ್ದಾರೆ, ಆದರೆ ನೀವು ಈ ವಿಷಯಗಳಲ್ಲಿ ಸಮರ್ಥರೆಂದು ಪರಿಗಣಿಸಿದರೆ, ನೀವು ಓದಬಹುದು ಅವರ ಅನುಷ್ಠಾನಗಳೊಂದಿಗೆ ನೀವೇ ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯ ತತ್ವವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ. ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ಸ್ವಂತ ಕೋಡ್‌ನಿಂದ ಅವರನ್ನು ಹೇಗೆ ಕರೆಯುವುದು ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು ಹೆಚ್ಚು ಮುಖ್ಯ:

  • lib_print_string - SI ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಶೂನ್ಯ ಅಂತ್ಯಗೊಂಡ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪರದೆಯ ಮೇಲೆ ಮುದ್ರಿಸುತ್ತದೆ.
  • lib_input_string - SI ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಬಫರ್‌ಗೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕೀಬೋರ್ಡ್ ಬಳಸಿ ಬಳಕೆದಾರರು ನಮೂದಿಸಿದ ಅಕ್ಷರಗಳೊಂದಿಗೆ ಈ ಬಫರ್ ಅನ್ನು ತುಂಬುತ್ತದೆ. ಬಳಕೆದಾರನು Enter ಕೀಲಿಯನ್ನು ಒತ್ತಿದ ನಂತರ, ಬಫರ್‌ನಲ್ಲಿನ ರೇಖೆಯು ಶೂನ್ಯ-ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ನಿಯಂತ್ರಣವು ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂ ಕೋಡ್‌ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ.
  • lib_move_cursor - DH (ಸಾಲು ಸಂಖ್ಯೆ) ಮತ್ತು DL (ಕಾಲಮ್ ಸಂಖ್ಯೆ) ರೆಜಿಸ್ಟರ್‌ಗಳ ಮೂಲಕ ರವಾನೆಯಾಗುವ ನಿರ್ದೇಶಾಂಕಗಳೊಂದಿಗೆ ಪರದೆಯ ಮೇಲೆ ಕರ್ಸರ್ ಅನ್ನು ಚಲಿಸುತ್ತದೆ.
  • lib_get_cursor_pos - ಕ್ರಮವಾಗಿ DH ಮತ್ತು DL ರೆಜಿಸ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಸ್ತುತ ಸಾಲು ಮತ್ತು ಕಾಲಮ್ ಸಂಖ್ಯೆಗಳನ್ನು ಪಡೆಯಲು ಈ ಸಬ್‌ರುಟೀನ್ ಅನ್ನು ಕರೆಯಬೇಕು.
  • lib_string_uppercase - AX ರಿಜಿಸ್ಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಶೂನ್ಯ ಅಂತ್ಯಗೊಂಡ ಸ್ಟ್ರಿಂಗ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಸ್ಟ್ರಿಂಗ್‌ನ ಅಕ್ಷರಗಳನ್ನು ದೊಡ್ಡಕ್ಷರಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತದೆ.
  • lib_string_length - AX ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಶೂನ್ಯ ಅಂತ್ಯಗೊಂಡ ಸ್ಟ್ರಿಂಗ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು AX ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಅದರ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
  • lib_string_compare - SI ಮತ್ತು DI ರೆಜಿಸ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಎರಡು ಶೂನ್ಯ-ಅಂತ್ಯಗೊಳಿಸಲಾದ ಸ್ಟ್ರಿಂಗ್‌ಗಳ ಪ್ರಾರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಹೋಲಿಸುತ್ತದೆ. ಸಾಲುಗಳು ಒಂದೇ ಆಗಿದ್ದರೆ ಕ್ಯಾರಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ (jc ಕ್ಯಾರಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ಜಂಪ್ ಸೂಚನೆಯನ್ನು ಬಳಸಲು) ಅಥವಾ ಸಾಲುಗಳು ವಿಭಿನ್ನವಾಗಿದ್ದರೆ ಈ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ (jnc ಸೂಚನೆಯನ್ನು ಬಳಸಲು).
  • lib_get_file_list - SI ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಬಫರ್‌ನ ಪ್ರಾರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಡಿಸ್ಕ್‌ನಿಂದ ಅಲ್ಪವಿರಾಮದಿಂದ ಪ್ರತ್ಯೇಕಿಸಲಾದ ಫೈಲ್ ಹೆಸರುಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರುವ ಶೂನ್ಯ-ಅಂತ್ಯಗೊಳಿಸಿದ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಬಫರ್‌ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ.
  • lib_load_file - AX ರಿಜಿಸ್ಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫೈಲ್ ಹೆಸರನ್ನು ಹೊಂದಿರುವ ಸಾಲಿನ ಆರಂಭಕ್ಕೆ ಪಾಯಿಂಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು CX ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ರವಾನಿಸಲಾದ ಆಫ್‌ಸೆಟ್‌ನಲ್ಲಿ ಫೈಲ್‌ನ ವಿಷಯಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ. BX ರಿಜಿಸ್ಟರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಮೆಮೊರಿಗೆ (ಅಂದರೆ, ಫೈಲ್ ಗಾತ್ರ) ನಕಲಿಸಲಾದ ಬೈಟ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಅಥವಾ ನೀಡಿದ ಹೆಸರಿನೊಂದಿಗೆ ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲವಾದರೆ ಕ್ಯಾರಿ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ.

ನಾನು ಈಗಿನಿಂದಲೇ ಹೇಳುತ್ತೇನೆ, "ಡ್ಯಾಮ್, ಮತ್ತೊಂದು ಪೊಪೊವ್" ಆಲೋಚನೆಗಳೊಂದಿಗೆ ಲೇಖನವನ್ನು ಮುಚ್ಚಬೇಡಿ. ಅವರು ಕೇವಲ ಪಾಲಿಶ್ ಮಾಡಿದ ಉಬುಂಟು ಹೊಂದಿದ್ದಾರೆ, ಆದರೆ ನಾನು ಕರ್ನಲ್ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಮೊದಲಿನಿಂದ ಎಲ್ಲವನ್ನೂ ಹೊಂದಿದ್ದೇನೆ. ಆದ್ದರಿಂದ, ಕಟ್ ಅಡಿಯಲ್ಲಿ ಮುಂದುವರಿಕೆ.

OS ಗುಂಪು: ಇಲ್ಲಿ.
ಮೊದಲು ನಾನು ನಿಮಗೆ ಒಂದು ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ನೀಡುತ್ತೇನೆ.

ಅವುಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವುಗಳಿಲ್ಲ, ಮತ್ತು ಈಗ ನಾನು ಅದನ್ನು ಏಕೆ ಬರೆಯುತ್ತಿದ್ದೇನೆ ಎಂಬುದರ ಕುರಿತು ಹೆಚ್ಚು ವಿವರವಾಗಿ ಮಾತನಾಡೋಣ.

ಇದು ಬೆಚ್ಚಗಿನ ಏಪ್ರಿಲ್ ಸಂಜೆ, ಗುರುವಾರ. ಬಾಲ್ಯದಿಂದಲೂ, ನಾನು ಓಎಸ್ ಬರೆಯುವ ಕನಸು ಕಂಡೆ, ನಾನು ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಯೋಚಿಸಿದಾಗ: "ಈಗ ನನಗೆ ಅನುಕೂಲಗಳು ಮತ್ತು ಅಸ್ಮ್ ತಿಳಿದಿದೆ, ನನ್ನ ಕನಸನ್ನು ಏಕೆ ನನಸಾಗಬಾರದು?" ನಾನು ಈ ವಿಷಯದ ಕುರಿತು ಸೈಟ್‌ಗಳನ್ನು ಗೂಗಲ್ ಮಾಡಿದ್ದೇನೆ ಮತ್ತು ಹಬ್ರ್‌ನಿಂದ ಲೇಖನವನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ: "ಓಎಸ್ ಬರೆಯುವುದನ್ನು ಹೇಗೆ ಪ್ರಾರಂಭಿಸುವುದು ಮತ್ತು ಬಿಡಬಾರದು." ಕೆಳಗಿನ OSDev ವಿಕಿಯ ಲಿಂಕ್‌ಗಾಗಿ ಅದರ ಲೇಖಕರಿಗೆ ಧನ್ಯವಾದಗಳು. ನಾನು ಅಲ್ಲಿಗೆ ಹೋಗಿ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದೆ. ಒಂದು ಲೇಖನದಲ್ಲಿ ಕನಿಷ್ಠ OS ಬಗ್ಗೆ ಎಲ್ಲಾ ಡೇಟಾ ಇತ್ತು. ನಾನು ಕ್ರಾಸ್-ಜಿಸಿಸಿ ಮತ್ತು ಬಿನುಟಿಲ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸಿದೆ ಮತ್ತು ಅಲ್ಲಿಂದ ಎಲ್ಲವನ್ನೂ ಪುನಃ ಬರೆದಿದ್ದೇನೆ. "ಹಲೋ, ಕರ್ನಲ್ ವರ್ಲ್ಡ್!" ಎಂಬ ಶಾಸನವನ್ನು ನೋಡಿದಾಗ ನೀವು ನನ್ನ ಸಂತೋಷವನ್ನು ನೋಡಬೇಕಾಗಿತ್ತು. ನಾನು ನನ್ನ ಕುರ್ಚಿಯಿಂದ ಜಿಗಿದಿದ್ದೇನೆ ಮತ್ತು ನಾನು ಬಿಟ್ಟುಕೊಡುವುದಿಲ್ಲ ಎಂದು ಅರಿತುಕೊಂಡೆ. ನಾನು "ಕನ್ಸೋಲ್" ಅನ್ನು ಬರೆದಿದ್ದೇನೆ (ಉಲ್ಲೇಖಗಳಲ್ಲಿ; ನಾನು ಕೀಬೋರ್ಡ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ), ಆದರೆ ನಂತರ ವಿಂಡೋ ಸಿಸ್ಟಮ್ ಅನ್ನು ಬರೆಯಲು ನಿರ್ಧರಿಸಿದೆ. ಕೊನೆಯಲ್ಲಿ ಅದು ಕೆಲಸ ಮಾಡಿದೆ, ಆದರೆ ನಾನು ಕೀಬೋರ್ಡ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರಲಿಲ್ಲ. ತದನಂತರ ನಾನು X ವಿಂಡೋ ಸಿಸ್ಟಮ್ ಅನ್ನು ಆಧರಿಸಿ ಹೆಸರಿನೊಂದಿಗೆ ಬರಲು ನಿರ್ಧರಿಸಿದೆ. ನಾನು Y ವಿಂಡೋ ಸಿಸ್ಟಮ್ ಅನ್ನು ಗೂಗಲ್ ಮಾಡಿದ್ದೇನೆ - ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಪರಿಣಾಮವಾಗಿ, ನಾನು OS365 ಪ್ರಿ-ಆಲ್ಫಾ 0.1 ರಲ್ಲಿ ಸೇರಿಸಲಾದ Z ವಿಂಡೋ ಸಿಸ್ಟಮ್ 0.1 ಎಂದು ಹೆಸರಿಸಿದೆ. ಮತ್ತು ಹೌದು, ನನ್ನನ್ನು ಹೊರತುಪಡಿಸಿ ಯಾರೂ ಅವಳನ್ನು ನೋಡಲಿಲ್ಲ. ನಂತರ ನಾನು ಕೀಬೋರ್ಡ್ ಬೆಂಬಲವನ್ನು ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು ಎಂದು ಕಂಡುಕೊಂಡೆ. ಮೊದಲ ಆವೃತ್ತಿಯ ಸ್ಕ್ರೀನ್‌ಶಾಟ್, ಇನ್ನೂ ಏನೂ ಇಲ್ಲದಿದ್ದಾಗ, ವಿಂಡೋ ಸಿಸ್ಟಮ್ ಕೂಡ ಇಲ್ಲ:

ನೀವು ನೋಡುವಂತೆ ಪಠ್ಯ ಕರ್ಸರ್ ಸಹ ಚಲಿಸಲಿಲ್ಲ. ನಂತರ ನಾನು ಒಂದೆರಡು ಬರೆದೆ ಸರಳ ಅಪ್ಲಿಕೇಶನ್ಗಳು Z ಅನ್ನು ಆಧರಿಸಿದೆ. ಮತ್ತು ಇಲ್ಲಿ 1.0.0 ಆಲ್ಫಾ ಬಿಡುಗಡೆಯಾಗಿದೆ. ಅಲ್ಲಿ ಬಹಳಷ್ಟು ವಿಷಯಗಳಿದ್ದವು, ಸಿಸ್ಟಮ್ ಮೆನುಗಳೂ ಸಹ. ಎ ಕಡತ ನಿರ್ವಾಹಕಮತ್ತು ಕ್ಯಾಲ್ಕುಲೇಟರ್ ಕೆಲಸ ಮಾಡಲಿಲ್ಲ.

ಸೌಂದರ್ಯದ ಬಗ್ಗೆ ಮಾತ್ರ ಕಾಳಜಿ ವಹಿಸುವ ಸ್ನೇಹಿತನಿಂದ ನಾನು ನೇರವಾಗಿ ಭಯಭೀತನಾಗಿದ್ದೆ (ಮಿಟ್ರೋಫಾನ್, ಕ್ಷಮಿಸಿ). ಅವರು ಹೇಳಿದರು: “VBE ಮೋಡ್ 1024*768*32 ಅನ್ನು ತೊಳೆಯಿರಿ, ಅದನ್ನು ತೊಳೆಯಿರಿ, ಅದನ್ನು ತೊಳೆಯಿರಿ! ಸರಿ, ಅದನ್ನು ಕುಡಿಯೋಣ! ” ಸರಿ, ನಾನು ಈಗಾಗಲೇ ಅವನ ಮಾತುಗಳನ್ನು ಕೇಳಿ ಸುಸ್ತಾಗಿದ್ದೆ ಮತ್ತು ಅವನನ್ನು ಇನ್ನೂ ಕತ್ತರಿಸಿದೆ. ಕೆಳಗಿನ ಅನುಷ್ಠಾನದ ಬಗ್ಗೆ.

ನಾನು ಎಲ್ಲವನ್ನೂ ನನ್ನ ಬೂಟ್‌ಲೋಡರ್‌ನೊಂದಿಗೆ ಮಾಡಿದ್ದೇನೆ, ಅವುಗಳೆಂದರೆ GRUB. ಅದರ ಸಹಾಯದಿಂದ, ಮಲ್ಟಿಬೂಟ್ ಹೆಡರ್‌ಗೆ ಕೆಲವು ಮ್ಯಾಜಿಕ್ ಲೈನ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನೀವು ಗ್ರಾಫಿಕಲ್ ಮೋಡ್ ಅನ್ನು ತೊಡಕುಗಳಿಲ್ಲದೆ ಹೊಂದಿಸಬಹುದು.

ALIGN ಹೊಂದಿಸಿ, 1<<0 .set MEMINFO, 1<<1 .set GRAPH, 1<<2 .set FLAGS, ALIGN | MEMINFO | GRAPH .set MAGIC, 0x1BADB002 .set CHECKSUM, -(MAGIC + FLAGS) .align 4 .long MAGIC .long FLAGS .long CHECKSUM .long 0, 0, 0, 0, 0 .long 0 # 0 = set graphics mode .long 1024, 768, 32 # Width, height, depth
ತದನಂತರ ಮಲ್ಟಿಬೂಟ್ ಮಾಹಿತಿ ರಚನೆಯಿಂದ ನಾನು ಫ್ರೇಮ್‌ಬಫರ್ ವಿಳಾಸ ಮತ್ತು ಪರದೆಯ ರೆಸಲ್ಯೂಶನ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇನೆ ಮತ್ತು ಅಲ್ಲಿ ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ಬರೆಯುತ್ತೇನೆ. VESA ಎಲ್ಲವನ್ನೂ ಬಹಳ ಗೊಂದಲಮಯವಾಗಿ ಮಾಡಿದೆ - RGB ಬಣ್ಣಗಳನ್ನು ಹಿಮ್ಮುಖ ಕ್ರಮದಲ್ಲಿ ನಮೂದಿಸಬೇಕು (R G B ಅಲ್ಲ, ಆದರೆ B G R). ಹಲವಾರು ದಿನಗಳವರೆಗೆ ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ಏಕೆ ಪ್ರದರ್ಶಿಸಲಾಗಿಲ್ಲ ಎಂದು ನನಗೆ ಅರ್ಥವಾಗಲಿಲ್ಲ!? ಕೊನೆಯಲ್ಲಿ, 16 ಬಣ್ಣದ ಸ್ಥಿರಾಂಕಗಳ ಮೌಲ್ಯಗಳನ್ನು 0...15 ರಿಂದ ಅವುಗಳ RGB ಸಮಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ನಾನು ಮರೆತಿದ್ದೇನೆ ಎಂದು ನಾನು ಅರಿತುಕೊಂಡೆ. ಪರಿಣಾಮವಾಗಿ, ನಾನು ಅದನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದ್ದೇನೆ ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಗ್ರೇಡಿಯಂಟ್ ಹಿನ್ನೆಲೆಯನ್ನು ಕಡಿತಗೊಳಿಸಿದೆ. ನಂತರ ನಾನು ಕನ್ಸೋಲ್, 2 ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಮಾಡಿದ್ದೇನೆ ಮತ್ತು 1.2 ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದ್ದೇನೆ. ಓಹ್, ನಾನು ಬಹುತೇಕ ಮರೆತಿದ್ದೇನೆ - ನೀವು OS ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು

ಅಸೆಂಬ್ಲರ್

ಅಸೆಂಬ್ಲರ್(ಇಂಗ್ಲಿಷ್ ಅಸೆಂಬ್ಲಿನಿಂದ - ಜೋಡಿಸಿ) - ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಿಂದ ಯಂತ್ರ ಭಾಷಾ ಆಜ್ಞೆಗಳಿಗೆ ಕಂಪೈಲರ್.
ಪ್ರತಿ ಪ್ರೊಸೆಸರ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಮತ್ತು ಪ್ರತಿ OS ಅಥವಾ OS ಕುಟುಂಬಕ್ಕೆ ಅಸೆಂಬ್ಲರ್ ಇದೆ. ಒಂದು ಆರ್ಕಿಟೆಕ್ಚರ್ (ಅಥವಾ ಒಂದು OS ನ ಪರಿಸರದಲ್ಲಿ) ಹೊಂದಿರುವ ಯಂತ್ರಗಳಲ್ಲಿ ಮತ್ತೊಂದು ಟಾರ್ಗೆಟ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅಥವಾ ಇನ್ನೊಂದು OS ಗಾಗಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಜೋಡಿಸಲು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸೂಕ್ತವಾದ ಸ್ವರೂಪದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕೋಡ್ ಅನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುವ "ಕ್ರಾಸ್-ಅಸೆಂಬ್ಲರ್‌ಗಳು" ಸಹ ಇವೆ. ಗುರಿ ವಾಸ್ತುಶಿಲ್ಪ ಅಥವಾ ಗುರಿ ಪರಿಸರದಲ್ಲಿ OS.

x86 ವಾಸ್ತುಶಿಲ್ಪ

DOS ಗಾಗಿ ಅಸೆಂಬ್ಲರ್‌ಗಳು

DOS ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗೆ ಅತ್ಯಂತ ಪ್ರಸಿದ್ಧವಾದ ಅಸೆಂಬ್ಲರ್‌ಗಳೆಂದರೆ ಬೊರ್ಲ್ಯಾಂಡ್ ಟರ್ಬೊ ಅಸೆಂಬ್ಲರ್ (TASM) ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮ್ಯಾಕ್ರೋ ಅಸೆಂಬ್ಲರ್ (MASM). ಸರಳ ಅಸೆಂಬ್ಲರ್ A86 ಸಹ ಒಂದು ಸಮಯದಲ್ಲಿ ಜನಪ್ರಿಯವಾಗಿತ್ತು.
ಆರಂಭದಲ್ಲಿ, ಅವರು ಕೇವಲ 16-ಬಿಟ್ ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸಿದರು (ಇಂಟೆಲ್ 80386 ಪ್ರೊಸೆಸರ್ ಆಗಮನದವರೆಗೆ). TASM ಮತ್ತು MASM ನ ನಂತರದ ಆವೃತ್ತಿಗಳು 32-ಬಿಟ್ ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ, ಹಾಗೆಯೇ ಹೆಚ್ಚು ಆಧುನಿಕ ಪ್ರೊಸೆಸರ್‌ಗಳಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಎಲ್ಲಾ ಸೂಚನೆಗಳು ಮತ್ತು ಆರ್ಕಿಟೆಕ್ಚರ್-ನಿರ್ದಿಷ್ಟ ಸೂಚನಾ ವ್ಯವಸ್ಥೆಗಳು (ಉದಾಹರಣೆಗೆ, MMX, SSE, 3DNow!, ಇತ್ಯಾದಿ) .

ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್

ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂನ ಆಗಮನದೊಂದಿಗೆ, TASM32 ಎಂಬ TASM ವಿಸ್ತರಣೆಯು ಕಾಣಿಸಿಕೊಂಡಿತು, ಇದು ವಿಂಡೋಸ್ ಪರಿಸರದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು. Tasm ನ ಇತ್ತೀಚಿನ ತಿಳಿದಿರುವ ಆವೃತ್ತಿಯು 5.3 ಆಗಿದೆ, ಇದು MMX ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಸ್ತುತ Turbo C++ Explorer ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ. ಆದರೆ ಅಧಿಕೃತವಾಗಿ ಕಾರ್ಯಕ್ರಮದ ಅಭಿವೃದ್ಧಿ ಸಂಪೂರ್ಣವಾಗಿ ನಿಂತುಹೋಗಿದೆ.
ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮ್ಯಾಕ್ರೋ ಅಸೆಂಬ್ಲರ್ ಎಂಬ ಉತ್ಪನ್ನವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. DDK ಗಳಲ್ಲಿ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗಳನ್ನು ಸೇರಿಸುವುದರೊಂದಿಗೆ ಇದು ಇಂದಿಗೂ ಅಭಿವೃದ್ಧಿ ಹೊಂದುತ್ತಿದೆ. ಆದರೆ DOS ಗಾಗಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ರಚಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ ಕಾರ್ಯಕ್ರಮದ ಆವೃತ್ತಿಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿಲ್ಲ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಸ್ಟೀಫನ್ ಹಚೆಸ್ಸನ್ "MASM32" ಎಂಬ MASM ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ರಚಿಸಿದರು.

GNU ಮತ್ತು GNU/Linux

GNU ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ gcc ಕಂಪೈಲರ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ, ಇದರಲ್ಲಿ ಗ್ಯಾಸ್ ಅಸೆಂಬ್ಲರ್ (GNU ಅಸೆಂಬ್ಲರ್) ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು AT&T ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಇಂಟೆಲ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸುವ ಇತರ ಜನಪ್ರಿಯ ಅಸೆಂಬ್ಲರ್‌ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿದೆ.

ಪೋರ್ಟಬಲ್ ಅಸೆಂಬ್ಲರ್‌ಗಳು

ಓಪನ್ ಸೋರ್ಸ್ ಅಸೆಂಬ್ಲರ್ ಪ್ರಾಜೆಕ್ಟ್ ಕೂಡ ಇದೆ, ಅದರ ಆವೃತ್ತಿಗಳು ವಿವಿಧ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ ಲಭ್ಯವಿದೆ ಮತ್ತು ಈ ಸಿಸ್ಟಮ್‌ಗಳಿಗಾಗಿ ಆಬ್ಜೆಕ್ಟ್ ಫೈಲ್‌ಗಳನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ಜೋಡಣೆಯನ್ನು NASM (ನೆಟ್‌ವೈಡ್ ಅಸೆಂಬ್ಲರ್) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
YASM ಎಂಬುದು BSD ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ NASM ನ ಪುನಃ ಬರೆಯಲ್ಪಟ್ಟ ಆವೃತ್ತಿಯಾಗಿದೆ (ಕೆಲವು ವಿನಾಯಿತಿಗಳೊಂದಿಗೆ).
FASM (ಫ್ಲಾಟ್ ಅಸೆಂಬ್ಲರ್) ಒಂದು ಯುವ ಅಸೆಂಬ್ಲರ್ ಆಗಿದ್ದು, BSD ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಮರುಪರಿಶೀಲನೆಯನ್ನು ನಿಷೇಧಿಸಲು ಮಾರ್ಪಡಿಸಲಾಗಿದೆ (GNU GPL ಅಡಿಯಲ್ಲಿ ಸೇರಿದಂತೆ). KolibriOS, GNU/Linux, MS-DOS ಮತ್ತು Microsoft Windows ಗಾಗಿ ಆವೃತ್ತಿಗಳಿವೆ, ಇಂಟೆಲ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು AMD64 ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

RISC ಆರ್ಕಿಟೆಕ್ಚರ್ಸ್


MCS-51
AVR
ಈ ಸಮಯದಲ್ಲಿ Atmel (AVRStudio 3 ಮತ್ತು AVRStudio4) ನಿರ್ಮಿಸಿದ 2 ಕಂಪೈಲರ್‌ಗಳಿವೆ. ಎರಡನೆಯ ಆವೃತ್ತಿಯು ಹೆಚ್ಚು ಯಶಸ್ವಿಯಾಗದ ಮೊದಲನೆಯದನ್ನು ಸರಿಪಡಿಸುವ ಪ್ರಯತ್ನವಾಗಿದೆ. WinAVR ನಲ್ಲಿ ಅಸೆಂಬ್ಲರ್ ಅನ್ನು ಸಹ ಸೇರಿಸಲಾಗಿದೆ.
ARM
AVR32
MSP430
PowerPC

ಅಸೆಂಬ್ಲಿ ಮತ್ತು ಕಂಪೈಲಿಂಗ್

ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಆಬ್ಜೆಕ್ಟ್ ಕೋಡ್‌ಗೆ ಭಾಷಾಂತರಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಅಸೆಂಬ್ಲಿ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಂಪೈಲಿಂಗ್‌ಗಿಂತ ಭಿನ್ನವಾಗಿ, ಅಸೆಂಬ್ಲಿ ಹೆಚ್ಚು ಅಥವಾ ಕಡಿಮೆ ನಿಸ್ಸಂದಿಗ್ಧವಾದ ಮತ್ತು ಹಿಂತಿರುಗಿಸಬಹುದಾದ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ, ಪ್ರತಿ ಜ್ಞಾಪಕವು ಒಂದು ಯಂತ್ರ ಸೂಚನೆಗೆ ಅನುರೂಪವಾಗಿದೆ, ಆದರೆ ಉನ್ನತ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಪ್ರತಿ ಅಭಿವ್ಯಕ್ತಿಯು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ವಿವಿಧ ಸೂಚನೆಗಳನ್ನು ಮರೆಮಾಡಬಹುದು. ತಾತ್ವಿಕವಾಗಿ, ಈ ವಿಭಾಗವು ಸಾಕಷ್ಟು ಅನಿಯಂತ್ರಿತವಾಗಿದೆ, ಆದ್ದರಿಂದ ಕೆಲವೊಮ್ಮೆ ಅಸೆಂಬ್ಲಿ ಕಾರ್ಯಕ್ರಮಗಳ ಅನುವಾದವನ್ನು ಸಂಕಲನ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.

ಅಸೆಂಬ್ಲಿ ಭಾಷೆ

ಅಸೆಂಬ್ಲಿ ಭಾಷೆ- ಕಡಿಮೆ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಒಂದು ವಿಧ, ಇದು ಮಾನವ ಗ್ರಹಿಕೆಗೆ ಅನುಕೂಲಕರವಾದ ಯಂತ್ರ ಆಜ್ಞೆಗಳನ್ನು ರೆಕಾರ್ಡಿಂಗ್ ಮಾಡುವ ಒಂದು ಸ್ವರೂಪವಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ, ಸಂಕ್ಷಿಪ್ತತೆಗಾಗಿ, ಇದನ್ನು ಸರಳವಾಗಿ ಅಸೆಂಬ್ಲರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಅದು ನಿಜವಲ್ಲ.

ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯ ಆಜ್ಞೆಗಳು ಪ್ರೊಸೆಸರ್ ಕಮಾಂಡ್‌ಗಳಿಗೆ ಒಂದರಿಂದ ಒಂದಕ್ಕೆ ಸಂಬಂಧಿಸಿವೆ ಮತ್ತು ವಾಸ್ತವವಾಗಿ, ರೆಕಾರ್ಡಿಂಗ್ (ಜ್ಞಾಪಕ ಸಂಕೇತ) ಕಮಾಂಡ್‌ಗಳು ಮತ್ತು ಅವುಗಳ ವಾದಗಳ ಅನುಕೂಲಕರ ಸಾಂಕೇತಿಕ ರೂಪವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಅಸೆಂಬ್ಲಿ ಭಾಷೆ ಮೂಲಭೂತ ಸಾಫ್ಟ್‌ವೇರ್ ಸಾರಾಂಶಗಳನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ: ಸಾಂಕೇತಿಕ ಹೆಸರುಗಳೊಂದಿಗೆ ಲೇಬಲ್‌ಗಳ ಮೂಲಕ ಪ್ರೋಗ್ರಾಂ ಭಾಗಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಲಿಂಕ್ ಮಾಡುವುದು (ಜೋಡಣೆಯ ಸಮಯದಲ್ಲಿ, ಪ್ರತಿ ಲೇಬಲ್‌ಗೆ ವಿಳಾಸವನ್ನು ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ, ಅದರ ನಂತರ ಲೇಬಲ್‌ನ ಪ್ರತಿಯೊಂದು ಸಂಭವವನ್ನು ಈ ವಿಳಾಸದಿಂದ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ) ಮತ್ತು ನಿರ್ದೇಶನಗಳು.
ಅಸೆಂಬ್ಲಿ ನಿರ್ದೇಶನಗಳು ನಿಮಗೆ ಡೇಟಾದ ಬ್ಲಾಕ್‌ಗಳನ್ನು (ಸ್ಪಷ್ಟವಾಗಿ ವಿವರಿಸಲಾಗಿದೆ ಅಥವಾ ಫೈಲ್‌ನಿಂದ ಓದಲಾಗಿದೆ) ಪ್ರೋಗ್ರಾಂಗೆ ಸೇರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ; ಒಂದು ನಿರ್ದಿಷ್ಟ ತುಣುಕನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಬಾರಿ ಪುನರಾವರ್ತಿಸಿ; ಸ್ಥಿತಿಯ ಪ್ರಕಾರ ತುಣುಕನ್ನು ಕಂಪೈಲ್ ಮಾಡಿ; ಸ್ಮೃತಿ ಸ್ಥಳದ ವಿಳಾಸದಿಂದ ಭಿನ್ನವಾದ ಚೂರು ಎಕ್ಸಿಕ್ಯೂಶನ್ ವಿಳಾಸವನ್ನು ಹೊಂದಿಸಿ[ಸೂಚಿಸಿ!]; ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ ಲೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಿ; ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಮ್ಯಾಕ್ರೋ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ಬಳಸಿ, ಇತ್ಯಾದಿ.
ಪ್ರತಿಯೊಂದು ಪ್ರೊಸೆಸರ್ ಮಾದರಿಯು ತಾತ್ವಿಕವಾಗಿ ತನ್ನದೇ ಆದ ಸೂಚನೆಗಳನ್ನು ಮತ್ತು ಅನುಗುಣವಾದ ಅಸೆಂಬ್ಲಿ ಭಾಷೆ (ಅಥವಾ ಉಪಭಾಷೆ) ಹೊಂದಿದೆ.

ಅನುಕೂಲ ಹಾಗೂ ಅನಾನುಕೂಲಗಳು

ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯ ಪ್ರಯೋಜನಗಳು

ಕನಿಷ್ಠ ಅನಗತ್ಯ ಕೋಡ್, ಅಂದರೆ, ಕಡಿಮೆ ಸೂಚನೆಗಳು ಮತ್ತು ಮೆಮೊರಿ ಪ್ರವೇಶಗಳ ಬಳಕೆ, ವೇಗವನ್ನು ಹೆಚ್ಚಿಸಲು ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
ಅಪೇಕ್ಷಿತ ವೇದಿಕೆಯ ಸಾಮರ್ಥ್ಯಗಳ ಸಂಪೂರ್ಣ ಹೊಂದಾಣಿಕೆ ಮತ್ತು ಗರಿಷ್ಠ ಬಳಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು: ಈ ವೇದಿಕೆಯ ವಿಶೇಷ ಸೂಚನೆಗಳು ಮತ್ತು ತಾಂತ್ರಿಕ ವೈಶಿಷ್ಟ್ಯಗಳ ಬಳಕೆ.
ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡುವಾಗ, ವಿಶೇಷ ಸಾಮರ್ಥ್ಯಗಳು ಲಭ್ಯವಾಗುತ್ತವೆ: ಹಾರ್ಡ್‌ವೇರ್, ಇನ್‌ಪುಟ್/ಔಟ್‌ಪುಟ್ ಪೋರ್ಟ್‌ಗಳು ಮತ್ತು ವಿಶೇಷ ಪ್ರೊಸೆಸರ್ ರೆಜಿಸ್ಟರ್‌ಗಳಿಗೆ ನೇರ ಪ್ರವೇಶ, ಹಾಗೆಯೇ ಸ್ವಯಂ-ಮಾರ್ಪಡಿಸುವ ಕೋಡ್ ಅನ್ನು ಬರೆಯುವ ಸಾಮರ್ಥ್ಯ (ಅಂದರೆ, ಸಾಫ್ಟ್‌ವೇರ್ ಇಂಟರ್ಪ್ರಿಟರ್ ಅಗತ್ಯವಿಲ್ಲದೇ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್) .
ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂಗಳಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಇತ್ತೀಚಿನ ಭದ್ರತಾ ತಂತ್ರಜ್ಞಾನಗಳು ಸ್ವಯಂ-ಮಾರ್ಪಡಿಸುವ ಕೋಡ್ ಅನ್ನು ರಚಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಅವುಗಳು ಒಂದೇ ಮೆಮೊರಿ ಪ್ರದೇಶದಲ್ಲಿ ಸೂಚನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮತ್ತು ಬರೆಯುವ ಏಕಕಾಲಿಕ ಸಾಧ್ಯತೆಯನ್ನು ಹೊರತುಪಡಿಸುತ್ತವೆ (BSD ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ W^X ತಂತ್ರಜ್ಞಾನ, ವಿಂಡೋಸ್‌ನಲ್ಲಿ DEP).

ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯ ಅನಾನುಕೂಲಗಳು

ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕೋಡ್ ಮತ್ತು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಹೆಚ್ಚುವರಿ ಸಣ್ಣ ಕಾರ್ಯಗಳು, ಇದು ಕೋಡ್ ಅನ್ನು ಓದಲು ಮತ್ತು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ತುಂಬಾ ಕಷ್ಟಕರವಾಗುತ್ತದೆ ಎಂಬ ಅಂಶಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಪ್ರೋಗ್ರಾಂನ ಡೀಬಗ್ ಮಾಡುವುದು ಮತ್ತು ಮಾರ್ಪಾಡು ಮಾಡುವುದು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗುತ್ತದೆ, ಜೊತೆಗೆ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕಷ್ಟವಾಗುತ್ತದೆ. ಮತ್ತು ಯಾವುದೇ ಇತರ ಸಂಪ್ರದಾಯಗಳು. ಇದು ಜಂಟಿ ಅಭಿವೃದ್ಧಿಯ ಸಂಕೀರ್ಣತೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಲಭ್ಯವಿರುವ ಗ್ರಂಥಾಲಯಗಳ ಸಂಖ್ಯೆ ಕಡಿಮೆ, ಪರಸ್ಪರ ಕಡಿಮೆ ಹೊಂದಾಣಿಕೆ.
ಇತರ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಿಗೆ ಪೋರ್ಟಬಲ್ ಅಲ್ಲ (ಬೈನರಿ ಹೊಂದಾಣಿಕೆಯ ಪದಗಳಿಗಿಂತ).

ಅಪ್ಲಿಕೇಶನ್

ಅನುಕೂಲಗಳು ಮತ್ತು ಅನಾನುಕೂಲಗಳನ್ನು ನೇರವಾಗಿ ಅನುಸರಿಸುತ್ತದೆ.
ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ದೊಡ್ಡ ಕಾರ್ಯಕ್ರಮಗಳು ಬರೆಯಲು ಅತ್ಯಂತ ಅನಾನುಕೂಲವಾಗಿರುವುದರಿಂದ, ಅವುಗಳನ್ನು ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಲ್ಲಿ ಬರೆಯಲಾಗುತ್ತದೆ. ಅಸೆಂಬ್ಲರ್‌ನಲ್ಲಿ, ಸಣ್ಣ ತುಣುಕುಗಳು ಅಥವಾ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬರೆಯಲಾಗುತ್ತದೆ, ಇದಕ್ಕಾಗಿ ಈ ಕೆಳಗಿನವುಗಳು ನಿರ್ಣಾಯಕವಾಗಿವೆ:
ಕಾರ್ಯಕ್ಷಮತೆ (ಚಾಲಕರು);
ಕೋಡ್ ಗಾತ್ರ (ಬೂಟ್ ಸೆಕ್ಟರ್‌ಗಳು, ಮೈಕ್ರೋಕಂಟ್ರೋಲರ್‌ಗಳಿಗೆ ಸಾಫ್ಟ್‌ವೇರ್ ಮತ್ತು ಸೀಮಿತ ಸಂಪನ್ಮೂಲಗಳೊಂದಿಗೆ ಪ್ರೊಸೆಸರ್‌ಗಳು, ವೈರಸ್‌ಗಳು, ಸಾಫ್ಟ್‌ವೇರ್ ರಕ್ಷಣೆ);
ವಿಶೇಷ ಸಾಮರ್ಥ್ಯಗಳು: ಹಾರ್ಡ್‌ವೇರ್ ಅಥವಾ ಯಂತ್ರ ಕೋಡ್‌ನೊಂದಿಗೆ ನೇರವಾಗಿ ಕೆಲಸ ಮಾಡುವುದು, ಅಂದರೆ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಲೋಡರ್‌ಗಳು, ಡ್ರೈವರ್‌ಗಳು, ವೈರಸ್‌ಗಳು, ಭದ್ರತಾ ವ್ಯವಸ್ಥೆಗಳು.

ಅಸೆಂಬ್ಲಿ ಕೋಡ್ ಅನ್ನು ಇತರ ಭಾಷೆಗಳಿಗೆ ಲಿಂಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ

ಪ್ರೋಗ್ರಾಂನ ತುಣುಕುಗಳನ್ನು ಮಾತ್ರ ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಲಾಗಿರುವುದರಿಂದ, ಅವುಗಳನ್ನು ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಇತರ ಭಾಗಗಳಿಗೆ ಲಿಂಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಇದನ್ನು 2 ಮುಖ್ಯ ವಿಧಾನಗಳಲ್ಲಿ ಸಾಧಿಸಲಾಗುತ್ತದೆ:
ಸಂಕಲನ ಹಂತದಲ್ಲಿ- ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯುವ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ವಿಶೇಷ ಭಾಷಾ ನಿರ್ದೇಶನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂಗೆ ಅಸೆಂಬ್ಲರ್ ತುಣುಕುಗಳ (ಇನ್ಲೈನ್ ​​ಅಸೆಂಬ್ಲರ್) ಅಳವಡಿಕೆ. ಸರಳವಾದ ಡೇಟಾ ರೂಪಾಂತರಗಳಿಗೆ ವಿಧಾನವು ಅನುಕೂಲಕರವಾಗಿದೆ, ಆದರೆ ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಿಂದ ಬೆಂಬಲಿತವಾಗಿಲ್ಲದ ಅನೇಕ ಇನ್‌ಪುಟ್‌ಗಳು ಮತ್ತು ಔಟ್‌ಪುಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಸಬ್‌ರುಟೀನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಡೇಟಾ ಮತ್ತು ಸಬ್‌ರುಟೀನ್‌ಗಳೊಂದಿಗೆ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಅಸೆಂಬ್ಲಿ ಕೋಡ್ ಅನ್ನು ರಚಿಸಲಾಗುವುದಿಲ್ಲ.
ಲೇಔಟ್ ಹಂತದಲ್ಲಿ, ಅಥವಾ ಪ್ರತ್ಯೇಕ ಸಂಕಲನ. ಜೋಡಿಸಲಾದ ಮಾಡ್ಯೂಲ್‌ಗಳು ಸಂವಹನ ನಡೆಸಲು, ಸಂಪರ್ಕಿಸುವ ಕಾರ್ಯಗಳು ಅಗತ್ಯವಿರುವ ಕರೆ ಸಂಪ್ರದಾಯಗಳು ಮತ್ತು ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಬೆಂಬಲಿಸಿದರೆ ಸಾಕು. ಅಸೆಂಬ್ಲಿ ಭಾಷೆ ಸೇರಿದಂತೆ ಯಾವುದೇ ಭಾಷೆಯಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬರೆಯಬಹುದು.

ಸಿಂಟ್ಯಾಕ್ಸ್

ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್‌ಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಅಂಗೀಕರಿಸಲ್ಪಟ್ಟ ಯಾವುದೇ ಮಾನದಂಡವಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಹೆಚ್ಚಿನ ಅಸೆಂಬ್ಲಿ ಭಾಷಾ ಅಭಿವರ್ಧಕರು ಅನುಸರಿಸುವ ಮಾನದಂಡಗಳಿವೆ. ಅಂತಹ ಪ್ರಮುಖ ಮಾನದಂಡಗಳೆಂದರೆ ಇಂಟೆಲ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು AT&T ಸಿಂಟ್ಯಾಕ್ಸ್.

ಸೂಚನೆಗಳು

ರೆಕಾರ್ಡಿಂಗ್ ಸೂಚನೆಗಳ ಸಾಮಾನ್ಯ ಸ್ವರೂಪವು ಎರಡೂ ಮಾನದಂಡಗಳಿಗೆ ಒಂದೇ ಆಗಿರುತ್ತದೆ:

[ಲೇಬಲ್:] ಆಪ್‌ಕೋಡ್ [ಒಪೆರಾಂಡ್‌ಗಳು] [;ಕಾಮೆಂಟ್]

ಅಲ್ಲಿ opcode ಪ್ರೊಸೆಸರ್‌ಗೆ ಸೂಚನೆಗಳ ನೇರ ಜ್ಞಾಪಕವಾಗಿದೆ. ಇದಕ್ಕೆ ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಸೇರಿಸಬಹುದು (ಪುನರಾವರ್ತನೆಗಳು, ವಿಳಾಸ ಪ್ರಕಾರದಲ್ಲಿನ ಬದಲಾವಣೆಗಳು, ಇತ್ಯಾದಿ).
ಒಪೆರಾಂಡ್‌ಗಳು ಸ್ಥಿರಾಂಕಗಳಾಗಿರಬಹುದು, ರಿಜಿಸ್ಟರ್ ಹೆಸರುಗಳು, RAM ನಲ್ಲಿ ವಿಳಾಸಗಳು, ಇತ್ಯಾದಿ. Intel ಮತ್ತು AT&T ಮಾನದಂಡಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳು ಮುಖ್ಯವಾಗಿ ಆಪರೇಂಡ್‌ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಲಾದ ಕ್ರಮ ಮತ್ತು ವಿಭಿನ್ನ ವಿಳಾಸ ವಿಧಾನಗಳಿಗಾಗಿ ಅವುಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್‌ಗೆ ಸಂಬಂಧಿಸಿವೆ.
ಬಳಸಿದ ಜ್ಞಾಪಕಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದೇ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅಥವಾ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳ ಕುಟುಂಬದ ಎಲ್ಲಾ ಪ್ರೊಸೆಸರ್‌ಗಳಿಗೆ ಒಂದೇ ಆಗಿರುತ್ತವೆ (ಮೊಟೊರೊಲಾ, ARM, x86 ಪ್ರೊಸೆಸರ್‌ಗಳು ಮತ್ತು ನಿಯಂತ್ರಕಗಳಿಗೆ ವ್ಯಾಪಕವಾಗಿ ತಿಳಿದಿರುವ ಜ್ಞಾಪಕಗಳು). ಅವುಗಳನ್ನು ಪ್ರೊಸೆಸರ್ ವಿಶೇಷಣಗಳಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ. ಸಂಭವನೀಯ ವಿನಾಯಿತಿಗಳು:
ಅಸೆಂಬ್ಲರ್ ಕ್ರಾಸ್-ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ AT&T ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸಿದರೆ (ಮೂಲ ಜ್ಞಾಪಕವನ್ನು AT&T ಸಿಂಟ್ಯಾಕ್ಸ್‌ಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ)
ಆರಂಭದಲ್ಲಿ ಜ್ಞಾಪಕವನ್ನು ರೆಕಾರ್ಡಿಂಗ್ ಮಾಡಲು ಎರಡು ಮಾನದಂಡಗಳಿದ್ದರೆ (ಕಮಾಂಡ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಮತ್ತೊಂದು ತಯಾರಕರಿಂದ ಪ್ರೊಸೆಸರ್ನಿಂದ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯಲಾಗಿದೆ).
ಉದಾಹರಣೆಗೆ, Zilog Z80 ಪ್ರೊಸೆಸರ್ ಇಂಟೆಲ್ i8080 ಸೂಚನಾ ವ್ಯವಸ್ಥೆಯನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆದುಕೊಂಡಿತು, ಅದನ್ನು ವಿಸ್ತರಿಸಿತು ಮತ್ತು ಜ್ಞಾಪಕಶಾಸ್ತ್ರವನ್ನು (ಮತ್ತು ನೋಂದಣಿ ಪದನಾಮಗಳನ್ನು) ತನ್ನದೇ ಆದ ರೀತಿಯಲ್ಲಿ ಬದಲಾಯಿಸಿತು. ಉದಾಹರಣೆಗೆ, ನಾನು Intel ನ mov ಅನ್ನು ld ಗೆ ಬದಲಾಯಿಸಿದ್ದೇನೆ. ಮೊಟೊರೊಲಾ ಫೈರ್‌ಬಾಲ್ ಪ್ರೊಸೆಸರ್‌ಗಳು Z80 ಸೂಚನಾ ವ್ಯವಸ್ಥೆಯನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆದುಕೊಂಡವು, ಅದನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಕಡಿತಗೊಳಿಸಿತು. ಅದೇ ಸಮಯದಲ್ಲಿ, ಮೊಟೊರೊಲಾ ಅಧಿಕೃತವಾಗಿ ಇಂಟೆಲ್ ಜ್ಞಾಪಕಶಾಸ್ತ್ರಕ್ಕೆ ಮರಳಿದೆ. ಮತ್ತು ಈ ಸಮಯದಲ್ಲಿ, ಫೈರ್‌ಬಾಲ್‌ಗಾಗಿ ಅರ್ಧದಷ್ಟು ಅಸೆಂಬ್ಲರ್‌ಗಳು ಇಂಟೆಲ್ ಜ್ಞಾಪಕಶಾಸ್ತ್ರದೊಂದಿಗೆ ಮತ್ತು ಅರ್ಧದಷ್ಟು ಜಿಲೋಗ್ ಜ್ಞಾಪಕಶಾಸ್ತ್ರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಾರೆ.

ನಿರ್ದೇಶನಗಳು

ಸೂಚನೆಗಳ ಜೊತೆಗೆ, ಪ್ರೋಗ್ರಾಂ ನಿರ್ದೇಶನಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು: ಯಂತ್ರ ಸೂಚನೆಗಳಿಗೆ ನೇರವಾಗಿ ಅನುವಾದಿಸದ ಆಜ್ಞೆಗಳು, ಆದರೆ ಕಂಪೈಲರ್ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ. ಅವುಗಳ ಸೆಟ್ ಮತ್ತು ಸಿಂಟ್ಯಾಕ್ಸ್ ಗಮನಾರ್ಹವಾಗಿ ಬದಲಾಗುತ್ತವೆ ಮತ್ತು ಹಾರ್ಡ್‌ವೇರ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನ ಮೇಲೆ ಅಲ್ಲ, ಆದರೆ ಬಳಸಿದ ಕಂಪೈಲರ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ (ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳ ಒಂದೇ ಕುಟುಂಬದೊಳಗೆ ಭಾಷೆಗಳ ಉಪಭಾಷೆಗಳನ್ನು ರಚಿಸುವುದು). ನಿರ್ದೇಶನಗಳ "ಸಂಭಾವಿತ ಸೆಟ್" ಆಗಿ, ನಾವು ಹೈಲೈಟ್ ಮಾಡಬಹುದು:
ಡೇಟಾದ ವ್ಯಾಖ್ಯಾನ (ಸ್ಥಿರಗಳು ಮತ್ತು ಅಸ್ಥಿರ)
ಮೆಮೊರಿ ಮತ್ತು ಔಟ್‌ಪುಟ್ ಫೈಲ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಲ್ಲಿ ಪ್ರೋಗ್ರಾಂ ಸಂಘಟನೆಯನ್ನು ನಿರ್ವಹಿಸುವುದು
ಕಂಪೈಲರ್ ಆಪರೇಟಿಂಗ್ ಮೋಡ್ ಅನ್ನು ಹೊಂದಿಸುವುದು
ಎಲ್ಲಾ ರೀತಿಯ ಅಮೂರ್ತತೆಗಳು (ಅಂದರೆ ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳ ಅಂಶಗಳು) - ಕಾರ್ಯವಿಧಾನಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ವಿನ್ಯಾಸದಿಂದ (ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯ ಅನುಷ್ಠಾನವನ್ನು ಸರಳೀಕರಿಸಲು) ಷರತ್ತುಬದ್ಧ ರಚನೆಗಳು ಮತ್ತು ಲೂಪ್‌ಗಳವರೆಗೆ (ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಾಗಿ)
ಮ್ಯಾಕ್ರೋಗಳು

ಉದಾಹರಣೆ ಕಾರ್ಯಕ್ರಮ

TASM ಉಪಭಾಷೆಯಲ್ಲಿ x86 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಾಗಿ MS-DOS ಗಾಗಿ ಹಲೋ ವರ್ಲ್ಡ್ ಪ್ರೋಗ್ರಾಂನ ಉದಾಹರಣೆ:

.ಮಾಡೆಲ್ ಸಣ್ಣ ಕೋಡ್ ಸೆಗ್ಮೆಂಟ್ ಊಹಿಸಿ CS:ಕೋಡ್, ಡಿಎಸ್:ಕೋಡ್ ORG 100ಗಂ START: mov ah,9 mov dx,OFFSET Msg int 21h int 20h Msg DB "ಹಲೋ ವರ್ಲ್ಡ್",13,10,"$" ಕೊನೆಯಲ್ಲಿ ಕೋಡ್ ಅಂತ್ಯ

"ಅಸೆಂಬ್ಲಿ ಭಾಷೆ" ಪದದ ಮೂಲ ಮತ್ತು ಟೀಕೆ

ಈ ರೀತಿಯ ಭಾಷೆಯು ಈ ಭಾಷೆಗಳಿಂದ ಅನುವಾದಕ (ಕಂಪೈಲರ್) ಹೆಸರಿನಿಂದ ತನ್ನ ಹೆಸರನ್ನು ಪಡೆದುಕೊಂಡಿದೆ - ಅಸೆಂಬ್ಲರ್ (ಇಂಗ್ಲಿಷ್ ಅಸೆಂಬ್ಲರ್). ಮೊದಲ ಕಂಪ್ಯೂಟರ್‌ಗಳಲ್ಲಿ ಯಾವುದೇ ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳು ಇರಲಿಲ್ಲ ಮತ್ತು ಅಸೆಂಬ್ಲರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ರಚಿಸುವ ಏಕೈಕ ಪರ್ಯಾಯವೆಂದರೆ ಕೋಡ್‌ಗಳಲ್ಲಿ ನೇರವಾಗಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಆಗಿರುವುದರಿಂದ ನಂತರದ ಹೆಸರು.
ರಷ್ಯನ್ ಭಾಷೆಯಲ್ಲಿ ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯನ್ನು ಹೆಚ್ಚಾಗಿ "ಅಸೆಂಬ್ಲರ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ (ಮತ್ತು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಏನಾದರೂ - "ಅಸೆಂಬ್ಲರ್"), ಇದು ಪದದ ಇಂಗ್ಲಿಷ್ ಅನುವಾದದ ಪ್ರಕಾರ ತಪ್ಪಾಗಿದೆ, ಆದರೆ ರಷ್ಯಾದ ಭಾಷೆಯ ನಿಯಮಗಳಿಗೆ ಸರಿಹೊಂದುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಅಸೆಂಬ್ಲರ್ ಅನ್ನು (ಪ್ರೋಗ್ರಾಂ) ಸರಳವಾಗಿ "ಅಸೆಂಬ್ಲರ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು "ಅಸೆಂಬ್ಲಿ ಲಾಂಗ್ವೇಜ್ ಕಂಪೈಲರ್" ಅಲ್ಲ, ಇತ್ಯಾದಿ.
"ಅಸೆಂಬ್ಲಿ ಭಾಷೆ" ಎಂಬ ಪದದ ಬಳಕೆಯು ಒಂದೇ ಕೆಳಮಟ್ಟದ ಭಾಷೆ ಅಥವಾ ಅಂತಹ ಭಾಷೆಗಳಿಗೆ ಕನಿಷ್ಠ ಮಾನದಂಡವಿದೆ ಎಂಬ ತಪ್ಪು ಕಲ್ಪನೆಗೆ ಕಾರಣವಾಗಬಹುದು. ನಿರ್ದಿಷ್ಟ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಬರೆಯಲಾದ ಭಾಷೆಯನ್ನು ಹೆಸರಿಸುವಾಗ, ಅದು ಯಾವ ವಾಸ್ತುಶಿಲ್ಪಕ್ಕೆ ಉದ್ದೇಶಿಸಲಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ಬರೆಯಲಾದ ಭಾಷೆಯ ಯಾವ ಉಪಭಾಷೆಯನ್ನು ಸ್ಪಷ್ಟಪಡಿಸಲು ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ.

ಇಂದು ನಮ್ಮ ಕುತೂಹಲಗಳ ಕ್ಯಾಬಿನೆಟ್ನಲ್ಲಿ ಒಂದು ಕುತೂಹಲಕಾರಿ ಉದಾಹರಣೆ ಇದೆ - ಶುದ್ಧ ಅಸೆಂಬ್ಲರ್ನಲ್ಲಿ ಬರೆಯಲಾದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್. ಡ್ರೈವರ್‌ಗಳು, ಗ್ರಾಫಿಕಲ್ ಶೆಲ್, ಡಜನ್ಗಟ್ಟಲೆ ಪೂರ್ವ-ಸ್ಥಾಪಿತ ಪ್ರೋಗ್ರಾಂಗಳು ಮತ್ತು ಆಟಗಳೊಂದಿಗೆ, ಇದು ಒಂದೂವರೆ ಮೆಗಾಬೈಟ್‌ಗಳಿಗಿಂತ ಕಡಿಮೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಅಸಾಧಾರಣವಾದ ವೇಗದ ಮತ್ತು ಪ್ರಧಾನವಾಗಿ ರಷ್ಯಾದ ಓಎಸ್ "ಹಮ್ಮಿಂಗ್ಬರ್ಡ್" ಅನ್ನು ಭೇಟಿ ಮಾಡಿ.

"ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" ನ ಅಭಿವೃದ್ಧಿಯು 2009 ರವರೆಗೆ ಸಾಕಷ್ಟು ವೇಗವಾಗಿ ಮುಂದುವರೆಯಿತು. ಹಕ್ಕಿಯು ವಿಭಿನ್ನ ಯಂತ್ರಾಂಶಗಳಲ್ಲಿ ಹಾರಲು ಕಲಿತಿದ್ದು, ಕನಿಷ್ಟ ಮೊದಲ ಪೆಂಟಿಯಮ್ ಮತ್ತು ಎಂಟು ಮೆಗಾಬೈಟ್ RAM ಅಗತ್ಯವಿರುತ್ತದೆ. ಹಮ್ಮಿಂಗ್‌ಬರ್ಡ್‌ಗೆ ಕನಿಷ್ಠ ಸಿಸ್ಟಮ್ ಅವಶ್ಯಕತೆಗಳು:

  • CPU: ಪೆಂಟಿಯಮ್, AMD 5x86 ಅಥವಾ 100 MHz ಆವರ್ತನದೊಂದಿಗೆ MMX ಇಲ್ಲದೆ ಸಿರಿಕ್ಸ್ 5x86;
  • RAM: 8 MB;
  • ವೀಡಿಯೊ ಕಾರ್ಡ್: VGA ಮೋಡ್‌ಗೆ ಬೆಂಬಲದೊಂದಿಗೆ VESA-ಹೊಂದಾಣಿಕೆ (640 × 480 × 16).

ಆಧುನಿಕ "ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" 2009 ರ ಕೊನೆಯಲ್ಲಿ ಬಿಡುಗಡೆಯಾದ ಇತ್ತೀಚಿನ ಅಧಿಕೃತ ಆವೃತ್ತಿಯ ನಿಯಮಿತವಾಗಿ ನವೀಕರಿಸಿದ "ನೈಟ್ಲಿ ಬಿಲ್ಡ್" ಆಗಿದೆ. ನಾವು ಆಗಸ್ಟ್ 20, 2017 ರಂದು ನಿರ್ಮಿಸಲು 0.7.7.0+ ಅನ್ನು ಪರೀಕ್ಷಿಸಿದ್ದೇವೆ.

ಎಚ್ಚರಿಕೆ

ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ, BIOS ಮೂಲಕ ಗೋಚರಿಸುವ ಡಿಸ್ಕ್‌ಗಳಿಗೆ KolibriOS ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲು ಎಚ್ಚರಿಕೆಯಿಂದ ಯೋಚಿಸಿ ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡಿ.

ರಾತ್ರಿಯ ನಿರ್ಮಾಣಗಳಲ್ಲಿನ ಬದಲಾವಣೆಗಳು, ಚಿಕ್ಕದಾಗಿದ್ದರೂ, ವರ್ಷಗಳಲ್ಲಿ ಸಾಕಷ್ಟು ಸಂಗ್ರಹವಾಗಿದೆ. ನವೀಕರಿಸಿದ "ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" FAT16–32 / ext2 - ext4 ವಿಭಾಗಗಳಿಗೆ ಬರೆಯಬಹುದು ಮತ್ತು ಓದುವ ಕ್ರಮದಲ್ಲಿ ಇತರ ಜನಪ್ರಿಯ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು (NTFS, XFS, ISO-9660) ಬೆಂಬಲಿಸುತ್ತದೆ. ಇದು USB ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಕಾರ್ಡ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿತು ಮತ್ತು TCP/IP ಸ್ಟಾಕ್ ಮತ್ತು ಆಡಿಯೊ ಕೊಡೆಕ್‌ಗಳನ್ನು ಸೇರಿಸಿತು. ಸಾಮಾನ್ಯವಾಗಿ, ನೀವು ಈಗಾಗಲೇ ಅದರಲ್ಲಿ ಏನನ್ನಾದರೂ ಮಾಡಬಹುದು, ಮತ್ತು GUI ನೊಂದಿಗೆ ಅಲ್ಟ್ರಾ-ಲೈಟ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಒಮ್ಮೆ ನೋಡಬೇಡಿ ಮತ್ತು ಉಡಾವಣಾ ವೇಗದಿಂದ ಪ್ರಭಾವಿತರಾಗಿರಿ.



ಹಿಂದಿನ ಆವೃತ್ತಿಗಳಂತೆ, ಇತ್ತೀಚಿನ "ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" ಅನ್ನು ಫ್ಲಾಟ್ ಅಸೆಂಬ್ಲರ್ (FASM) ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು ಒಂದು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್ ಅನ್ನು ಆಕ್ರಮಿಸುತ್ತದೆ - 1.44 MB. ಇದಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ಇದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲವು ವಿಶೇಷ ಮೆಮೊರಿಯಲ್ಲಿ ಇರಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕುಶಲಕರ್ಮಿಗಳು KolibriOS ಅನ್ನು ನೇರವಾಗಿ Flash BIOS ಗೆ ಬರೆದರು. ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ, ಅದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲವು ಪ್ರೊಸೆಸರ್ಗಳ ಸಂಗ್ರಹದಲ್ಲಿ ಇರಿಸಬಹುದು. ಕೇವಲ ಊಹಿಸಿ: ಸಂಪೂರ್ಣ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್, ಪ್ರೋಗ್ರಾಂಗಳು ಮತ್ತು ಡ್ರೈವರ್ಗಳೊಂದಿಗೆ, ಸಂಗ್ರಹವಾಗಿದೆ!

ಮಾಹಿತಿ

ಸೈಟ್ kolibrios.org ಗೆ ಭೇಟಿ ನೀಡಿದಾಗ, ಅಪಾಯದ ಬಗ್ಗೆ ಬ್ರೌಸರ್ ನಿಮಗೆ ಎಚ್ಚರಿಕೆ ನೀಡಬಹುದು. ಕಾರಣ, ಸ್ಪಷ್ಟವಾಗಿ, ವಿತರಣೆಯಲ್ಲಿ ಅಸೆಂಬ್ಲರ್ ಕಾರ್ಯಕ್ರಮಗಳು. VirusTotal ಈಗ ಸೈಟ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಸುರಕ್ಷಿತ ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.

"ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" ಅನ್ನು ಫ್ಲಾಪಿ ಡಿಸ್ಕ್, ಹಾರ್ಡ್ ಡ್ರೈವ್, ಫ್ಲಾಶ್ ಡ್ರೈವ್, ಲೈವ್ ಸಿಡಿ ಅಥವಾ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಸುಲಭವಾಗಿ ಲೋಡ್ ಮಾಡಬಹುದು. ಅನುಕರಿಸಲು, OS ಪ್ರಕಾರವನ್ನು "ಇತರ" ಅನ್ನು ಸೂಚಿಸಿ, ಒಂದು ಪ್ರೊಸೆಸರ್ ಕೋರ್ ಮತ್ತು ಕೆಲವು RAM ಅನ್ನು ನಿಯೋಜಿಸಿ. ಡ್ರೈವ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಇದು ಅನಿವಾರ್ಯವಲ್ಲ, ಮತ್ತು ನೀವು DHCP ಯೊಂದಿಗೆ ರೂಟರ್ ಹೊಂದಿದ್ದರೆ, "ಹಮ್ಮಿಂಗ್ಬರ್ಡ್" ತಕ್ಷಣವೇ ಇಂಟರ್ನೆಟ್ ಮತ್ತು ಸ್ಥಳೀಯ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ. ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ತಕ್ಷಣ, ನೀವು ಅನುಗುಣವಾದ ಅಧಿಸೂಚನೆಯನ್ನು ನೋಡುತ್ತೀರಿ.


ಕೊಲಿಬ್ರಿಯಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಬ್ರೌಸರ್‌ನಿಂದ HTTPS ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಎಂಬುದು ಒಂದು ಸಮಸ್ಯೆಯಾಗಿದೆ. ಆದ್ದರಿಂದ, ಅದರಲ್ಲಿ ಸೈಟ್ ಅನ್ನು ನೋಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, Google, Yandex, Wikipedia, Sberbank ನ ಪುಟಗಳನ್ನು ತೆರೆಯುವಂತೆಯೇ ... ವಾಸ್ತವವಾಗಿ, ಯಾವುದೇ ಸಾಮಾನ್ಯ ವಿಳಾಸವಿಲ್ಲ. ಪ್ರತಿಯೊಬ್ಬರೂ ದೀರ್ಘಕಾಲದವರೆಗೆ ಸುರಕ್ಷಿತ ಪ್ರೋಟೋಕಾಲ್ಗೆ ಬದಲಾಯಿಸಿದ್ದಾರೆ. ಹಳೆಯ-ಶಾಲಾ ಶುದ್ಧ HTTP ಹೊಂದಿರುವ ಏಕೈಕ ಸೈಟ್ "ರಷ್ಯನ್ ಸರ್ಕಾರದ ಪೋರ್ಟಲ್" ಆಗಿತ್ತು, ಆದರೆ ಇದು ಪಠ್ಯ ಬ್ರೌಸರ್‌ನಲ್ಲಿಯೂ ಉತ್ತಮವಾಗಿ ಕಾಣಲಿಲ್ಲ.



ಹಮ್ಮಿಂಗ್‌ಬರ್ಡ್‌ನಲ್ಲಿನ ಗೋಚರಿಸುವಿಕೆಯ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ವರ್ಷಗಳಲ್ಲಿ ಸುಧಾರಿಸಿದೆ, ಆದರೆ ಇನ್ನೂ ಆದರ್ಶದಿಂದ ದೂರವಿದೆ. ನೀವು ಕೀಲಿಯನ್ನು ಒತ್ತಿದಾಗ ಹಮ್ಮಿಂಗ್‌ಬರ್ಡ್ ಲೋಡಿಂಗ್ ಪರದೆಯಲ್ಲಿ ಬೆಂಬಲಿತ ವೀಡಿಯೊ ಮೋಡ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.



ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳ ಪಟ್ಟಿ ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಅಗತ್ಯವಿರುವ ರೆಸಲ್ಯೂಶನ್ ಇಲ್ಲದಿರಬಹುದು. ನೀವು AMD (ATI) GPU ಜೊತೆಗೆ ವೀಡಿಯೊ ಕಾರ್ಡ್ ಹೊಂದಿದ್ದರೆ, ನಂತರ ನೀವು ತಕ್ಷಣ ಕಸ್ಟಮ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸೇರಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ನೀವು ATIKMS ಲೋಡರ್‌ಗೆ -m ನಿಯತಾಂಕವನ್ನು ರವಾನಿಸಬೇಕಾಗುತ್ತದೆ X X , ಉದಾಹರಣೆಗೆ:

/RD/1/ಡ್ರೈವರ್‌ಗಳು/ATIKMS -m1280x800x60 -1

ಇಲ್ಲಿ /RD/1/DRIVERS/ATIKMS ಎಂಬುದು ಬೂಟ್‌ಲೋಡರ್‌ಗೆ (RD - RAM ಡಿಸ್ಕ್) ಮಾರ್ಗವಾಗಿದೆ.

ಸಿಸ್ಟಮ್ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ, ಆಯ್ಕೆಮಾಡಿದ ವೀಡಿಯೊ ಮೋಡ್ ಅನ್ನು vmode ಆಜ್ಞೆಯೊಂದಿಗೆ ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು (ಸೈದ್ಧಾಂತಿಕವಾಗಿ) ಹಸ್ತಚಾಲಿತವಾಗಿ ಬದಲಾಯಿಸಬಹುದು. "ಹಮ್ಮಿಂಗ್ ಬರ್ಡ್" ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ, ಈ ವಿಂಡೋ ಖಾಲಿಯಾಗಿ ಉಳಿಯುತ್ತದೆ, ಆದರೆ ಕ್ಲೀನ್ ಬೂಟ್‌ನೊಂದಿಗೆ, ಇಂಟೆಲ್ ವೀಡಿಯೊ ಡ್ರೈವರ್‌ಗಳನ್ನು i915 ನಿಂದ Skylake ಗೆ ಸೇರಿಸಬಹುದು.

ಆಶ್ಚರ್ಯಕರವಾಗಿ, KolibriOS ಒಂದು ಟನ್ ಆಟಗಳಿಗೆ ಅವಕಾಶ ಕಲ್ಪಿಸುತ್ತದೆ. ಅವುಗಳಲ್ಲಿ ಲಾಜಿಕ್ ಮತ್ತು ಆರ್ಕೇಡ್ ಆಟಗಳು, ಟ್ಯಾಗ್, ಹಾವು, ಟ್ಯಾಂಕ್‌ಗಳು (ಇಲ್ಲ, WoT ಅಲ್ಲ) - ಸಂಪೂರ್ಣ “ಗೇಮ್ ಸೆಂಟರ್” ಇವೆ! ಡೂಮ್ ಮತ್ತು ಕ್ವೇಕ್ ಅನ್ನು ಸಹ ಕೋಲಿಬ್ರಿಗೆ ಪೋರ್ಟ್ ಮಾಡಲಾಯಿತು.



ಮತ್ತೊಂದು ಪ್ರಮುಖ ವಿಷಯವೆಂದರೆ FB2READ ರೀಡರ್. ಇದು ಸಿರಿಲಿಕ್‌ನೊಂದಿಗೆ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಪಠ್ಯ ಪ್ರದರ್ಶನ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಹೊಂದಿದೆ.



ಎಲ್ಲಾ ಬಳಕೆದಾರ ಫೈಲ್ಗಳನ್ನು ಫ್ಲಾಶ್ ಡ್ರೈವಿನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ, ಆದರೆ ಅದನ್ನು USB 2.0 ಪೋರ್ಟ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬೇಕು. NTFS ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನೊಂದಿಗೆ 16 GB ಸಾಮರ್ಥ್ಯವಿರುವ ನಮ್ಮ USB 3.0 ಫ್ಲಾಶ್ ಡ್ರೈವ್ (USB 2.0 ಪೋರ್ಟ್‌ನಲ್ಲಿ) ತಕ್ಷಣವೇ ಗುರುತಿಸಲಾಗಿದೆ. ನೀವು ಫೈಲ್ಗಳನ್ನು ಬರೆಯಬೇಕಾದರೆ, ನೀವು FAT32 ವಿಭಾಗದೊಂದಿಗೆ ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಬೇಕು.



Kolibri ವಿತರಣಾ ಕಿಟ್ ಮೂರು ಫೈಲ್ ಮ್ಯಾನೇಜರ್‌ಗಳು, ಚಿತ್ರಗಳು ಮತ್ತು ದಾಖಲೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಉಪಯುಕ್ತತೆಗಳು, ಆಡಿಯೋ ಮತ್ತು ವಿಡಿಯೋ ಪ್ಲೇಯರ್‌ಗಳು ಮತ್ತು ಇತರ ಬಳಕೆದಾರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಆದಾಗ್ಯೂ, ಅದರ ಮುಖ್ಯ ಗಮನವು ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯ ಬೆಳವಣಿಗೆಯ ಮೇಲೆ.



ಅಂತರ್ನಿರ್ಮಿತ ಪಠ್ಯ ಸಂಪಾದಕವು ASM ಸಿಂಟ್ಯಾಕ್ಸ್ ಹೈಲೈಟ್ ಮಾಡುವಿಕೆಯನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಟೈಪ್ ಮಾಡಿದ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ತಕ್ಷಣವೇ ಪ್ರಾರಂಭಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.



ಅಭಿವೃದ್ಧಿ ಪರಿಕರಗಳಲ್ಲಿ i386 ವಿಂಡೋಸ್, ಲಿನಕ್ಸ್ ಮತ್ತು KolibriOS ಗಾಗಿ Oberon-07/11 ಕಂಪೈಲರ್ ಇದೆ, ಜೊತೆಗೆ ಕಡಿಮೆ ಮಟ್ಟದ ಎಮ್ಯುಲೇಟರ್‌ಗಳು: E80 - ZX ಸ್ಪೆಕ್ಟ್ರಮ್ ಎಮ್ಯುಲೇಟರ್, FCE ಅಲ್ಟ್ರಾ - ಅತ್ಯುತ್ತಮ NES ಎಮ್ಯುಲೇಟರ್‌ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, DOSBox v.0.74 ಮತ್ತು ಇತರರು. ಅವರನ್ನೆಲ್ಲ ಕೋಳಿಬ್ರಿಗೆ ವಿಶೇಷವಾಗಿ ಬಂದರು.

ನೀವು ಕೆಲವು ನಿಮಿಷಗಳ ಕಾಲ KolibriOS ಅನ್ನು ಬಿಟ್ಟರೆ, ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಪರದೆಯ ಮೇಲೆ ಕೋಡ್‌ನ ಸಾಲುಗಳು ಗೋಚರಿಸುತ್ತವೆ, ಇದರಲ್ಲಿ ನೀವು ಮೆನುಟೋಸ್‌ಗೆ ಉಲ್ಲೇಖವನ್ನು ನೋಡಬಹುದು.

ಮುಂದುವರಿಕೆ ಸದಸ್ಯರಿಗೆ ಮಾತ್ರ ಲಭ್ಯವಿದೆ

ಆಯ್ಕೆ 1. ಸೈಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ಓದಲು "ಸೈಟ್" ಸಮುದಾಯಕ್ಕೆ ಸೇರಿ

ನಿರ್ದಿಷ್ಟ ಅವಧಿಯೊಳಗೆ ಸಮುದಾಯದಲ್ಲಿನ ಸದಸ್ಯತ್ವವು ನಿಮಗೆ ಎಲ್ಲಾ ಹ್ಯಾಕರ್ ವಸ್ತುಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ನೀಡುತ್ತದೆ, ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಸಂಚಿತ ರಿಯಾಯಿತಿಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ ಮತ್ತು ವೃತ್ತಿಪರ Xakep ಸ್ಕೋರ್ ರೇಟಿಂಗ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ!


ಟಾಪ್