匯編第一章預(yù)備知識_第1頁
匯編第一章預(yù)備知識_第2頁
匯編第一章預(yù)備知識_第3頁
匯編第一章預(yù)備知識_第4頁
匯編第一章預(yù)備知識_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

計(jì)算機(jī)硬件的基礎(chǔ)知寄存器、內(nèi)存管理、指令集學(xué)習(xí)計(jì)算機(jī)語言方面的基礎(chǔ)知為后續(xù)課程: 編程=概念+邏輯思考+概學(xué)習(xí)基邏輯按照一定順序思考問題、解決問實(shí)多寫程第1計(jì)算機(jī)語

高級語

匯編語

CLC指令將CF標(biāo) ,機(jī)器碼為8086~6機(jī)器語言(續(xù)操作碼該指令所操作數(shù)參與運(yùn)算的對象,以及運(yùn)算結(jié)果所存放的位等80X86、MIPS、8086指令的機(jī)器碼表示 100010DW操作碼 其中,第一個(gè)字

典型的MOV指令的編高位是操作 W位說明傳遞數(shù)據(jù)的類型是字(W=l)還是字節(jié)D位標(biāo)明數(shù)據(jù)傳送的方向:D=0,數(shù)據(jù)從寄存器傳出D=1,數(shù)據(jù)傳至寄存器匯編語言(Assembly;;典型應(yīng)用:批處理環(huán)境和嵌入式) )

典型應(yīng)用:交互式環(huán)境、分布式嵌入式SQL中查詢語句的動態(tài) name::

