匯編語言
匯編語言是在機(jī)器語言之上的一層語言,在直接操作硬件層面之上的,控制硬件系統(tǒng)去工作。簡單來說,匯編語言就是機(jī)器指令便于記憶的書寫格式。
機(jī)器指令就是由匯編指令,偽指令和其他符號構(gòu)成,匯編指令相當(dāng)于是助記分符號,偽指令就是編譯器來負(fù)責(zé)運(yùn)行,其他符號就是編譯器來識別。
CPU對于數(shù)據(jù)的讀寫,在存儲的內(nèi)存或磁盤單元上,指令和數(shù)據(jù)是沒有任何區(qū)別的,都是0101式的二進(jìn)制文件。
CPU根據(jù)地址總線、數(shù)據(jù)總線和控制總線來分別傳輸對應(yīng)的內(nèi)容。
CPU通過地址總線來指定存儲單元,地址總線的位數(shù)就是同時能傳輸多少不同的信息,CPU就可以對多少個存儲單元進(jìn)行尋址,N位地址線對應(yīng)2^N個地址位。
CPU是由低位到高位進(jìn)行索引的,先存儲的是個位數(shù),再是十百千。
數(shù)據(jù)總線的寬度決定了CPU與外界的數(shù)據(jù)傳輸速度。
CPU通過控制總線來完成對外部元件的控制,控制總線的數(shù)量代表著對器件的控制能力,也就是能產(chǎn)生多少種不同的控制命令。
每一款CPU都有自己的匯編指令集,CPU可以直接使用的信息在存儲器中存放。
CPU的地址寬度為10,可以搜尋到2^10個位置,構(gòu)成內(nèi)存地址空間。BIOS,Basic Input/Output System。RAM 隨機(jī)存儲器,ROM 只讀存儲器。

所有的存儲器都和CPU的主線相連接,對于它們的讀寫命令都是通過控制總線,CPU是看不見具體的內(nèi)存空間,只有根據(jù)地址來分別訪問,將這些不同的存儲器看作一個大的邏輯存儲器來進(jìn)行使用。

匯編指令注意逗號的位置,mov ax是一整個指令,只用一個字節(jié)進(jìn)行存儲,中間是沒有逗號的。mov指令是將后面的寄存器里面的數(shù)據(jù)放到前面寄存器。AX BX等普通的通用寄存器的最大寬度為16位,為了兼容8位系統(tǒng),可以將其劃分為上8位和下8位寄存器,分別用AH和AL來表示。
ALU運(yùn)算器一次能處理16位的數(shù)據(jù)運(yùn)算,寄存器的最大寬度為16位,運(yùn)算器和寄存器之間的鏈路寬度為16位。
當(dāng)在處理add指令時出現(xiàn)進(jìn)位的情況需要處理的時候,會出現(xiàn)進(jìn)位丟失的情況,不在當(dāng)前的寄存器中存儲進(jìn)位數(shù)據(jù),而是會專門存儲,并不是真正意義上的丟失。

8086CPU的與外部器件相連的地址總線的寬度為20位,尋址能力為1MB,但是內(nèi)部的寬度僅為16位,64KB的尋址能力,存在差距。因此使用兩個16位的地址合成一個20位的物理地址。
物理地址=段地址*16+偏移地址,內(nèi)存中是不存在段這種物理結(jié)構(gòu)的,短的劃分是來自于CPU的邏輯運(yùn)算。*16的操作就相當(dāng)于二進(jìn)制數(shù)左移4位。偏移地址的長度為16位,也就是最多一個段內(nèi)有64KB的內(nèi)存單元。注意:一個物理地址可以由很多不同的段地址和偏移地址相加來形成。