1. 程式人生 > >第二章總結

第二章總結

mov 命令 部分 就是 公式 下一步 計算 bsp 需要

在第二章學習,剛開始學習了通用寄存器,其中老師主要介紹了四種寄存器,分別是AX、BX、CX、DX,然後AX又可以分為AH和AL兩部分,剩下的3個也是同理。這裏在一個16位的數據時,就是AX代表前8位,AL代表後8位,同時最重要的一點就是兩者不會互相影響,比如數據是0000001011111111,然後進行一段操作是add AL 0001H,在這段操作後原來數據變成0000001000000000,而不會向前面進1。 下面講的匯編的一些指令,首先是move指令,move ax 18,這個的意思就是把18賦值給ax,或者說把18送入ax寄存器中,另一個就是剛剛的add指令,就是把0001加到AL上,數據保存在AL中。接下來的是物理地址,物理地址就是每個內存單元的地址,在需要使用時就從順著這個地址,去把地址中所代表的數據取出來。
之後的部分就是計算物理地址了,公式非常簡單就是物理地址=段地址x16+偏移地址,其中有要註意的是段地址和偏移地址,我們的寫法不固定,還是舉個例子更好理解,比如8F354H,這種5位的16進制數據,我們的段地址可以選擇是8F35,偏移地址可以選擇是4。當然,我們也可以選擇段地址為8F00,那麽便宜地址就是0354。因為這個是16進制,所以我們可以知道段地址在乘16之後,其實就是在後面加上一個0,這個就和十進制算法一樣,只不過有些人不明白是腦子轉不過來,之後再相加就是8F354H。
最後的部分就是CS和IP的部分,這部分理解起來也還好,就是每一部分我們的命令都是有機器碼的,機器碼都是有各自的地址的,我們從一部分指令開始之後,按照我們的正常順序應該是直接繼續下面,但是這裏不一定,機器碼可以直接往下跳,比如我們在10000H的地址先進行3個格子的機器碼操作,之後那麽IP變成3位,然後如果但是如果我們後面有一個指令jmp 2000:3,那麽就是CS變成2000,IP變成3,那我們的下一步操作就要從物理地址=2000X16+3的地方開始進行。
不過我有點忘記了,剛開始時候我對這一部分有哪一部分並不清楚的,但是又忘記了哪一部分不清楚。就導致我忘記了,我有什麽不清楚的了。

第二章總結