亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3241 | 回復(fù): 7
打印 上一主題 下一主題

啟動分頁功能機(jī)器就重啟,各位大蝦請幫忙看看 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-07-15 00:48 |只看該作者 |倒序瀏覽
啟動分頁功能后的第一條指令就失敗
bosch日志
00009487429i[BIOS ] Booting from 0000:7c00
00022352092i[CPU0 ] CPU is in protected mode (active)
00022352092i[CPU0 ] CS.d_b = 16 bit
00022352092i[CPU0 ] SS.d_b = 16 bit
00022352092i[CPU0 ] EFER  = 0x00000000
00022352092i[CPU0 ] ¦ RAX=0000000080000011  RBX=0000000000000010
00022352092i[CPU0 ] ¦ RCX=0000000000000000  RDX=0000000000000001
00022352092i[CPU0 ] ¦ RSP=0000000000000000  RBP=0000000000000912
00022352092i[CPU0 ] ¦ RSI=0000000000000026  RDI=0000000000002000
00022352092i[CPU0 ] ¦  R8=0000000000000000  R9=0000000000000000
00022352092i[CPU0 ] ¦ R10=0000000000000000  R11=0000000000000000
00022352092i[CPU0 ] ¦ R12=0000000000000000  R13=0000000000000000
00022352092i[CPU0 ] ¦ R14=0000000000000000  R15=0000000000000000
00022352092i[CPU0 ] ¦ IOPL=0 id vip vif ac vm RF nt of df if tf SF zf af PF cf
00022352092i[CPU0 ] ¦ SEG selector    base    limit G D
00022352092i[CPU0 ] ¦ SEG sltr(index ¦ti ¦rpl)    base    limit G D
00022352092i[CPU0 ] ¦  CS:0008( 0001 ¦ 0 ¦  0) 000174d0 000000b3 0 0
00022352092i[CPU0 ] ¦  DS:174d( 0005 ¦ 0 ¦  0) 000174d0 0000ffff 0 0
00022352092i[CPU0 ] ¦  SS:174d( 0005 ¦ 0 ¦  0) 000174d0 0000ffff 0 0
00022352092i[CPU0 ] ¦  ES:0018( 0003 ¦ 0 ¦  0) 00000000 000fffff 1 0
00022352092i[CPU0 ] ¦  FS:0000( 0005 ¦ 0 ¦  0) 00000000 0000ffff 0 0
00022352092i[CPU0 ] ¦  GS:0000( 0005 ¦ 0 ¦  0) 00000000 0000ffff 0 0
00022352092i[CPU0 ] ¦  MSR_FS_BASE:0000000000000000
00022352092i[CPU0 ] ¦  MSR_GS_BASE:0000000000000000
00022352092i[CPU0 ] ¦ RIP=00000000000000b1 (00000000000000b1)
00022352092i[CPU0 ] ¦ CR0=0x80000011 CR1=0x0 CR2=0x0000000000000040
00022352092i[CPU0 ] ¦ CR3=0x00100000 CR4=0x00000000
00022352092i[CPU0 ] (instruction unavailable) page not present
00022352092e[CPU0 ] exception(): 3rd (14) exception with no resolution, shutdown status is 00h, resetting
00022352092i[SYS  ] bx_pc_system_c::Reset(SOFTWARE) called
00022352092i[CPU0 ] cpu software reset

從錯誤日志看,是我的分頁不對,但我對比了多次了,我的第1條頁目錄所對應(yīng)的頁表映射4M的空間,我的程序因為在這個范圍內(nèi)呀。
編譯命令:
D:\asm\source>nasm -f obj d.asm

D:\asm\source>alink d
ALINK v1.6 (C) Copyright 1998-9 Anthony A.J. Williams.
All Rights Reserved

Loading file d.obj
matched Externs
matched ComDefs
Warning - no stack

源代碼:
;存儲段描述符類型值說明
;----------------------------------------------------------------------------
ATDR            equ    90h ;存在的只讀數(shù)據(jù)段類型值
ATDW            equ    92h ;存在的可讀寫數(shù)據(jù)段屬性值
ATDWA          equ    93h ;存在的已訪問可讀寫數(shù)據(jù)段類型值
ATCE            equ    98h ;存在的只執(zhí)行代碼段屬性值
ATCER          equ    9ah ;存在的可執(zhí)行可讀代碼段屬性值
ATCCO          equ    9ch ;存在的只執(zhí)行一致代碼段屬性值
ATCCOR          equ    9eh ;存在的可執(zhí)行可讀一致代碼段屬性值
;----------------------------------------------------------------------------
;其它常量值說明
;----------------------------------------------------------------------------
GL              equ    80h      ;段界限以4K為單位標(biāo)志
;----------------------------------------------------------------------------
;分頁機(jī)制使用的常量說明
;----------------------------------------------------------------------------
PL              equ    1    ;頁存在屬性位
RWR            equ    0    ;R/W屬性位值,讀/執(zhí)行
RWW            equ    2    ;R/W屬性位值,讀/寫/執(zhí)行
USS            equ    0    ;U/S屬性位值,系統(tǒng)級
USU            equ    4    ;U/S屬性位值,用戶級
segment a

