原 乙個簡單的將自己移動的boot

2022-07-18 21:48:26 字數 1422 閱讀 6108

bits 16 ;16位實模式指令

initseg equ 0x7c00  ;boot被載入的位置所有offset需要使用

start:

mov  ax, cs    ;cs被初始化為0x0000

mov  ss, ax  

mov sp, 0xffff            ;設定乙個堆疊

call   clear

call  print

mov  ax, 0x9000     ;boot將被移動到0x90000處

mov  es, ax

xor di, di

mov ax, 0x07c0       ;從0x07c00處複製, 注意段暫存器值要右移4位

mov  ds, ax

xor   si, si

mov  cx, 256   ;共有512位元組

run:

mov   ax, [ds:si]     

mov   [es:di], ax

inc     si

inc  si

inc di

inc di

dec  cx

jnz run

jmp   0x9000:nloop

nloop:

mov   ax, cs  ;注意這裡cs為0x9000

mov  ds, ax

mov  es, ax

mov  ax, 1301h

mov  bp, string

mov  cx,  strlen

mov dh,  5

mov dl,  0

mov  bh, 0

int 10h

jmp $

print:                   

mov ax, cs    

mov es, ax

mov ax , 1301h

mov bl, 7

mov bp, initseg + string  ;定位字串位置0x7c00 + string

mov cx, strlen

mov dh, 0

mov dl, 0

mov bh, 0

int 10h

ret         

clear:

mov al, ' '

mov bh, 0

mov bl, 7

mov cx, 2000

mov ah, 09h

int 10h

ret    

string : db 'booting...'

strlen equ $ - string

times (512-($ -$$)- 2) db 0 ;padding with 0

db 0x55

db 0xaa

自己實現乙個簡單的ArrayList

自己簡單的實現arraylist的 註解很清楚了,寫了arraylist的add obj 方法 remove index 方法,get index 方法,自己定義迭代器,自己進行迭代 迭代器介面 public inte ce iterator集合 的實現 version description 自己...

自己實現乙個簡單的hashmap

這個hashmap實現方式應該是jdk1.7的,在資料量小的時候和jdk1.8實現的差不多,不過我這個沒有採用鍊錶長度8時轉化紅黑樹增加查詢效率,在擴容時也是全部元素重新hash,計算新的位置,所以如果大資料量的時候,複製到新的陣列就會比較慢.jdk8裡面對複製到新的陣列也是有優化的,我這裡就沒做了...

erlang 自己搞定乙個簡單的MakeFile

在windows下面執行erlang的檔案 就是.beam檔案 每次都要從cmd,cd到你編譯好erlang檔案的目錄下就是有 beam 的目錄下,這樣超級麻煩。有沒有什麼辦法,在cmd中,輸入erl,直接就直接可以執行 不用再cd到你的.beam的資料夾下 你已經編譯好的的.beam檔案。首先要修...