- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kötelező frissítésnek számít a Microsoft legújabb csomagja a Windows 11-hez
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Alaposan megdrágultak az ASUS Zenbookjai
- Nem indul és mi a baja a gépemnek topik
- NVIDIA GeForce RTX 5060 Ti (GB206)
- E-book olvasók
- Azonnali fotós kérdések órája
- Milyen TV-t vegyek?
- Milyen egeret válasszak?
Aktív témák
-
OddMan
őstag
Nagyon köszi, hogy segítesz.
''Ne tedd 0f0000h-ra a programod, mert ott a BIOS van...''
Szereztem egy valós modú memória térképet, és most már tudom, hogy hova lehet töltögetni.
''A jmp far-t heggeszteni kell:
db 0eah ;ez a jmp far abszolut címre kódja
dw uj_ip,uj_cs
Értelemszerűen, az IP legyen 32 bites, ha 32 bites kód fut.''
Na a nasm-ban a ''jmp dword cs:ip'' 32bit-es és ''jmp word cs:ip'' 16bit-es far ugrás.
Megnéztem az exe-t hexa editorral és úgy néz ki, hogy a nasm jól fordítja le ezeket az utasításokat. Te próbáltad már a nasm-ot? Mert ha mégsem fordítja jól, akkor az álltalad írt gépikód formát fogom használni. Meg gondolom bizonyos esetekben kell a 66h prefix, amikor a szegmens 16bit-es az utasítás meg 32bit-es.
Más:
Azt értem, hogy az lgdt utasításnak fizikai cím kell, de azt már nem, hogyan kell azt megkapni.
mov eax, ds
shl eax, 4 ;ezt nem értem, hogyha 4-el balra léptetem a biteket, akkor mitől lesz az a fizikai címe a DS-nek? :F
add [GDT_ptr+2], eax
lgdt [GDT_ptr] ;Load the GDT
GDT_addr:
;;0. descriptor
NULL_SEL equ $-GDT_addr
dw 0
dw 0
db 0
db 0
db 0
db 0
;;1. descriptor (code segment 1MB 0-nál kezdődik)
CODE16_SEL equ $-GDT_addr
dw 0FFFFh ;a szegmens hosszának alsó wordja (határ)
dw 0 ;a báziscím alsó wordje
db 0 ;a báziscím felső wordjének alsó bájtja
db 10011010b ;P=1, DPL=00, S=1, C/D=1, C/E=0, R/W=1, A=0
db 00001111b ;G=0, D/B=0, AVL=0, reserved=0, határ=1111
db 0 ;a báziscím felső wordjének felső bájtja
;;2. descriptor (data segment 1MB 0-nál kezdődik)
DATA16_SEL equ $-GDT_addr
dw 0FFFFh ;a szegmens hosszának alsó wordja (határ)
dw 0 ;a báziscím alsó wordje
db 0 ;a báziscím felső wordjének alsó bájtja
db 10010010b ;P=1, DPL=00, S=1, C/D=0, C/E=0, R/W=1, A=0
db 00001111b ;G=0, D/B=1, AVL=0, reserved=0, határ=1111
db 0 ;a báziscím felső wordjének felső bájtja
;;3. descriptor (code segment 1MB 0-nál kezdődik)
CODE32_SEL equ $-GDT_addr
dw 0FFFFh ;a szegmens hosszának alsó wordja (határ)
dw 0 ;a báziscím alsó wordje
db 0 ;a báziscím felső wordjének alsó bájtja
db 10011010b ;P=1, DPL=00, S=1, C/D=1, C/E=0, R/W=1, A=0
db 01001111b ;G=0, D/B=1, AVL=0, reserved=0, határ=1111
db 0 ;a báziscím felső wordjének felső bájtja
;;4. descriptor (data segment 1MB 0-nál kezdődik)
DATA32_SEL equ $-GDT_addr
dw 0FFFFh ;a szegmens hosszának alsó wordja (határ)
dw 0 ;a báziscím alsó wordje
db 0 ;a báziscím felső wordjének alsó bájtja
db 10010010b ;P=1, DPL=00, S=1, C/D=0, C/E=0, R/W=1, A=0
db 01001111b ;G=0, D/B=1, AVL=0, reserved=0, határ=1111
db 0 ;a báziscím felső wordjének felső bájtja
;;5. deszkriptor (stack segment 8Kb 200000h-nál kezdődik)
STACK_SEL equ $-GDT_addr
dw 02000h ;a szegmens hosszának alsó wordja (határ)
dw 0 ;a báziscím alsó wordje
db 20h ;a báziscím felső wordjének alsó bájtja
db 10010010b ;P=1, DPL=00, S=1, C/D=0, C/E=0, R/W=1, A=0
db 01000000b ;G=0, D/B=1, AVL=0, reserved=0, határ=0000
db 0 ;a báziscím felső wordjének felső bájtja
;;6. deszkriptor (screen segment 16Kb 0B8000h-nál kezdődik)
SCREEN_SEL equ $-GDT_addr
dw 04000h ;a szegmens hosszának alsó wordja (határ)
dw 08000h ;a báziscím alsó wordje
db 0Bh ;a báziscím felső wordjének alsó bájtja
db 10010010b ;P=1, DPL=00, S=1, C/D=0, C/E=0, R/W=1, A=0
db 01000000b ;G=0, D/B=1, AVL=0, reserved=0, határ=0000
db 0 ;a báziscím felső wordjének felső bájtja
GDT_end:
GDT_ptr:
dw GDT_end-GDT_addr ;GDT mérete
dd GDT_addr ;GDT címe
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
A segmenseim határai csak 1MB, mert úgysem kell egyelőre több.
Egyébként én most kezdetnek egy olyan progit írok, amely dos alatt átkapcsol védett módba majd vissza. Amíg ez nem megy, addig nem megyek tovább.
Előre is köszi a válaszokat. :U
Aktív témák
- sziku69: Szólánc.
- Okos otthon - gyári appok, ökoszisztémák
- Óra topik
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Revolut
- Fejhallgatós találkozó
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Xiaomi 15T Pro - a téma nincs lezárva
- További aktív témák...
- Latitude 5440 14" FHD IPS i5-1345U 16GB 256GB NVMe magyar vbill gar
- Eladó 9800X3D/RX 9070 XT 16GB/32 GB RAM
- GARANCIÁLIS RTX 5060 ACER NITRO GAMER LAPTOP - i7 13620h, RTX 5060
- 27" AOC Q27G3XMN Gaming MiniLED "1100Nit" (Garanciás)
- LOQ 15IRH8 15.6" FHD IPS i5-12450H RTX 4060 16GB 512GB NVMe magyar vbill gar
- 8gb 16gb DDR 5 so-dimm laptop RAM 4800MHz 5600MHz
- 27% - NIPOGI Mini PC! AMD Ryzen 7 5700U / 16 GB DDR4 / 512 GB SSD
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Dell Optiplex 390 MT,i3-2130,4GB RAM,500GB HDD,WIN10
- ÚJ 15" Microsoft Surface Laptop 7 X Elite 16GB 512GB
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