desc_null:
dw      0;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      0;Attributes(m+5)[P DPL DT1 TYPE]
db      0;Attributes(m+6)[G D 0 AVL Limit(19...16)]
db      0;Base(31...24)

desc_code:
dw      a_end;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATCER;Attributes(m+5)[P DPL DT1 TYPE]
db      0;Attributes(m+6)[G D 0 AVL Limit(19...16)]
db      0;Base(31...24)


desc_data:
dw      a_end;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATDWA;Attributes(m+5)[P DPL DT1 TYPE]
db      0;Attributes(m+6)[G D 0 AVL Limit(19...16)]
db      0;Base(31...24)

desc_line:
dw      0xffff;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATDWA;Attributes(m+5)[P DPL DT1 TYPE]
db      0xf + GL;Attributes(m+6)[G D 0 AVL Limit(19...16)]
db      0;Base(31...24)

sel_code        equ    desc_code - desc_null
sel_data        equ    desc_data - desc_null
sel_line        equ    desc_line - desc_null

vgdt:
dw 0xffff
dd 0

..start:

mov    ax,a
mov    ds,ax
mov    bx,16
mul    bx

mov    [desc_code + 2],ax
mov    [desc_data + 2],ax

mov    [desc_code + 4],dl
mov    [desc_data + 4],dl

mov    [desc_code + 7],dh
mov    [desc_data + 7],dh

mov    [vgdt + 2],ax
mov    [vgdt + 4],dx

cli
lgdt    [vgdt]
mov    eax,cr0
or      eax,1
mov    cr0,eax

jmp    sel_code:do

real:
mov    ax,4c00h
int    21h   

do:

;初始化頁目錄表
mov    ax,sel_line
mov    es,ax
;初始化兩個頁目錄表
mov    dword[es:dword 0x00000000],0x00001000+USU+RWW+PL

;初始化第一個頁目錄表項的頁表項
mov    ax,sel_line
mov    es,ax
mov    edi,0x00001000
mov    cx,1024
xor    eax,eax
or      eax,USU+RWW+PL
loop1:  stosd
add    eax,0x1000
loop    loop1

;切換
mov    eax,0x00100000
mov    cr3,eax
mov    eax,cr0
or      eax,80000000h
mov    cr0,eax
jmp    $ ;就這里出錯了

a_end:

論壇徽章:
0
2 [報告]
發(fā)表于 2008-07-15 00:54 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
3 [報告]
發(fā)表于 2008-07-16 01:08 |只看該作者
haha
見笑了!

論壇徽章:
0
4 [報告]
發(fā)表于 2008-07-16 01:19 |只看該作者
頁結(jié)構(gòu)沒設(shè)置好

論壇徽章:
0
5 [報告]
發(fā)表于 2008-07-17 00:53 |只看該作者
上面的代碼由問題。

用下面的代碼替換相應(yīng)部分是可以的。頁目錄地址在0處
;初始化頁目錄表
mov    ax,sel_line
mov    es,ax
;初始化兩個頁目錄表
mov    dword[es:dword 0x00000000],0x00001000+USU+RWW+PL

;初始化第一個頁目錄表項的頁表項
mov    ax,sel_line
mov    es,ax
mov    edi,0x00001000
mov    cx,1024
xor    eax,eax
or      eax,USU+RWW+PL
loop1:  stosd
add    eax,0x1000
loop    loop1

;切換
mov    eax,0x00000000
mov    cr3,eax
mov    eax,cr0
or      eax,80000000h
mov    cr0,eax
jmp    $


但是如果頁目錄地址在1M處就不行。不知道為什么
相關(guān)部分代碼
mov    ax,sel_line
mov    es,ax
;初始化兩個頁目錄表
mov    dword[es:dword 0x00100000],0x00101000+USU+RWW+PL

;初始化第一個頁目錄表項的頁表項
mov    ax,sel_line
mov    es,ax
mov    edi,0x00101000
mov    cx,1024
xor    eax,eax
or      eax,USU+RWW+PL
loop1:  stosd
add    eax,0x1000
loop    loop1

;切換
mov    eax,0x00100000
mov    cr3,eax
mov    eax,cr0
or      eax,80000000h
mov    cr0,eax
jmp    $