xxxxxxxxxx EXECSQLSELECTname,amountFROMWHERE嵌入式SQL中查詢語句的動態(tài)生成(續(xù)EXECSQLSELECTf1,f2,...FROMWHERE ssql_stmt=“EXECSQLSELECTname,amountFROMf_tableWHEREterm>12” 舉例:編程實(shí)現(xiàn)123+456,結(jié)果保存到變量sum{inta,b,sum;}

-ECS:100A10B0103060D01A30F01-EDS:010B7B00C8010012F8:010F43匯編語言主要特性(續(xù)CODEORGASSUMECS:CODE,DS:CODEMAINPROGNEAR

DWDW456DW?

連接處理后得 可執(zhí)行文件,運(yùn)行得到結(jié)果條指令及數(shù)據(jù)用便于的符號書寫,是一種符號化了的機(jī)器語言,即用指令助符、符號地址、標(biāo)號等符號書寫程序的 CODEEND高級語言匯編語言匯編語言的特占用空間少執(zhí)行速度快;10倍?(在C語言編譯器不 情況下歷史上很多著名軟件都是直接用匯編編寫的直接控制硬件能力開發(fā)周期長、可移植性差、不易編程語 TIOBEIndexforSeptember編程語 使用匯編會導(dǎo)致不易移植,所以Linux大部分是用C編Unix/Linux通常使用AT&T語 匯編語言是網(wǎng) 的代

#includeintcharname[16];printf(“%c”,name[i]);} o結(jié)果會輸 o在調(diào)用main 網(wǎng) 與防范技 最后,從main返回,將ES增加16以回收nae]間此S的B。程序?qū)⑦@個(gè)值彈出并賦給EB,使EB重新指main函數(shù)調(diào)用者的棧的底于棧頂?shù)姆祷氐刂稲,賦給E,CU繼續(xù)行E所指向 令。Call指令會將返回地址(Call指令下一條指令地址)壓入Ret指令會把壓棧的返回地址彈給入:oworld!AAAAAAAA……,則當(dāng)執(zhí)行內(nèi)堆棧頂

內(nèi)存高堆棧底o(hù)world!A 由于輸入的字符串太長,nameA覆蓋了堆棧的老的元P,Ret都已經(jīng)被‘A’覆蓋從main返回時(shí),就必然會‘AAA的—x 址CP 在WindowsXP下用VC6.0運(yùn)行程序,結(jié)果如 首先使用靜態(tài)反編譯工具IDAPro或者動 工具Dbg進(jìn)行分 找到關(guān)鍵段落進(jìn)行數(shù)據(jù)分或者修改程序的機(jī)器碼以達(dá) 目 者看不懂代 者無法修改軟對SimpleTest進(jìn) 有助于理解程序與操作系統(tǒng)、處理器 器、外部設(shè)備間的關(guān)系和工在管 硬件設(shè)備方面提供 的控制方法,完成更專業(yè)性的任 編寫、調(diào)試程序的復(fù)雜性應(yīng)用軟件大部分是用刻的部分還需要用匯編語言進(jìn)行優(yōu)化改常駐內(nèi)存程序和中斷系統(tǒng)性能的瓶頸,或頻繁使用子程序或程序與硬件資源密切相關(guān)的軟件發(fā),如:設(shè)備驅(qū)動程序等 容量限制的應(yīng)用領(lǐng)域如:嵌入式控制功能等

馮·諾依曼

器 器 工作,并由一個(gè)程序計(jì)數(shù)器(PC)控制指令的 可以把指令當(dāng)做數(shù)據(jù),這樣就可以修改指令值,方便軟升數(shù)據(jù)區(qū)和指令區(qū)共 器,方便數(shù)據(jù)區(qū)與指令區(qū)大靈活調(diào)整。如果程序總線及控制相對簡單,成本 設(shè)備要求相對較低,只需要一 馮諾依曼是很適合作為PC這樣的多任務(wù)多軟件的CPU:CPU執(zhí)行指令效率高,采取流水線。及前一條指令譯碼的候,第二條取指;執(zhí)行的時(shí)候,第二條譯碼,第三條取。這樣就相當(dāng)于執(zhí)行當(dāng)然這種預(yù)取如果指令總是跳來跳去,那也是徒勞哈佛結(jié)構(gòu)比較適合任務(wù)單調(diào)但需要高速率執(zhí)行的很難操作修改指令,軟件不好升指令區(qū)和數(shù)據(jù)區(qū)獨(dú)立,這 器利用效率不總線多成本高,對外設(shè)要求計(jì)算機(jī)系統(tǒng)組成:硬件+軟 ,即逐條地 取指令,PC取指令,PC值加Y停機(jī)N

序器中,即把復(fù)雜的硬譯碼并譯碼并執(zhí)總線接口總線接口部件unit,EU)負(fù) 負(fù)責(zé)與 器、I/O指令的執(zhí)

86微處理器結(jié)DDCCDDCCBBAACDCDSEIBBDDSSALU數(shù)據(jù)總暫存(16暫存

地址總(20位 數(shù)據(jù)總(16位 086電線

標(biāo)志123456標(biāo)志123456執(zhí)行單元 總線接口單元8086CPU的結(jié)構(gòu)是一次劃時(shí)代的,其基礎(chǔ)的邏輯結(jié)構(gòu)一直沿用至今,即使型的酷睿多核CPU,使用無論何種CPU,在工作時(shí)都是圍繞一個(gè),即對某個(gè) 隊(duì)列同時(shí)能存放總共680864個(gè)數(shù)據(jù)寄存器:AX、BX、CX和DX,每個(gè)寄存器又可為2個(gè)8位寄存2個(gè)變址寄存器:DI和2個(gè)指針寄存器:SP和8086的寄存器組標(biāo)志寄存器(1個(gè)):FLAG1從而節(jié)省操作數(shù)所需占用總線和 4個(gè)16BX:BaseRegister址寄存器CX:CountRegister,DX:DataRegister,數(shù)據(jù)寄存器在32位處理器中,有4個(gè)32位寄存器:EAX、、ECX和EDXSI:SourceIndexRegisterDI:DestinationIndexRegister它們可作一般的器指針使用。在字符串指針寄存器(Pointer –BP:基指針(BasePointer)寄存器,用它可直接 指令指針寄存器IP(Instruction指針寄存器是32位的EIP標(biāo)志寄存器FLAGFlags3個(gè)控制標(biāo)志:IF、DF、7位保留標(biāo)志寄存器(狀態(tài)標(biāo)志位CF(carryflag):進(jìn)位標(biāo)志,最 PF(parityflag):奇偶性標(biāo)志,結(jié)果中低8位中1的個(gè)數(shù)為偶數(shù)置1。AF(auxiliarycarryflag):輔助進(jìn)位標(biāo)志,當(dāng)進(jìn)行字節(jié)運(yùn)算有低4位ZF(zeroflag):零標(biāo)志,當(dāng)運(yùn)算結(jié)果為0時(shí)置1,否則置0。SF(signflag):符號標(biāo)志,運(yùn)算結(jié)果為負(fù),即結(jié)果 為1時(shí)置否則置0OF(overflowflag):溢出標(biāo)志,運(yùn)算溢出時(shí)自動置1,當(dāng)它為1時(shí)可標(biāo)志寄存器(狀態(tài)標(biāo)志位狀態(tài)標(biāo)志寄存器+運(yùn)算標(biāo)志寄存器(控制標(biāo)志位TF(trapflag):陷阱標(biāo)志,若IF=1,則在執(zhí)行指令時(shí)產(chǎn)IF(interruptflag):中斷標(biāo)志,若IF=1開中斷,響應(yīng)可DF(directionflag):方向標(biāo)志,DF置1引起串操作指令。CS(CodeSegmentRegister,代碼段寄存 而CPU內(nèi)部存放單元偏移量的寄存器(如IP、SP、B 。8086 8086 8086 器的址的。為了標(biāo)識每個(gè)單元,就給每個(gè)單元規(guī)定一個(gè)編號,此編號就是該單元的物理地址。邏輯段的起始地址(通常簡稱為:段地址)必須是16,即最低4位二進(jìn)制必須全為邏輯段的最大容量為64K,這由16決定按上述規(guī)定,1M內(nèi)存最多可分成64K個(gè)段,即65536段(段之間相 ),至少可分成16個(gè)相互 的段8086物理地址的形成方單元的邏輯地址分為兩部分:段地址和偏移量。由邏輯址得到其物理地址(PA—PhysicalAddress)的計(jì)算方法如下物理地址PA=段地址×16移例:(DS)=2100H, (BX)=0500H(PA)=21000H =8086段寄存器段寄存器是因?yàn)閷?nèi)存的分段管理而設(shè)置的。一般情況下,段寄存器及指針寄存器 關(guān)系方面有如下規(guī)定取指令所用的段寄存器和偏移量一定是用CS和堆棧操作所用的段寄存器和偏移量一定是SS和串操作的目標(biāo)操作數(shù)所用的段寄存器和偏移量一定是ES和其它情況,段寄存器除其默認(rèn)段寄存器外,還可以強(qiáng)行改變?yōu)槠?086位(t)它指的是取值只能為0或1;字節(jié)(byte)由8個(gè)二進(jìn)制位組成,通常用作計(jì)算量的單位,字節(jié)作為單位時(shí)記作 K是kelo的縮 M是mega的縮寫 G是Giga的縮 T 的縮寫,1T=1024G=240。 4 字 8 1F 817

10 8 rrr進(jìn)rrBCDdedDecimal)非壓縮型BCD碼:用一個(gè)字節(jié)表示一位十進(jìn)壓縮型BCD碼:一個(gè)字節(jié)表示兩位十00010000000100000000011000100000011000000010000000001001000100001001000000010000 字 字節(jié)一個(gè)字符。該數(shù)據(jù)形式是匯編語言程序中經(jīng)常把二進(jìn)制數(shù)的最高一位定義為符號位,符號位為0表示數(shù),符號位為1表示負(fù)數(shù)原碼、反碼、補(bǔ)碼表 舉例:寫出一機(jī)器字長16位,寫出N=-117D的補(bǔ)碼表原碼為:100000000111反碼為:111111111000補(bǔ)碼為:111111111000關(guān)于補(bǔ)碼表示的符號擴(kuò)展正數(shù)的符號擴(kuò)展應(yīng) [+46]補(bǔ)=00101110[-46]補(bǔ)=1101如果要將兩數(shù)擴(kuò)展到16[+46]補(bǔ)=000000000010[-46]補(bǔ)=111111111101補(bǔ)碼的表示范n位補(bǔ)碼表示數(shù)的范圍是-2n-1N2n-1-……000000----……-1000--1000-1000-補(bǔ)碼的加法和減 則為[X+Y]補(bǔ)=[X][Y]補(bǔ)碼的 則為[X-Y]補(bǔ)=[X]-Y]例: 進(jìn)

溢SeF

(1)s2e1271. 表示中省略1; 1811 年月 ASCII字符HL0@P`p!1AQaq"2BRbr#3CScs$4DTdt%5EUeu&6FVfv'7GWgw(8HXhx)9IYiy*:JZjz+;K[k{,<L\l|-=M]m}.>Nn~/?Oo習(xí)題與作 (2) (3) (4)(1)101101(2)1000(3)1111111111111111(4)1111習(xí)題與作 (2) (3) (4)(2)85+(-(3)85-(4)85-(-(5)(-85)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論