Tento web používá soubory cookie. Dalším používáním webu s tímto souhlasíte.
jméno
heslo
přihlásit
zaregistrujte se
zapomněli jste heslo?
Assembler
LITTLELI
there are 10 types of people in the world. those who understand binary, and those who don't.
windows bring the power of yesterday computers in nowadays
sexy nastenka
Máte k tomu co říct? Vložte se do diskuze.
_FREZA_ --- 17:23:44 3.2.2004
jachymko: mno nevim, nedela se to tak ze se vypnou interrupty, nastavi se mmu, zapnou se interrupty? (aspon tusim ze takhle sem to videl pro ARM)
LITTLELI --- 17:21:53 27.1.2004
nj ale to se stane :)) zase je dobry, ze je jasny kde to bylo.
LITTLELI --- 0:14:14 27.1.2004
JACHYMKO: jen to napis, nikdo se ti smat nebude
LITTLELI --- 21:41:03 26.1.2004
no mi to delame tak, ze mame po vstupu do PM nastavenou vlastnost zasobniku
na to ze je to 16bitovy segment, coz samozrejme neni duvod k tomu aby to nefachcilo.
zasobnik se plni od zhora, to mas take splneno ;)
tam bude naka bota primo se segmenty...
mas nejaky debug info k tomu? fakt to pada na tom movu?
LITTLELI --- 21:15:27 26.1.2004
offset segmentu... a co se tyce tech deskriptoru vitej do sveta.
ja uz ani nevim jak to presne funguje ;)
LITTLELI --- 13:38:28 15.1.2004
AXTHEB: to je sluzba biosu :))
AXTHEB --- 13:37:03 15.1.2004
; emulace dalnopisu
LITTLELI --- 13:34:44 15.1.2004
pasaz s kodem:

 stuj:   hlt
        jmp     stuj 


je podle mne moc roztomila :_))
LITTLELI --- 13:33:02 15.1.2004
jak se vratit po resetu na spravne misto... ve vm86 se to nepodari! bud je zapotrebi real nebo ring0, ale to jsem nezkousel (proc asi):

 [bits 16]
[org 100h]
[section .bss]
stack_end:
        resw    50
stack_begin:

[section .data]
multitask:	db	'Program nelze spustit ve virtualnim rezimu!',13,10,'$'
reset_msg:	db	'Pokud se cinnost pocitace zastavi pocitac vypnete!',13,10
		db	'Signal reset byl zaslan procesoru... ',36
digits:         db      '0123456789abcdef'
model:          db      'model 0x$'
revision:       db      ', revision 0x$'
CRLF:		db	13,10,'$'

[section .text]
	smsw	ax
	and	ax,1
	jz	fajn
	mov	ah,9
	mov	dx,multitask
	int	21h
	ret				; konec programu	
fajn:	mov	ah,9
	mov	dx,reset_msg
	int	21h
        cli
        push    word 40h
        pop     ds
        mov     ax,cs
        mov     word[67h],real
        mov     word[69h],ax            ; 0040h:67h
        mov     al,0fh
        out     70h,al
        jmp     delay
delay:  mov     al,0ah
        out     71h,al
        mov     al,0fch			; shutdown processoru tj. 
        				; 1) navrat do realneho rezimu z prot.
        				; 2) provede se skok dle 0040:0067 hned po resetu
        out     64h,al			; nyni se provadi 'pomaly' reset
stuj:   hlt				; pozastavi cinnost procesoru az
					; do chvile, kdy se zresetuje
        jmp     stuj			; pouze pojistka pro prichod NMI
        nop
real:   mov     ax,cs			; tady bude pokracovat nase rutina
        mov     ss,ax
        mov     ds,ax
        mov     es,ax                   ; ted jsou vsechny segm. reg rovny
        mov     sp,stack_begin		; nastaveni prozatimniho zasobniku
	and	sp,0fffch		; zarovnani ??? zkusmo
        mov     al,0ffh
        out     64h,al                  ; povolit klavesnici
	cld
        sti
        push    dx			; v DX je model a revize procesoru !!!
        mov     ah,9
        mov     dx,model
        int     21h			; napis model
        pop     ax
        push    ax
        mov     al,ah
        call    ByteToHex       	; napis cislo modelu
        mov     dx,revision
        mov     ah,9
        int     21h             	; retezec revize        
        pop     ax               	; tady je vysledek
        call    ByteToHex        	; napis cislo revize

        mov     ah,9
        mov     dx,CRLF
        int     21h             	; zaradkuj

        mov     ah,4ch
        int     21h                 	; navrat do DOSu

ByteToHex:
        push    bx
        push    ax
        push    ax
        mov     bx,digits
        shr     al,4
        xlatb
        mov     ah,0eh
        int     10h         ; emulace dalnopisu
        pop     ax
        and     al,0fh
        xlatb
        mov     ah,0eh
        int     10h         ; emulace dalnopisu
        pop     ax
        pop     bx
        ret

WordToHex:
        push    ax
        call    ByteToHex
        pop     ax
        mov     al,ah
        call    ByteToHex
        ret 


hehe, to jsem byl jeste pilna vcelka a komentoval kod ;)
MASCA --- 12:10:13 13.1.2004
LITTLELI Tak to vazne problem... To jsem resil, zkousel jsem int15, taky nekde v dat. oblasti BIOSu (seg. 40) mozna neco takovyho je. Kazdopadne ale k tomu, abys ji mohl pouzit, musis prepnout do protectu, a tam uz nevim, jak se takove veci vubec resi. Nicmene, az nekdo odpovi, taky by me to zajimalo.