論壇徽章:
0
6 [報告]
發(fā)表于 2008-07-17 01:07 |只看該作者
CR3=0x00100000

A20沒打開吧

論壇徽章:
0
7 [報告]
發(fā)表于 2008-07-19 01:13 |只看該作者
開啟了,問題依舊。新的代碼如下:
如果PAGE_DIR_ADDR=0x0,則運(yùn)行正常;如果改為0x00100000,則在JMP $時,重啟

;存儲段描述符類型值說明
;----------------------------------------------------------------------------
ATDR            equ     90h ;存在的只讀數(shù)據(jù)段類型值
ATDW            equ     92h ;存在的可讀寫數(shù)據(jù)段屬性值
ATDWA           equ     93h ;存在的已訪問可讀寫數(shù)據(jù)段類型值
ATCE            equ     98h ;存在的只執(zhí)行代碼段屬性值
ATCER           equ     9ah ;存在的可執(zhí)行可讀代碼段屬性值
ATCCO           equ     9ch ;存在的只執(zhí)行一致代碼段屬性值
ATCCOR          equ     9eh ;存在的可執(zhí)行可讀一致代碼段屬性值
;----------------------------------------------------------------------------
;其它常量值說明
;----------------------------------------------------------------------------
GL              equ     80h       ;段界限以4K為單位標(biāo)志
;----------------------------------------------------------------------------
;分頁機(jī)制使用的常量說明
;----------------------------------------------------------------------------
PL              equ     1     ;頁存在屬性位
RWR             equ     0     ;R/W屬性位值,讀/執(zhí)行
RWW             equ     2     ;R/W屬性位值,讀/寫/執(zhí)行
USS             equ     0     ;U/S屬性位值,系統(tǒng)級
USU             equ     4     ;U/S屬性位值,用戶級
PAGE_DIR_ADDR   equ     0x00100000      ;U/S屬性位值,用戶級
segment a

desc_null:
dw      0;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      0;Attributes(m+5)[P        DPL        DT1        TYPE]
db      0;Attributes(m+6)[G        D        0        AVL        Limit(19...16)]
db      0;Base(31...24)

desc_code:
dw      a_end;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATCER;Attributes(m+5)[P        DPL        DT1        TYPE]
db      0;Attributes(m+6)[G        D        0        AVL        Limit(19...16)]
db      0;Base(31...24)


desc_data:
dw      a_end;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATDWA;Attributes(m+5)[P        DPL        DT1        TYPE]
db      0;Attributes(m+6)[G        D        0        AVL        Limit(19...16)]
db      0;Base(31...24)

desc_line:
dw      0xffff;Segment Limite
dw      0;Segment Base(15...0)
db      0;Segment Base(23...16)
db      ATDWA;Attributes(m+5)[P        DPL        DT1        TYPE]
db      0xf + GL;Attributes(m+6)[G        D        0        AVL        Limit(19...16)]
db      0;Base(31...24)

sel_code        equ     desc_code - desc_null
sel_data        equ     desc_data - desc_null
sel_line        equ     desc_line - desc_null

vgdt:
dw 0xffff
dd 0

..start:

mov     ax,a
mov     ds,ax
mov     bx,16
mul     bx

mov     [desc_code + 2],ax
mov     [desc_data + 2],ax

mov     [desc_code + 4],dl
mov     [desc_data + 4],dl

mov     [desc_code + 7],dh
mov     [desc_data + 7],dh

mov     [vgdt + 2],ax
mov     [vgdt + 4],dx

;打開A20地址線
push    ax
in      al,92h
or      al,00000010b
out     92h,al
pop     ax


cli
lgdt    [vgdt]
mov     eax,cr0
or      eax,1
mov     cr0,eax

jmp     sel_code:do

real:
mov     ax,4c00h
int     21h     

do:

;初始化頁目錄表
mov     ax,sel_line
mov     es,ax
;初始化兩個頁目錄表
mov     dword[es:dword PAGE_DIR_ADDR],PAGE_DIR_ADDR + 0x00001000 +USU+RWW+PL

;初始化第一個頁目錄表項的頁表項
mov     ax,sel_line
mov     es,ax
mov     edi,0x00101000
mov     cx,1024
xor     eax,eax
or      eax,USU+RWW+PL
loop1:  stosd
add     eax,0x1000
loop    loop1

;切換
mov     eax,PAGE_DIR_ADDR
mov     cr3,eax
mov     eax,cr0
or      eax,80000000h
mov     cr0,eax
jmp     $

a_end:

論壇徽章:
0
8 [報告]
發(fā)表于 2008-07-22 00:57 |只看該作者
??

不會沒有大蝦知道吧!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP