今天終於跑起來了自己OS的mbr,還是很激動人心的。學習了16位真實模式下jmp和call的各種用法,來總結一下:
call (near) 0xabcd 相對近呼叫 後面的地址是相對的 -32768~32767
call [addr] 間接絕對近呼叫 地址為絕對,但是是在某個暫存器或記憶體中
call (far) 段基址:偏移 直接絕對遠呼叫 跨段
call far [addr] 間接絕對遠呼叫 跨段 地址在記憶體中 前2個位元組是段基址 後2個位元組是偏移(addr dw start,0)
jmp (short) addr 相對短轉移 -128-127
jmp (near) addr 相對近轉移 -32768-32767
jmp (near) ax 間接絕對近轉移 地址在暫存器或記憶體中
jmp (far) 段基址:偏移 直接絕對遠轉移 跨段
jmp far [addr] 間接絕對遠轉移 地址在記憶體中
感覺call和jmp其實沒什麼區別,就是有沒有ret的關係 自己對於大端位元組序 小端位元組序的理解還不夠到位,要好好看看
這些內容是從《作業系統真象還原》這本書上總結下來的,今天是我第一天寫總結,希望能夠堅持下去!