Загрузик операционной системы(с заглушкой вместо ОС)

.model tiny
.code
.286

org 7c00h

SECTOR_COUNT = 8

write_char macro char
push ax
mov ah, 0eh
mov al, char
int 10h
pop ax
endm

getch macro 
write_char '?'
push ax
xor ah, ah
int 16h
pop ax
endm

start: 	write_char '1'
	
	getch        	 

mov si, 0
put_sec:inc si

	
	xor ah, ah	;reset contorolers
	int 16h

	mov ah, 02h
	mov al, 1
	mov ch, 0
	mov cl, 02h
	mov dl, 80h
	push cs
	pop es
	mov bx, 7c00h+200h 
	int 13h	

	jnc pred_print	
	write_char 'E'

	cmp si, 4
	jne put_sec

	write_char 'H'

	getch

pred_print:
write_char 0dh
write_char 0ah
write_char '-'
write_char '>'

push 0
pop es
mov bx, 7e00h
print:	write_char es:[bx]	
	
	inc bx
	cmp bx, 7e00h+33d 
	
	jb print

write_char '<'
write_char '-'

	write_char 0dh
	write_char 0ah
	write_char 'j'
	write_char 'm'
	write_char 'p'
	getch

	push 0
	push 7c00h+200h
	retf

org 7c00h+200h-2h
dw 0AA55h

org 7c00h+200h
jmp short kernel
db "ABCDEFabcdef"

kernel: write_char 3
	getch

	hlt
	jmp $

org 7c00h+200h*2-2h
dw 0FFFFh

org 7c00h+200h*2
db '<-' 	
end start

Внимание!!! В коде есть неиспользующиеся элементы , заготовленные на будующее.
Теги:
ассемблер асм NewRusOS
Добавлено: 07 Апреля 2014 06:18:21 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...