![華科匯編語言程序設計課件第1章_第1頁](http://file4.renrendoc.com/view/5c9180c82a47c5c2fd0f84462a4de3bf/5c9180c82a47c5c2fd0f84462a4de3bf1.gif)
![華科匯編語言程序設計課件第1章_第2頁](http://file4.renrendoc.com/view/5c9180c82a47c5c2fd0f84462a4de3bf/5c9180c82a47c5c2fd0f84462a4de3bf2.gif)
![華科匯編語言程序設計課件第1章_第3頁](http://file4.renrendoc.com/view/5c9180c82a47c5c2fd0f84462a4de3bf/5c9180c82a47c5c2fd0f84462a4de3bf3.gif)
![華科匯編語言程序設計課件第1章_第4頁](http://file4.renrendoc.com/view/5c9180c82a47c5c2fd0f84462a4de3bf/5c9180c82a47c5c2fd0f84462a4de3bf4.gif)
![華科匯編語言程序設計課件第1章_第5頁](http://file4.renrendoc.com/view/5c9180c82a47c5c2fd0f84462a4de3bf/5c9180c82a47c5c2fd0f84462a4de3bf5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章預備知識第一章預備知識1一、本章的學習內容:本章學習匯編語言的預備知識:1.什么是匯編語言?2.Intel80X86微處理器中的寄存器組3.主存儲器的編址方式及物理地址的形成方式4.數(shù)和符號在計算機中的表示方法5.標志寄存器6.匯編源程序的基本結構
第一章預備知識一、本章的學習內容:第一章預備知識第一章預備知識二、本章的學習重點:1.匯編語言、匯編程序的概念2.80X86寄存器組3.堆棧的概念、進棧、出棧指令4.實模式和保護模式下物理地址的形成5.整數(shù)和字符串的表示方法6.CF、OF、ZF、SF標志位7.匯編源程序舉例
第一章預備知識二、本章的學習重點:三、本章學習的難點:
1.寄存器組各個寄存器的名稱和用途2.PUSH/POP指令、堆棧指示器的變化3.保護模式下物理地址的形成4.有符號數(shù)、無符號數(shù)及其運算對于標志寄存器的影響第一章預備知識三、本章學習的難點:第一章預備知識1.1機器語言與匯編語言1.機器語言(指令)機器語言的特點:由0和1組成的二進制碼。(2)能為計算機識別并執(zhí)行。(3)不同類型的機器,不同類型的CPU都有自己特有的、一定數(shù)量的基本指令。1.1機器語言與匯編語言1.機器語言(指令)機器指令(硬指令):指揮計算機完成某一基本操作的命令,是面向機器的。
操作種類操作數(shù)存放位置例:10111011BB——操作碼0011010034——操作數(shù)0001001012操作:1234H→BX1.1機器語言與匯編語言操作碼
地址碼機器指令(硬指令):指揮計算機完成某一基本操作的命令,是面向指令系統(tǒng):每臺計算機都規(guī)定了自己所特有的、一定數(shù)量的基本命令,這批指令的全體為計算機的指令系統(tǒng)機器語言:機器指令的集合機器語言程序:用機器語言編寫的程序1.1機器語言與匯編語言指令系統(tǒng):每臺計算機都規(guī)定了自己所特有的、一定數(shù)量的基本命令2.匯編語言(改進的方案)
助記符變量或標號
匯編語言:一種用符號書寫的、其操作與機器指令一一對應的,并遵循一定語法規(guī)則的計算機語言。1.1機器語言與匯編語言操作碼
地址碼2.匯編語言(改進的方案)
1.1機器語言與匯編語言例2:剛才的例子若用匯編語言來書寫:操作碼地址碼BB3412 MOVBX,1234H1.1機器語言與匯編語言例2:剛才的例子若用匯編語言來書寫:1.1機器語言與匯編語匯編源程序用匯編語言編寫的程序——類似于高級語言編寫的源程序匯編程序把匯編源程序翻譯成目標程序的(語言加工)程序——類似于高級語言的編譯程序匯編匯編程序對源程序進行翻譯的過程——類似于高級語言的編譯過程1.1機器語言與匯編語言匯編源程序1.1機器語言與匯編語言機器語言、匯編語言和高級語言的比較機器語言匯編語言高級語言計算機能否直接識別能不能不能易用性差中好占據(jù)空間小小大執(zhí)行速度快快慢用途特殊加密/解密系統(tǒng)核心要求速度快,代碼短的程序直接操縱I/O信息安全一般性軟件開發(fā)1.1機器語言與匯編語言機器語言、匯編語言和高級語言的比較機器語言匯編語言高級語言計1.2Intel系列機簡介微型計算機的構成1.2Intel系列機簡介微型計算機的構成1.2.280x86微處理器結構80x86微處理器結構1.2.280x86微處理器結構80x86微處理器結構1.總線接口部件:是CPU與計算機系統(tǒng)中其它功能部件之間的高速接口功能:接受所有的總線操作請求,并按優(yōu)先權進行選擇,最大限度地利用本身的資源為這些請求服務。2.執(zhí)行部件:寄存器組、標志寄存器、算邏部件、控制部件等組成功能:從譯碼指令隊列中取出指令并且執(zhí)行1.2.280x86微處理器結構1.總線接口部件:是CPU與計算機系統(tǒng)中其它功能部件之間的(1)數(shù)據(jù)寄存器組(EAX,EBX,ECX,EDX)EAX(累加器)AccumulatorEBX(基址寄存器)BaseECX(計數(shù)寄存器)CountEDX(數(shù)據(jù)寄存器)Data作用:用來保存操作數(shù)、運算結果或作指示器、變址寄存器,減少存取操作數(shù)所需要的訪問總線和主存儲器的時間,加快運行速度。1.2.280x86微處理器結構(1)數(shù)據(jù)寄存器組(EAX,EBX,ECX,EDX)1.2注意: 它們既可作32位、16位寄存器,也可作8位寄存器使用。 8位的寄存器不能作指示器或變址寄存器。
1.2.280x86微處理器結構注意:1.2.280x86微處理器結構(2)指示器變址寄存器組(ESI、EDI、ESP、EBP)作用:一般用來存放操作數(shù)的偏移地址,用作指示器或變址寄存器。 ESP(StackPointer),稱為堆棧指示器,存放的是當前堆棧段中棧頂?shù)钠频刂罚?EBP(BasePointer),為對堆棧操作的基址寄存器; ESI(SourceIndex),稱為源變址寄址器;字符串指令源操作數(shù)的指示器 EDI(DestinationIndex),稱為目的變址寄存器;字符串指令目的操作數(shù)的指示器1.2.280x86微處理器結構(2)指示器變址寄存器組(ESI、EDI、ESP、EBP)3.指令預取部件和指令譯碼部件 指令預取部件:通過總線接口部件,把將要執(zhí)行的指令從主存中取出,送入指令排隊機構中排隊。 指令譯碼部件:從指令預取部件中讀出指令并譯碼,再送入譯碼指令隊列排隊供執(zhí)行部件使用。 指令(地址)指示器:它總是保存著下一條將要被CPU執(zhí)行的指令的偏移地址(簡稱EA),其值為該指令到所在段首址的字節(jié)距離。1.2.280x86微處理器結構3.指令預取部件和指令譯碼部件1.2.280x86微處理4.分段部件和分頁部件
使用分段部件和分頁部件實現(xiàn)虛擬存儲空間映射到物理存儲空間 程序員使用二維地址段地址:段內偏移地址 分段部件 段地址:段內偏移地址一維的線性的地址 分頁部件 虛擬的線性的地址主存儲器的物理地址
1.2.280x86微處理器結構4.分段部件和分頁部件1.2.280x86微處理器結構段寄存器:低檔處理器保存段首地址,高檔處理器保存選擇字代碼段寄存器CS堆棧段寄存器SS數(shù)據(jù)段寄存器DS附加段寄存器ES附加段寄存器FS附加段寄存器GS
1.2.280x86微處理器結構段寄存器:低檔處理器保存段首地址,高檔處理器保存選擇字1.2指令執(zhí)行過程:(1)指令預取部件和指令譯碼部件 EIP指令的偏移地址EIP增量,形成下一條指令的地址(2)分段部件和分頁部件 CS:EIP指令的物理地址(3)總線接口部件 從主存中取指令預取指令隊列1.2.280x86微處理器結構指令執(zhí)行過程:1.2.280x86微處理器結構(4)CPU按序從預取指令隊列中取出指令指令譯碼部件。(5)指令譯碼部件譯碼執(zhí)行部件執(zhí)行指令;(6)執(zhí)行過程中若需要取主存操作數(shù)操作數(shù)偏移地址(7)分段部件和分頁部件 偏移地址,段寄存器操作數(shù)的物理地址(8)總線接口部件 從主存中取數(shù)據(jù)執(zhí)行部件1.2.280x86微處理器結構(4)CPU按序從預取指令隊列中取出指令指令譯碼部件1.實方式(實際地址) 操作相當于一個可進行32位快速運算的8086(內部32位、外部總線16位數(shù)據(jù)、20位地址)2.保護方式(虛地址) 是80X86設計目標全部達到的工作方式,通過對程序使用的存儲區(qū)采用分段、分頁的存儲管理機制,達到分級使用互不干擾的保護目的。能為每個任務提供一臺虛擬處理器,使每個任務單獨執(zhí)行,快速切換。3.虛擬8086方式 保護方式下所提供的同時模擬多個8086處理器。
1.2.280x86的三種工作方式1.實方式(實際地址)1.2.280x86的三種工作方式 存儲器:用來存放程序和數(shù)據(jù)的裝置,包括主存和外存。 主存儲器:主機內部的半導體存儲器,相對外存,容量小,速度快,成本高。1.3主存儲器和物理地址的形成 存儲器:用來存放程序和數(shù)據(jù)的裝置,包括主存和外存。1.3主存儲器編址方式 主存儲器的基本記憶單元是位,它能記憶/容納一個二進制數(shù)0或1。
8位組成一個字節(jié),當前微機一個存儲單元存放一個字節(jié)。 為了區(qū)別不同的存儲單元,每一存儲單元都被指定一個編號,編號作為存儲單元的物理地址。1.3.1主存儲器主存儲器編址方式1.3.1主存儲器80X86系統(tǒng)中主存是按字節(jié)編址的,即字節(jié)作最小訪問單位。
1.3.1主存儲器80X86系統(tǒng)中主存是按字節(jié)編址的,即字節(jié)作最小訪問單位。字:由2個字節(jié)組成,字地址由兩字節(jié)地址較小的一個(即低字節(jié))的地址表示。存放的方式是低8位存放低字節(jié),高8位存放高字節(jié)。雙字:雙字的地址也由四個字節(jié)中的最低地址表示1.3.1主存儲器雙字(32位)字(16位)字(16位)字節(jié)(8位)字節(jié)(8位)字節(jié)(8位)字節(jié)(8位)76543210字:由2個字節(jié)組成,字地址由兩字節(jié)地址較小的一個(即低字節(jié))問題:一個字數(shù)據(jù)該怎樣存入計算機主存呢?雙字數(shù)據(jù)呢?
高-高低-低字:要占有連續(xù)的兩個字節(jié).16位中,低8位存放在低字節(jié)地址中,高8位存放在相鄰的高字節(jié)地址中。雙字:32位中,低16位存放在低字地址中,高16位存放在相鄰的高字地址中。1.3.1主存儲器問題:一個字數(shù)據(jù)該怎樣存入計算機主存呢?雙字數(shù)據(jù)呢?1.1.3.1主存儲器1.3.1主存儲器從邏輯上來看:是內存中開辟的一片存貯區(qū),這片存貯區(qū)采用的存貯方式是一端固定,一端活動,即只允許在一端插入或刪除(訪問可任意)。堆棧中數(shù)據(jù)的存取原則:“先進后出”,堆棧中的數(shù)據(jù)也稱元素或棧項。元素進棧稱壓入,出棧稱彈出。1.3.2堆棧從邏輯上來看:是內存中開辟的一片存貯區(qū),這片存貯區(qū)采用的存貯從硬件的觀點看堆棧必須由一片存貯單元和一個指示器組成。 固定端叫棧底。棧指針用來指示棧頂進棧和出棧時偏移地址的變化指針所指示的最后存入信息的單元叫棧頂,所有信息的存取都在棧頂進行,棧指針總是指向棧頂?shù)摹?.3.2堆棧從硬件的觀點看堆棧必須由一片存貯單元和一個指示器組成。 1 問題:為什么要用堆棧? 程序中經(jīng)常用到子程序或處理中斷,此時,主程序需要把子程序或中斷程序將用到的寄存器內容保護起來,以便子程序或中斷返回后,主程序能夠從調用點或中斷點處繼續(xù)執(zhí)行。 此外,堆棧還經(jīng)常用于: 保護和恢復現(xiàn)場 主程序和子程序之間傳遞參數(shù) 子程序中的局部變量1.3.2堆棧 問題:為什么要用堆棧?1.3.2堆棧1.進棧指令PUSH
格式:PUSHOPS功能:將立即數(shù)、寄存器、段寄存器或存貯器中的一個字/雙字數(shù)據(jù)壓入堆棧。例:PUSHAX設:(AX)=4241H(SP)=10000H 執(zhí)行:①(SP)-2→SP ②(AX)→(SP)
1.3.2堆棧1.進棧指令PUSH1.3.2堆棧1.3.2堆棧1.3.2堆棧出棧指令POP 格式:POPOPD 功能:將棧頂元素彈出送至某一寄存器、段寄存器(除CS外)或字/雙字存貯單元中。 例:POPBX 設指令執(zhí)行前:(BX)=1111H,堆棧內容如上題所示。
1.3.2堆棧出棧指令POP1.3.2堆棧1.3.2堆棧1.3.2堆棧問題的由來 8086的限制,20位地址總線,16位寄存器(SP,BP,SI,DI)。問題:如何通過16位寄存器訪問1MB的內存解決:將1M字節(jié)主存分段,每段最多64K字節(jié)1.3.3存儲器物理地址的形成問題的由來1.3.3存儲器物理地址的形成
分段管理的方法:段寄存器保存起始首地址+段內偏移地址的總體策略。 段首地址分別存放在:段寄存器CS、DS、ES、SS、FS、GS中
段內偏移地址:段內相對于段起始地址的偏移值,往往由SP、BP、SI、DI、IP給出。
1.3.3存儲器物理地址的形成分段管理的方法:1.3.3存儲器物理地址的形成1.實模式PA=段寄存器保存的16位二進制數(shù)后補4個0+EA1.3.3存儲器物理地址的形成1.實模式1.3.3存儲器物理地址的形成分段的實際作用: (1)實現(xiàn)了16位表示20位的地址; (2)當程序和數(shù)據(jù)的大小<64KB時,編制的程序可只關心EA,而不用管它的起始地址在哪(便于程序在主存中任何位置運行) (3)便于不同目的的程序或數(shù)據(jù)分開存放,使程序各部分的含義更加明確。1.3.3存儲器物理地址的形成分段的實際作用:1.3.3存儲器物理地址的形成2.保護模式保護什么:分清不同程序使用的存儲區(qū)域,不允許隨便使用別人的數(shù)據(jù)和代碼。必要條件:(1)要標記每段存儲區(qū)的所有者或被使用的權限級別。(2)要標記使用者是誰(權限級別)。(3)中間環(huán)節(jié):CPU要去判斷此次訪問是否合法。1.3.3存儲器物理地址的形成2.保護模式1.3.3存儲器物理地址的形成(1)如何標記存儲區(qū) 操作系統(tǒng)每次將某塊存儲區(qū)分給某程序使用時,用8個字節(jié)的描述符描述這段存儲區(qū)的特征。1.3.3存儲器物理地址的形成(1)如何標記存儲區(qū)1.3.3存儲器物理地址的形成1.3.3存儲器物理地址的形成1.3.3存儲器物理地址的形成(2)如何標記使用者1.3.3存儲器物理地址的形成(2)如何標記使用者1.3.3存儲器物理地址的形成 程序的權限由程序所在的段決定,由當前程序正在使用的段寄存器內的段選擇符反映。1.3.3存儲器物理地址的形成 程序的權限由程序所在的段決定,由當前程序正在使用的段寄存器(3)中間執(zhí)行環(huán)節(jié):CPU去判斷例如,執(zhí)行:MOVAL,DS:[100H]設: (CS)=0000000000001111B, (DS)=0000000000001001B,(a)程序權限與被訪問數(shù)據(jù)段的權限的關系;(b)(DS)指向的描述表中尋找描述符;(c)對應描述符描述的段是否可以被訪問;(類別、權限)(d)從描述符2中提取段的首地址(32位);(e)段的首地址(32位)+32位EA(100H)=線性地址,不分頁時即為PA(f)送出PA,選中存儲單元,將內容讀出后送入AL中。1.3.3存儲器物理地址的形成(3)中間執(zhí)行環(huán)節(jié):CPU去判斷1.3.3存儲器物理地址的保護方式的實際含義:程序知道的“段首址”實際上是一個代號,是一個虛擬的起始地址,CPU通過轉換才能獲得真正的段首地址。在這個由CPU完成的轉換過程中,實現(xiàn)了訪問權限的判斷,達到了保護的目的。1.3.3存儲器物理地址的形成保護方式的實際含義:1.3.3存儲器物理地址的形成1.4數(shù)據(jù)在計算機內的表示形式1.4數(shù)據(jù)在計算機內的表示形式對于有符號數(shù),一律采用二進制補碼,對n位數(shù)有:1.4.1數(shù)值數(shù)據(jù)對于有符號數(shù),一律采用二進制補碼,對n位數(shù)有:1.4.1數(shù)補碼表示的幾個特點:
1.所有正數(shù)的補碼表示最左(高)位為0,其二進制補碼表示為本身; 2.所有負數(shù)的補碼表示最左(高)位為1,其補碼表示為:(原碼)除符號位保持不變外,其它位取反加1。 例如:設n=8, [50]補=[00110010B]補=00110010B [-50]補=[-00110010B]補=11001110B1.4.1數(shù)值數(shù)據(jù)補碼表示的幾個特點:1.4.1數(shù)值數(shù)據(jù)1.4.1數(shù)值數(shù)據(jù) 3.一個二進制補碼的最高位向左延伸S位,所得到的仍是此數(shù)的補碼表示。1.4.1數(shù)值數(shù)據(jù) 3.一個二進制補碼的最高位向左延伸S位例:設n=8X1=-01010111B(-87),X2=-00110101B(-53),求[X1+X2]補[X1+X2]補=[X1]補+[X2]補=10101001B+11001011B=101110100B(116)>0相加后,原本8位的二進制數(shù)變成了9位,這多出的一位稱為進位位。由于一個字節(jié)只能是8位,多出的一位(即進位位)就被丟掉了,這種情況稱為溢出。1.4.1數(shù)值數(shù)據(jù)例:設n=8X1=-01010111B(-87),1在標志寄存器中有一溢出位OF,當出現(xiàn)上述情況時,則OF位置1,檢查OF就可判斷運算是否溢出。對加運算來說,使OF位置1的條件是:同符號數(shù)相加,結果的符號與之相反,則OF為1,否則為0。即:正數(shù)+正數(shù)=負數(shù)負數(shù)+負數(shù)=正數(shù)OF=1OF=1正數(shù)+正數(shù)=正數(shù)負數(shù)+負數(shù)=負數(shù)OF=0OF=01.4.1數(shù)值數(shù)據(jù)在標志寄存器中有一溢出位OF,當出現(xiàn)上述情況時,則OF位例:設n=8,X1=-01000010B(-66),X2=01101101B(109),求[X1]補-[X2]補。
[X1]補-[X2]補=[X1]補+[X2]補=10111110B+10010011B=101010001B(81)>0在用補碼作減運算時,負數(shù)減正數(shù),一定為負數(shù)(結果),而結果為正說明產(chǎn)生了溢出。
1.4.1數(shù)值數(shù)據(jù)例:設n=8,X1=-01000010B(-66),1.4對減運算來說,如果被減數(shù)與減數(shù)異號,且結果的符號與減數(shù)相同(與被減數(shù)相反),說明運算產(chǎn)生了溢出,結果是錯誤,否則不是溢出。即:正數(shù)-負數(shù)=負數(shù)負數(shù)-正數(shù)=正數(shù)OF=1正數(shù)-負數(shù)=正數(shù)負數(shù)-正數(shù)=負數(shù)OF=01.4.1數(shù)值數(shù)據(jù)對減運算來說,如果被減數(shù)與減數(shù)異號,且結果的符號與減數(shù)相n十進制數(shù)表示范圍十六進制數(shù)表示范圍最大值最小值最大值最小值8位25500FFH016位6553500FFFFH032位429496729500FFFFFFFFH01.4.1數(shù)值數(shù)據(jù)無符號數(shù)表示范圍n十進制數(shù)表示范圍十六進制數(shù)表示范圍最大值最小值最大值最小值有符號數(shù)表示范圍1.4.1數(shù)值數(shù)據(jù)n十進制數(shù)表示范圍二進制數(shù)表示范圍補碼表示范圍最大值最小值最大值最小值最大值最小值8位+127-12827-1-277FH80H16位+32767-32768215-1-2157FFFH8000H32位+2147483647-2147483648231-1-2317FFFFFFFH80000000H有符號數(shù)表示范圍1.4.1數(shù)值數(shù)據(jù)n十進制數(shù)表示范圍二進制BCD(BinaryCodedDecimal)碼(8421碼)用4位二進制數(shù)(例如0000~1001)表示1位十進制數(shù)(0~9)。如:1983=0001100110000011BCD非壓縮的BCD碼:一個字節(jié)存放一個十進制數(shù)位00000000=000000001=100000010=2壓縮的BCD碼:一個字節(jié)存放2個十進制數(shù)碼00010000=1010001001=891.4.2BCD碼BCD(BinaryCodedDecimal)碼(841.4.3字符數(shù)據(jù)鍵盤輸入的字母和數(shù)字、顯示器顯示的文字等都是字符信息。
西文:常用的將字符與2進制數(shù)對應起來的編碼方法是美國信息標準交換代碼ASCII碼。漢字:GB2312編碼
區(qū)位碼表:分94區(qū)*94位,包括一級漢字(最常用漢字,按拼音排序)和二級漢字(稍常用漢字,按部首排序),均為簡體漢字,共約6700個。1.4.3字符數(shù)據(jù)鍵盤輸入的字母和數(shù)字、顯示器顯示的文
標志寄存器用來保存在一條指令執(zhí)行之后,CPU所處狀態(tài)的信息及運算結果的特征
16位標志寄存器:FLAGS 32位標志寄存器:EFLAGS1.5標志寄存器 1.5標志寄存器一、條件標志位1.符號標志SF(7) 若運算結果為負則SF=1,否則SF=0; 這里負是指運算結果的最高位為1則SF=12.零標志ZF(6) 若運算結果為0則ZF=1,否則ZF=0例: MOVAX,0 ADDAX,1SF=0ZF=0 SUBAX,1SF=0ZF=1 SUBAX,2SF=1ZF=01.5.1標志位一、條件標志位1.5.1標志位 3.溢出標志OF(11) 當將操作數(shù)作為有符號數(shù)看時,使用該標志位判斷運算結果是否溢出。 加法:若同符號數(shù)相加,結果的符號與之相反則OF=1,否則OF置0。 減法:被減數(shù)與減數(shù)異號,而結果的符號與減數(shù)相同則OF=1,否則置0。1.5.1標志位 3.溢出標志OF(11)1.5.1標志位 4.進位標志CF(0)將操作數(shù)看作無符號數(shù)時,使用該標志位判斷運算結果是否發(fā)生了進位或者借位。
加法:若運算結果從字或字節(jié)的最高位向前產(chǎn)生了進位則CF置1,否則置0。
減法:兩數(shù)相減,若將它們看作無符號數(shù),則夠減無借位置0,有借位置1。1.5.1標志位 4.進位標志CF(0)1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000001004+4+00001011+11+(+11)
0000111115+15
無符號數(shù)15CF=0OF=0有符號數(shù)151.5.1標志位實際運算結果應得結果1.5.11.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000001117+7+11111011+251+(-5)
1
00000010258+2
無符號數(shù)2CF=1OF=0有符號數(shù)21.5.1標志位實際運算結果1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000010019+9+01111100+124+(+124)
10000101133+133
無符號數(shù)133CF=0OF=1有符號數(shù)-1231.5.1標志位實際運算結果1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
10000111135-121+11110101+245+(-11)
1
01111100380-132
無符號數(shù)124CF=1OF=1有符號數(shù)1241.5.1標志位實際運算結果5.奇偶標志位PF(2)當運算結果(指低8位)中1的個數(shù)為偶數(shù)時,PF置1,否則置0。該標志位主要用于檢測數(shù)據(jù)在傳輸過程中的錯誤。6.輔助進位標志位AF(4)標識作字節(jié)運算的時候低半字節(jié)向高半字節(jié)的進位和借位。有進位和借位時AF置1,否則置0。1.5.1標志位5.奇偶標志位PF(2)1.5.1標志位二、控制標志位1.方向標志DF(10) 控制串操作指令的處理方向 DF=0,地址遞增(從低地址向高地址變化) DF=1,地址遞減(從高地址向低地址變化)2.中斷允許標志IF(9) 控制CPU是否允許響應外設的中斷請求。 IF=0,關中斷(CPU屏蔽外設的中斷請求) IF=1,開中斷(CPU響應外設的中斷請求)3.跟蹤(單步)標志TF(8) 控制單步執(zhí)行。 TF=0,CPU連續(xù)工作 TF=1,CPU單步執(zhí)行1.5.1標志位二、控制標志位1.5.1標志位1.標志寄存器傳送指令①LAHF功能:將標志寄存器的低8位→AH說明:本指令不帶操作數(shù),也不影響標志位。②SAHF功能:將(AH)→標志寄存器的低8位。說明:標志寄存器原來低8位的內容全部被沖掉,以AH的內容來取代。但它算不影響高字節(jié)內容。(因高字節(jié)中以控制標志為主,不能隨便改變)
1.5.2標志寄存器操作指令1.標志寄存器傳送指令1.5.2標志寄存器操作指令
③標志寄存器進棧指令PUSHF功能:將標志寄存器內容壓入堆棧即:(SP)–2→SP(FLAGS)→↓(SP)
④標志寄存器出棧指令POPF功能:將棧頂?shù)膬热菟腿霕酥炯拇嫫?.5.2標志寄存器操作指令③標志寄存器進棧指令PUSHF1.5.2標志寄存器操作2.標志位操作指令CLC使CF=0(Clearcarry)進位標志CFCMC使CF取反(Complementcarry)STC使CF=1(Setcarry)CLD使DF=0(Cleardirection)方向標志DFSTD使DF=1(Setdirection)CLI使IF=0(Clearinterrupt)中斷標志IFSTI使IF=1(Setinterrupt)1.5.2標志寄存器操作指令2.標志位操作指令1.5.2標志寄存器操作指令.386(綠色部分可省略,紅色為段名);數(shù)據(jù)段DATASEGMENTUSE16;段為16位段SUMDW?;SUM為字變量,初值不定DATAENDS1.6匯編源程序舉例.386(綠色部分可省略,紅色為段名)1.6;堆棧段
STACKSEGMENTUSE16STACK;段名和組合類型DB200DUP(0);定義堆棧為200個字節(jié)STACKENDS1.6匯編源程序舉例;堆棧段1.6匯編源程序舉例;代碼段CODESEGMENTUSE16
ASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AX;數(shù)據(jù)段首址送DS1.6匯編源程序舉例;代碼段1.6匯編源程序舉例MOVCX,50;循環(huán)計數(shù)器置初值MOVAX,0;累加器置初值MOVBX,1;1→BXNEXT:ADDAX,BX;(AX)+(BX)→AXINCBXINCBX;(BX)+2→BXDECCX;(CX)-1→CXJNENEXT;(CX)≠0轉NEXTMOVSUM,AX;(CX)=0累加結果→SUM1.6匯編源程序舉例MOVCX,50;循環(huán)計數(shù)器置初值1.
MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;源程序結束語句。程序運行時,啟動地址為START。
1.6匯編源程序舉例MOVAH,4CH1.6匯編源程序舉與C語言程序的對比:main()
{
intsum=0;//初始化變量
inti,j;
j=1;
for(i=0;i<50;i++)
{
sum=sum+j;//求和 j+=2;
}}比較:C語言程序編譯成可執(zhí)行文件之后,大小為24K字節(jié)。匯編語言為幾百字節(jié)。1.6匯編源程序舉例與C語言程序的對比:1.6匯編源程序舉例總結:匯編語言語句的格式[名字]操作符[操作數(shù)或地址][;注釋]名字:段名、變量名、標號名字母、數(shù)字、特殊符號(_、@等)組成,不能以數(shù)字開始。不可重名、不可與關鍵字相同1.6匯編源程序舉例總結:匯編語言語句的格式1.6匯編源程序舉例
機器指令助記符=>機器指令語句
操作符偽指令助記符=>偽指令語句
宏定義名=>宏指令語句1.6匯編源程序舉例機器指令助記符=>機器指令語句1.6
操作數(shù):2個:ADDAX,BX雙操作數(shù)指令1個:INCAX單操作數(shù)指令0個:CLC零操作數(shù)指令1.6匯編源程序舉例操作數(shù):1.6匯編源程序舉例本章應掌握的主要問題:1.匯編語言、匯編源程序、匯編程序的概念。2.通用寄存器組(EAXEBXECXEDX)、作指示和變址寄存器的寄存器組(ESIEDIEBPESP)、段寄存器組(CSDSESSS)、指令指示器(EIP)的作用。第一章總結本章應掌握的主要問題:第一章總結3.主存編址方式、物理地址的形成方式。堆棧的概念和堆棧操作指令PUSH、POP的功能及使用格式。4.在80x86機中,數(shù)的表示范圍(有符號、無符號),壓縮和非壓縮BCD碼的表示形式,字符在機內的表示形式。5.標志寄存器SF、ZF、OF、CF標志位改變方法6.匯編源程序的基本結構第一章總結3.主存編址方式、物理地址的形成方式。堆棧的概念和堆棧操作指本章作業(yè)1.21.51.111.14本章作業(yè)1.2第一章預備知識第一章預備知識85一、本章的學習內容:本章學習匯編語言的預備知識:1.什么是匯編語言?2.Intel80X86微處理器中的寄存器組3.主存儲器的編址方式及物理地址的形成方式4.數(shù)和符號在計算機中的表示方法5.標志寄存器6.匯編源程序的基本結構
第一章預備知識一、本章的學習內容:第一章預備知識第一章預備知識二、本章的學習重點:1.匯編語言、匯編程序的概念2.80X86寄存器組3.堆棧的概念、進棧、出棧指令4.實模式和保護模式下物理地址的形成5.整數(shù)和字符串的表示方法6.CF、OF、ZF、SF標志位7.匯編源程序舉例
第一章預備知識二、本章的學習重點:三、本章學習的難點:
1.寄存器組各個寄存器的名稱和用途2.PUSH/POP指令、堆棧指示器的變化3.保護模式下物理地址的形成4.有符號數(shù)、無符號數(shù)及其運算對于標志寄存器的影響第一章預備知識三、本章學習的難點:第一章預備知識1.1機器語言與匯編語言1.機器語言(指令)機器語言的特點:由0和1組成的二進制碼。(2)能為計算機識別并執(zhí)行。(3)不同類型的機器,不同類型的CPU都有自己特有的、一定數(shù)量的基本指令。1.1機器語言與匯編語言1.機器語言(指令)機器指令(硬指令):指揮計算機完成某一基本操作的命令,是面向機器的。
操作種類操作數(shù)存放位置例:10111011BB——操作碼0011010034——操作數(shù)0001001012操作:1234H→BX1.1機器語言與匯編語言操作碼
地址碼機器指令(硬指令):指揮計算機完成某一基本操作的命令,是面向指令系統(tǒng):每臺計算機都規(guī)定了自己所特有的、一定數(shù)量的基本命令,這批指令的全體為計算機的指令系統(tǒng)機器語言:機器指令的集合機器語言程序:用機器語言編寫的程序1.1機器語言與匯編語言指令系統(tǒng):每臺計算機都規(guī)定了自己所特有的、一定數(shù)量的基本命令2.匯編語言(改進的方案)
助記符變量或標號
匯編語言:一種用符號書寫的、其操作與機器指令一一對應的,并遵循一定語法規(guī)則的計算機語言。1.1機器語言與匯編語言操作碼
地址碼2.匯編語言(改進的方案)
1.1機器語言與匯編語言例2:剛才的例子若用匯編語言來書寫:操作碼地址碼BB3412 MOVBX,1234H1.1機器語言與匯編語言例2:剛才的例子若用匯編語言來書寫:1.1機器語言與匯編語匯編源程序用匯編語言編寫的程序——類似于高級語言編寫的源程序匯編程序把匯編源程序翻譯成目標程序的(語言加工)程序——類似于高級語言的編譯程序匯編匯編程序對源程序進行翻譯的過程——類似于高級語言的編譯過程1.1機器語言與匯編語言匯編源程序1.1機器語言與匯編語言機器語言、匯編語言和高級語言的比較機器語言匯編語言高級語言計算機能否直接識別能不能不能易用性差中好占據(jù)空間小小大執(zhí)行速度快快慢用途特殊加密/解密系統(tǒng)核心要求速度快,代碼短的程序直接操縱I/O信息安全一般性軟件開發(fā)1.1機器語言與匯編語言機器語言、匯編語言和高級語言的比較機器語言匯編語言高級語言計1.2Intel系列機簡介微型計算機的構成1.2Intel系列機簡介微型計算機的構成1.2.280x86微處理器結構80x86微處理器結構1.2.280x86微處理器結構80x86微處理器結構1.總線接口部件:是CPU與計算機系統(tǒng)中其它功能部件之間的高速接口功能:接受所有的總線操作請求,并按優(yōu)先權進行選擇,最大限度地利用本身的資源為這些請求服務。2.執(zhí)行部件:寄存器組、標志寄存器、算邏部件、控制部件等組成功能:從譯碼指令隊列中取出指令并且執(zhí)行1.2.280x86微處理器結構1.總線接口部件:是CPU與計算機系統(tǒng)中其它功能部件之間的(1)數(shù)據(jù)寄存器組(EAX,EBX,ECX,EDX)EAX(累加器)AccumulatorEBX(基址寄存器)BaseECX(計數(shù)寄存器)CountEDX(數(shù)據(jù)寄存器)Data作用:用來保存操作數(shù)、運算結果或作指示器、變址寄存器,減少存取操作數(shù)所需要的訪問總線和主存儲器的時間,加快運行速度。1.2.280x86微處理器結構(1)數(shù)據(jù)寄存器組(EAX,EBX,ECX,EDX)1.2注意: 它們既可作32位、16位寄存器,也可作8位寄存器使用。 8位的寄存器不能作指示器或變址寄存器。
1.2.280x86微處理器結構注意:1.2.280x86微處理器結構(2)指示器變址寄存器組(ESI、EDI、ESP、EBP)作用:一般用來存放操作數(shù)的偏移地址,用作指示器或變址寄存器。 ESP(StackPointer),稱為堆棧指示器,存放的是當前堆棧段中棧頂?shù)钠频刂罚?EBP(BasePointer),為對堆棧操作的基址寄存器; ESI(SourceIndex),稱為源變址寄址器;字符串指令源操作數(shù)的指示器 EDI(DestinationIndex),稱為目的變址寄存器;字符串指令目的操作數(shù)的指示器1.2.280x86微處理器結構(2)指示器變址寄存器組(ESI、EDI、ESP、EBP)3.指令預取部件和指令譯碼部件 指令預取部件:通過總線接口部件,把將要執(zhí)行的指令從主存中取出,送入指令排隊機構中排隊。 指令譯碼部件:從指令預取部件中讀出指令并譯碼,再送入譯碼指令隊列排隊供執(zhí)行部件使用。 指令(地址)指示器:它總是保存著下一條將要被CPU執(zhí)行的指令的偏移地址(簡稱EA),其值為該指令到所在段首址的字節(jié)距離。1.2.280x86微處理器結構3.指令預取部件和指令譯碼部件1.2.280x86微處理4.分段部件和分頁部件
使用分段部件和分頁部件實現(xiàn)虛擬存儲空間映射到物理存儲空間 程序員使用二維地址段地址:段內偏移地址 分段部件 段地址:段內偏移地址一維的線性的地址 分頁部件 虛擬的線性的地址主存儲器的物理地址
1.2.280x86微處理器結構4.分段部件和分頁部件1.2.280x86微處理器結構段寄存器:低檔處理器保存段首地址,高檔處理器保存選擇字代碼段寄存器CS堆棧段寄存器SS數(shù)據(jù)段寄存器DS附加段寄存器ES附加段寄存器FS附加段寄存器GS
1.2.280x86微處理器結構段寄存器:低檔處理器保存段首地址,高檔處理器保存選擇字1.2指令執(zhí)行過程:(1)指令預取部件和指令譯碼部件 EIP指令的偏移地址EIP增量,形成下一條指令的地址(2)分段部件和分頁部件 CS:EIP指令的物理地址(3)總線接口部件 從主存中取指令預取指令隊列1.2.280x86微處理器結構指令執(zhí)行過程:1.2.280x86微處理器結構(4)CPU按序從預取指令隊列中取出指令指令譯碼部件。(5)指令譯碼部件譯碼執(zhí)行部件執(zhí)行指令;(6)執(zhí)行過程中若需要取主存操作數(shù)操作數(shù)偏移地址(7)分段部件和分頁部件 偏移地址,段寄存器操作數(shù)的物理地址(8)總線接口部件 從主存中取數(shù)據(jù)執(zhí)行部件1.2.280x86微處理器結構(4)CPU按序從預取指令隊列中取出指令指令譯碼部件1.實方式(實際地址) 操作相當于一個可進行32位快速運算的8086(內部32位、外部總線16位數(shù)據(jù)、20位地址)2.保護方式(虛地址) 是80X86設計目標全部達到的工作方式,通過對程序使用的存儲區(qū)采用分段、分頁的存儲管理機制,達到分級使用互不干擾的保護目的。能為每個任務提供一臺虛擬處理器,使每個任務單獨執(zhí)行,快速切換。3.虛擬8086方式 保護方式下所提供的同時模擬多個8086處理器。
1.2.280x86的三種工作方式1.實方式(實際地址)1.2.280x86的三種工作方式 存儲器:用來存放程序和數(shù)據(jù)的裝置,包括主存和外存。 主存儲器:主機內部的半導體存儲器,相對外存,容量小,速度快,成本高。1.3主存儲器和物理地址的形成 存儲器:用來存放程序和數(shù)據(jù)的裝置,包括主存和外存。1.3主存儲器編址方式 主存儲器的基本記憶單元是位,它能記憶/容納一個二進制數(shù)0或1。
8位組成一個字節(jié),當前微機一個存儲單元存放一個字節(jié)。 為了區(qū)別不同的存儲單元,每一存儲單元都被指定一個編號,編號作為存儲單元的物理地址。1.3.1主存儲器主存儲器編址方式1.3.1主存儲器80X86系統(tǒng)中主存是按字節(jié)編址的,即字節(jié)作最小訪問單位。
1.3.1主存儲器80X86系統(tǒng)中主存是按字節(jié)編址的,即字節(jié)作最小訪問單位。字:由2個字節(jié)組成,字地址由兩字節(jié)地址較小的一個(即低字節(jié))的地址表示。存放的方式是低8位存放低字節(jié),高8位存放高字節(jié)。雙字:雙字的地址也由四個字節(jié)中的最低地址表示1.3.1主存儲器雙字(32位)字(16位)字(16位)字節(jié)(8位)字節(jié)(8位)字節(jié)(8位)字節(jié)(8位)76543210字:由2個字節(jié)組成,字地址由兩字節(jié)地址較小的一個(即低字節(jié))問題:一個字數(shù)據(jù)該怎樣存入計算機主存呢?雙字數(shù)據(jù)呢?
高-高低-低字:要占有連續(xù)的兩個字節(jié).16位中,低8位存放在低字節(jié)地址中,高8位存放在相鄰的高字節(jié)地址中。雙字:32位中,低16位存放在低字地址中,高16位存放在相鄰的高字地址中。1.3.1主存儲器問題:一個字數(shù)據(jù)該怎樣存入計算機主存呢?雙字數(shù)據(jù)呢?1.1.3.1主存儲器1.3.1主存儲器從邏輯上來看:是內存中開辟的一片存貯區(qū),這片存貯區(qū)采用的存貯方式是一端固定,一端活動,即只允許在一端插入或刪除(訪問可任意)。堆棧中數(shù)據(jù)的存取原則:“先進后出”,堆棧中的數(shù)據(jù)也稱元素或棧項。元素進棧稱壓入,出棧稱彈出。1.3.2堆棧從邏輯上來看:是內存中開辟的一片存貯區(qū),這片存貯區(qū)采用的存貯從硬件的觀點看堆棧必須由一片存貯單元和一個指示器組成。 固定端叫棧底。棧指針用來指示棧頂進棧和出棧時偏移地址的變化指針所指示的最后存入信息的單元叫棧頂,所有信息的存取都在棧頂進行,棧指針總是指向棧頂?shù)摹?.3.2堆棧從硬件的觀點看堆棧必須由一片存貯單元和一個指示器組成。 1 問題:為什么要用堆棧? 程序中經(jīng)常用到子程序或處理中斷,此時,主程序需要把子程序或中斷程序將用到的寄存器內容保護起來,以便子程序或中斷返回后,主程序能夠從調用點或中斷點處繼續(xù)執(zhí)行。 此外,堆棧還經(jīng)常用于: 保護和恢復現(xiàn)場 主程序和子程序之間傳遞參數(shù) 子程序中的局部變量1.3.2堆棧 問題:為什么要用堆棧?1.3.2堆棧1.進棧指令PUSH
格式:PUSHOPS功能:將立即數(shù)、寄存器、段寄存器或存貯器中的一個字/雙字數(shù)據(jù)壓入堆棧。例:PUSHAX設:(AX)=4241H(SP)=10000H 執(zhí)行:①(SP)-2→SP ②(AX)→(SP)
1.3.2堆棧1.進棧指令PUSH1.3.2堆棧1.3.2堆棧1.3.2堆棧出棧指令POP 格式:POPOPD 功能:將棧頂元素彈出送至某一寄存器、段寄存器(除CS外)或字/雙字存貯單元中。 例:POPBX 設指令執(zhí)行前:(BX)=1111H,堆棧內容如上題所示。
1.3.2堆棧出棧指令POP1.3.2堆棧1.3.2堆棧1.3.2堆棧問題的由來 8086的限制,20位地址總線,16位寄存器(SP,BP,SI,DI)。問題:如何通過16位寄存器訪問1MB的內存解決:將1M字節(jié)主存分段,每段最多64K字節(jié)1.3.3存儲器物理地址的形成問題的由來1.3.3存儲器物理地址的形成
分段管理的方法:段寄存器保存起始首地址+段內偏移地址的總體策略。 段首地址分別存放在:段寄存器CS、DS、ES、SS、FS、GS中
段內偏移地址:段內相對于段起始地址的偏移值,往往由SP、BP、SI、DI、IP給出。
1.3.3存儲器物理地址的形成分段管理的方法:1.3.3存儲器物理地址的形成1.實模式PA=段寄存器保存的16位二進制數(shù)后補4個0+EA1.3.3存儲器物理地址的形成1.實模式1.3.3存儲器物理地址的形成分段的實際作用: (1)實現(xiàn)了16位表示20位的地址; (2)當程序和數(shù)據(jù)的大小<64KB時,編制的程序可只關心EA,而不用管它的起始地址在哪(便于程序在主存中任何位置運行) (3)便于不同目的的程序或數(shù)據(jù)分開存放,使程序各部分的含義更加明確。1.3.3存儲器物理地址的形成分段的實際作用:1.3.3存儲器物理地址的形成2.保護模式保護什么:分清不同程序使用的存儲區(qū)域,不允許隨便使用別人的數(shù)據(jù)和代碼。必要條件:(1)要標記每段存儲區(qū)的所有者或被使用的權限級別。(2)要標記使用者是誰(權限級別)。(3)中間環(huán)節(jié):CPU要去判斷此次訪問是否合法。1.3.3存儲器物理地址的形成2.保護模式1.3.3存儲器物理地址的形成(1)如何標記存儲區(qū) 操作系統(tǒng)每次將某塊存儲區(qū)分給某程序使用時,用8個字節(jié)的描述符描述這段存儲區(qū)的特征。1.3.3存儲器物理地址的形成(1)如何標記存儲區(qū)1.3.3存儲器物理地址的形成1.3.3存儲器物理地址的形成1.3.3存儲器物理地址的形成(2)如何標記使用者1.3.3存儲器物理地址的形成(2)如何標記使用者1.3.3存儲器物理地址的形成 程序的權限由程序所在的段決定,由當前程序正在使用的段寄存器內的段選擇符反映。1.3.3存儲器物理地址的形成 程序的權限由程序所在的段決定,由當前程序正在使用的段寄存器(3)中間執(zhí)行環(huán)節(jié):CPU去判斷例如,執(zhí)行:MOVAL,DS:[100H]設: (CS)=0000000000001111B, (DS)=0000000000001001B,(a)程序權限與被訪問數(shù)據(jù)段的權限的關系;(b)(DS)指向的描述表中尋找描述符;(c)對應描述符描述的段是否可以被訪問;(類別、權限)(d)從描述符2中提取段的首地址(32位);(e)段的首地址(32位)+32位EA(100H)=線性地址,不分頁時即為PA(f)送出PA,選中存儲單元,將內容讀出后送入AL中。1.3.3存儲器物理地址的形成(3)中間執(zhí)行環(huán)節(jié):CPU去判斷1.3.3存儲器物理地址的保護方式的實際含義:程序知道的“段首址”實際上是一個代號,是一個虛擬的起始地址,CPU通過轉換才能獲得真正的段首地址。在這個由CPU完成的轉換過程中,實現(xiàn)了訪問權限的判斷,達到了保護的目的。1.3.3存儲器物理地址的形成保護方式的實際含義:1.3.3存儲器物理地址的形成1.4數(shù)據(jù)在計算機內的表示形式1.4數(shù)據(jù)在計算機內的表示形式對于有符號數(shù),一律采用二進制補碼,對n位數(shù)有:1.4.1數(shù)值數(shù)據(jù)對于有符號數(shù),一律采用二進制補碼,對n位數(shù)有:1.4.1數(shù)補碼表示的幾個特點:
1.所有正數(shù)的補碼表示最左(高)位為0,其二進制補碼表示為本身; 2.所有負數(shù)的補碼表示最左(高)位為1,其補碼表示為:(原碼)除符號位保持不變外,其它位取反加1。 例如:設n=8, [50]補=[00110010B]補=00110010B [-50]補=[-00110010B]補=11001110B1.4.1數(shù)值數(shù)據(jù)補碼表示的幾個特點:1.4.1數(shù)值數(shù)據(jù)1.4.1數(shù)值數(shù)據(jù) 3.一個二進制補碼的最高位向左延伸S位,所得到的仍是此數(shù)的補碼表示。1.4.1數(shù)值數(shù)據(jù) 3.一個二進制補碼的最高位向左延伸S位例:設n=8X1=-01010111B(-87),X2=-00110101B(-53),求[X1+X2]補[X1+X2]補=[X1]補+[X2]補=10101001B+11001011B=101110100B(116)>0相加后,原本8位的二進制數(shù)變成了9位,這多出的一位稱為進位位。由于一個字節(jié)只能是8位,多出的一位(即進位位)就被丟掉了,這種情況稱為溢出。1.4.1數(shù)值數(shù)據(jù)例:設n=8X1=-01010111B(-87),1在標志寄存器中有一溢出位OF,當出現(xiàn)上述情況時,則OF位置1,檢查OF就可判斷運算是否溢出。對加運算來說,使OF位置1的條件是:同符號數(shù)相加,結果的符號與之相反,則OF為1,否則為0。即:正數(shù)+正數(shù)=負數(shù)負數(shù)+負數(shù)=正數(shù)OF=1OF=1正數(shù)+正數(shù)=正數(shù)負數(shù)+負數(shù)=負數(shù)OF=0OF=01.4.1數(shù)值數(shù)據(jù)在標志寄存器中有一溢出位OF,當出現(xiàn)上述情況時,則OF位例:設n=8,X1=-01000010B(-66),X2=01101101B(109),求[X1]補-[X2]補。
[X1]補-[X2]補=[X1]補+[X2]補=10111110B+10010011B=101010001B(81)>0在用補碼作減運算時,負數(shù)減正數(shù),一定為負數(shù)(結果),而結果為正說明產(chǎn)生了溢出。
1.4.1數(shù)值數(shù)據(jù)例:設n=8,X1=-01000010B(-66),1.4對減運算來說,如果被減數(shù)與減數(shù)異號,且結果的符號與減數(shù)相同(與被減數(shù)相反),說明運算產(chǎn)生了溢出,結果是錯誤,否則不是溢出。即:正數(shù)-負數(shù)=負數(shù)負數(shù)-正數(shù)=正數(shù)OF=1正數(shù)-負數(shù)=正數(shù)負數(shù)-正數(shù)=負數(shù)OF=01.4.1數(shù)值數(shù)據(jù)對減運算來說,如果被減數(shù)與減數(shù)異號,且結果的符號與減數(shù)相n十進制數(shù)表示范圍十六進制數(shù)表示范圍最大值最小值最大值最小值8位25500FFH016位6553500FFFFH032位429496729500FFFFFFFFH01.4.1數(shù)值數(shù)據(jù)無符號數(shù)表示范圍n十進制數(shù)表示范圍十六進制數(shù)表示范圍最大值最小值最大值最小值有符號數(shù)表示范圍1.4.1數(shù)值數(shù)據(jù)n十進制數(shù)表示范圍二進制數(shù)表示范圍補碼表示范圍最大值最小值最大值最小值最大值最小值8位+127-12827-1-277FH80H16位+32767-32768215-1-2157FFFH8000H32位+2147483647-2147483648231-1-2317FFFFFFFH80000000H有符號數(shù)表示范圍1.4.1數(shù)值數(shù)據(jù)n十進制數(shù)表示范圍二進制BCD(BinaryCodedDecimal)碼(8421碼)用4位二進制數(shù)(例如0000~1001)表示1位十進制數(shù)(0~9)。如:1983=0001100110000011BCD非壓縮的BCD碼:一個字節(jié)存放一個十進制數(shù)位00000000=000000001=100000010=2壓縮的BCD碼:一個字節(jié)存放2個十進制數(shù)碼00010000=1010001001=891.4.2BCD碼BCD(BinaryCodedDecimal)碼(841.4.3字符數(shù)據(jù)鍵盤輸入的字母和數(shù)字、顯示器顯示的文字等都是字符信息。
西文:常用的將字符與2進制數(shù)對應起來的編碼方法是美國信息標準交換代碼ASCII碼。漢字:GB2312編碼
區(qū)位碼表:分94區(qū)*94位,包括一級漢字(最常用漢字,按拼音排序)和二級漢字(稍常用漢字,按部首排序),均為簡體漢字,共約6700個。1.4.3字符數(shù)據(jù)鍵盤輸入的字母和數(shù)字、顯示器顯示的文
標志寄存器用來保存在一條指令執(zhí)行之后,CPU所處狀態(tài)的信息及運算結果的特征
16位標志寄存器:FLAGS 32位標志寄存器:EFLAGS1.5標志寄存器 1.5標志寄存器一、條件標志位1.符號標志SF(7) 若運算結果為負則SF=1,否則SF=0; 這里負是指運算結果的最高位為1則SF=12.零標志ZF(6) 若運算結果為0則ZF=1,否則ZF=0例: MOVAX,0 ADDAX,1SF=0ZF=0 SUBAX,1SF=0ZF=1 SUBAX,2SF=1ZF=01.5.1標志位一、條件標志位1.5.1標志位 3.溢出標志OF(11) 當將操作數(shù)作為有符號數(shù)看時,使用該標志位判斷運算結果是否溢出。 加法:若同符號數(shù)相加,結果的符號與之相反則OF=1,否則OF置0。 減法:被減數(shù)與減數(shù)異號,而結果的符號與減數(shù)相同則OF=1,否則置0。1.5.1標志位 3.溢出標志OF(11)1.5.1標志位 4.進位標志CF(0)將操作數(shù)看作無符號數(shù)時,使用該標志位判斷運算結果是否發(fā)生了進位或者借位。
加法:若運算結果從字或字節(jié)的最高位向前產(chǎn)生了進位則CF置1,否則置0。
減法:兩數(shù)相減,若將它們看作無符號數(shù),則夠減無借位置0,有借位置1。1.5.1標志位 4.進位標志CF(0)1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000001004+4+00001011+11+(+11)
0000111115+15
無符號數(shù)15CF=0OF=0有符號數(shù)151.5.1標志位實際運算結果應得結果1.5.11.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000001117+7+11111011+251+(-5)
1
00000010258+2
無符號數(shù)2CF=1OF=0有符號數(shù)21.5.1標志位實際運算結果1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
000010019+9+01111100+124+(+124)
10000101133+133
無符號數(shù)133CF=0OF=1有符號數(shù)-1231.5.1標志位實際運算結果1.5.1標志位
實際運算結果應得結果看作無符號數(shù)看作有符號數(shù)
10000111135-121+11110101+245+(-11)
1
01111100380-132
無符號數(shù)124CF=1OF=1有符號數(shù)1241.5.1標志位實際運算結果5.奇偶標志位PF(2)當運算結果(指低8位)中1的個數(shù)為偶數(shù)時,PF置1,否則置0。該標志位主要用于檢測數(shù)據(jù)在傳輸過程中的錯誤。6.輔助進位標志位AF(4)標識作字節(jié)運算的時候低半字節(jié)向高半字節(jié)的進位和借位。有進位和借位時AF置1,否則置0。1.5.1標志位5.奇偶標志位PF(2)1.5.1標志位二、控制標志位1.方向標志DF(10) 控制串操作指令的處理方向 DF=0,地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年旋轉式膜電位器項目可行性研究報告
- 2025年差動軸項目可行性研究報告
- 2025年噴氣織機邊撐項目可行性研究報告
- 2025年利巴韋林滴眼液項目可行性研究報告
- 2025至2031年中國3-丙二醇行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年高純錳礦項目投資價值分析報告
- 2025至2030年中國錨固件數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年航空用品項目投資價值分析報告
- 2025至2030年電動拉鉚槍項目投資價值分析報告
- 2025至2030年中國脫硫除塵器數(shù)據(jù)監(jiān)測研究報告
- von frey絲K值表完整版
- 云南省普通初中學生成長記錄模板-好ok
- SB/T 10415-2007雞粉調味料
- 考古繪圖基礎
- GB/T 32574-2016抽水蓄能電站檢修導則
- 《社會主義市場經(jīng)濟理論(第三版)》第十三章社會主義市場經(jīng)濟標準論
- 變更索賠案例分析
- 過敏性休克的急救及處理流程教材課件(28張)
- 《花婆婆》兒童繪本故事
- DB44∕T 2149-2018 森林資源規(guī)劃設計調查技術規(guī)程
- 數(shù)據(jù)結構英文教學課件:chapter10 Hashing
評論
0/150
提交評論