OS на asseblere

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
ASNOKE
Сообщения: 11
Зарегистрирован: 19 мар 2017, 11:42

01 апр 2017, 04:58

как написать операционную систему в assembler
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

03 апр 2017, 19:11

Вот так вот "в лоб"? "Как написать?"? А чего сразу не как звездолёт построить? А не, это тоже мелко. Спрашивайте сразу, как какую нибудь астроинженерную задача решить. Причём, сразу такую, чтоб результат было видно невооружённым глазом из другого скопления галактик.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
ASNOKE
Сообщения: 11
Зарегистрирован: 19 мар 2017, 11:42

05 апр 2017, 03:56

а я хочу эссомблер
ASNOKE
Сообщения: 11
Зарегистрирован: 19 мар 2017, 11:42

05 апр 2017, 03:58

вот простейшая

Код: Выделить всё

; #make_boot# 
use16
 
org 7c00h 
 
main:
jmp far 00:entry1
 
 
entry1: 
cli
mov ax,cs
mov ds,ax
sti   
mov ah,14
xor bl,bl
mov bx,clr
strt0:
mov al,[bx]
test al,al
jz exit0_
inc bx
int 10h
jmp strt0
exit0_: 
mov bh,1
mov bl,0   
int 10h
mov ah,14
xor bl,bl
mov bx,tex
strt:
mov al,[bx]
test al,al
jz exit_
inc bx
int 10h
jmp strt
exit_:
mov ah,14
xor bl,bl
mov bx,b
strt1:
mov al,[bx]
test al,al
jz exit1_
inc bx
int 10h
jmp strt1
exit1_:
mov ah,14
xor bl,bl
mov bx,d
strt2:
mov al,[bx]
test al,al
jz exit2_
inc bx
int 10h
jmp strt2
exit2_:
mov ah,0
int 16h
cmp ah,0Eh
jz back_space
cmp ah, 1Ch
jz Enter_Press
mov ah,0x0E
mov bh,0
mov [text1],al
int 10h
call exit2_
back_space:
mov ah,0x0E
mov bh,0
mov al,8
int 10h
mov ah,0x0E
mov bh,0
mov al,0
int 10h
mov ah,0x0E
mov bh,0
mov al,8
int 10h
call exit2_
Enter_Press:
 mov al,[text1]
 cmp al, '1'
 jz com_1
 cmp al, '2'
 jz com_2
 cmp al, '3'
 jz com_3 
 cmp al, '4'
 jz com_4     
 cmp al, '5'
 jz com_5
   
mov ah,14
xor bl,bl
mov bx,ad
strt5:
mov al,[bx]
test al,al
jz exit1_
inc bx
int 10h
jmp strt5
 
 
 com_1:
 mov ah,14
xor bl,bl
mov bx,clr
strt3:
mov al,[bx]
test al,al
jz exit3_
inc bx
int 10h
jmp strt3
exit3_:  
call exit1_
 
 com_2:
 mov ah,14
xor bl,bl
mov bx,ad
strt4:
mov al,[bx]
test al,al
jz exit4_
inc bx
int 10h
jmp strt4
exit4_:  
call exit1_
 
 
 com_3:
 cli
 hlt     
 
 com_4: 
  mov ah,14
xor bl,bl
mov bx,cre
strt6:
mov al,[bx]
test al,al
jz exit1_
inc bx
int 10h
jmp strt6
 
 
 
 
 
com_5:     
mov [text2],al
mov ah,14
xor bl,bl
mov bx,text2
strt11:
mov al,[bx]
test al,al
jz exit11_
inc bx
int 10h
jmp strt11
exit11_:  
mov [text2],ah
mov ah,14
xor bl,bl
mov bx,text2
strt12:
mov al,[bx]
test al,al
jz exit12_
inc bx
int 10h
jmp strt12
exit12_:
mov [text2],bl
mov ah,14
xor bl,bl
mov bx,text2
strt13:
mov al,[bx]
test al,al
jz exit13_
inc bx
int 10h
jmp strt13
exit13_: 
call exit1_
 
 
 
  
 
 
 
 
 
 
 
 
tex  db  0Dh,0Ah,'Loading, kernal file...',0 
b db   0Dh,0Ah,'Well done',0Ah,0
d db   0Dh,0Ah,'Print command : ',0
ad db  0Dh,0Ah,'1) Clear Screen',0Dh,0Ah,'2) Help of OS',0Dh,0Ah,'3) Kill processor',0Dh,0Ah,'4) Creators',0Ah,0Dh,'5) Registry of processor',0Ah,0Ah,0
cre db  0Dh,0Ah,'ASMcoder or MegaCraZy6',0Dh,0Ah,0
text1 db 0      
text2 db 0
clr db 0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0Ah,0
db 0xAA, 0x55
 
INT 19h
Ответить