我們想用匯編語言控制我們想控制的外設(shè),就必須通過控制器發(fā)送控制命令,那這些控制命令存放在哪里,就放在CPU內(nèi)部組成單元之一,寄存器里面。
1、CPU內(nèi)部一般由4部分組成
(1)運算器:進行信息的處理
(2)寄存器進行信息的存儲
(3)控制器控制各種器件進行工作
(4)內(nèi)部總線:進行內(nèi)部器件間的數(shù)據(jù)交互 2、匯編指令舉例
2、物理地址的理解 物理地址顧名思義就是硬件內(nèi)存單元的地址,CPU通過地址總線訪問物理地址。
物理地址(以8086CPU為例)=段地址*16+偏移地址
為了更好理解物理地址我們舉個例子
如上圖:
(1)從學(xué)校走2826米到圖書館,這2826米可以認(rèn)為是圖書館的物理地址
(2)從學(xué)校走2000米到圖書館,從體育館再走826米到圖書館,第一個距離2000米,就是相對于起點的基礎(chǔ)地址,(起點就是我們內(nèi)存地址的開始地址)第二個距離826米就是對基礎(chǔ)地址的偏移地址。
這就相當(dāng)于 基礎(chǔ)地址 = 段地址*16, 物理地址=基礎(chǔ)地址+偏移地址
3、什么是寄存器?
段寄存器就是存儲段地址的內(nèi)存,常用的段寄存器有:CS,DS,SS,ES.
我們主要用到 CS:IP這兩個寄存器,這兩個寄存器分別為 代碼段寄存器和指令指針寄存器,下圖簡單給出8086CPU讀取,執(zhí)行指令的工作原理
如上圖我們我們通過 CS:IP找到物理地址-》然后通過地址加法器-》輸入輸出控制電路-》20為地址總線-》通過匯編取D8,23,01-》數(shù)據(jù)總線-》指令緩存器-》執(zhí)行控制器-》AX通用寄存器,就是這樣一個執(zhí)行過程。
4、DS段寄存器的應(yīng)用
mov bx,1000H
mov ds.bx
mov al,[0]
上面3條指令將1000H(1000:0)中的數(shù)據(jù)讀到al中
5、棧
每個平臺的CPU都有自己的棧的設(shè)計,8086CPU也不例外,棧的形式是LIFO后進先出,PUSH表示如棧,POP表示出棧。如:push ax 把寄存器 ax的數(shù)據(jù)送入棧中,pop ax把棧中的數(shù)據(jù)取出來賦值給ax,8086棧操作是以字為單位的,也就2個字節(jié)。
下圖為8086CPU對push指令的執(zhí)行過程
8086CPU對pop指令的執(zhí)行過程如下圖
1.《(匯編如何給寄存器賦值)匯編寄存器賦值語句!》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《(匯編如何給寄存器賦值)匯編寄存器賦值語句!》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/keji/3215990.html