匯編語言——段寄存器
????CS 指令代碼段寄存器 IP指令偏移地址寄存器,CPU只認為被CS:IP指向的內(nèi)存單元的內(nèi)容是指令。通過jmp指令對于CS:IP進行修改操作,可以同時修改,也可以只修改偏移地址。
????CPU找到內(nèi)存中對應(yīng)CS:IP地址的二進制數(shù)據(jù),通過控制總線讀取相應(yīng)的指令,將其存入指令緩沖器中。然后IP=IP+當前指令長度,偏移地址指向下一條指令的位置。再執(zhí)行當前指令。最后回到最開始進行循環(huán)。
????任何兩個地址連續(xù)的內(nèi)存單元,N號和N+1號,可以把他們看成兩個單獨的內(nèi)存字節(jié)(8bit),也可以把他們看成是地址為N的字(16個bit長度的字)單元中的高位字節(jié)與低位字節(jié)。
????DS寄存器,存儲訪問數(shù)據(jù)的段地址。mov指令可以自動獲取DS中已經(jīng)存儲的訪問數(shù)據(jù)的段地址,然后加上賦值的偏移地址,把對應(yīng)的內(nèi)存單元中的數(shù)據(jù)讀入通用寄存器。8086CPU不支持直接將數(shù)據(jù)放入段寄存器中,只能通過通用寄存器中轉(zhuǎn)。
????DS內(nèi)部存儲段地址,【address】內(nèi)表示偏移地址,共同構(gòu)成物理地址。
????一定要注意ax是16位bit長度,兩個字節(jié)一個字,mov,add等指令執(zhí)行的時候需要獲取內(nèi)存中連續(xù)地址的兩個字節(jié)長度的數(shù)據(jù),字節(jié)與字的長度對應(yīng)關(guān)系。8086CPU 一組若干長度的內(nèi)存單元可以被指定為一個段 段長不能超過64KB。