匯編語(yǔ)言超濃縮教程65387

ID:20197909

大小:60.50 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2018-10-11

匯編語(yǔ)言超濃縮教程65387_第1頁(yè)
匯編語(yǔ)言超濃縮教程65387_第2頁(yè)
匯編語(yǔ)言超濃縮教程65387_第3頁(yè)
匯編語(yǔ)言超濃縮教程65387_第4頁(yè)
匯編語(yǔ)言超濃縮教程65387_第5頁(yè)
資源描述:

《匯編語(yǔ)言超濃縮教程65387》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、匯編語(yǔ)言超濃縮教程所有電腦語(yǔ)言寫出的程序運(yùn)行時(shí)在內(nèi)存中都以機(jī)器碼方式存儲(chǔ),機(jī)器碼可以被比較準(zhǔn)確的翻譯成匯編語(yǔ)言,這是因?yàn)閰R編語(yǔ)言兼容性最好,故幾乎所有跟蹤、調(diào)試工具(包括WIN95/98下)都是以匯編示人的。匯編直接與硬件打交道,如果你想搞通程序在執(zhí)行時(shí)在電腦中的來(lái)龍去脈,也就是搞清電腦每個(gè)組成部分究竟在干什么、究竟怎么干?一個(gè)真正的硬件發(fā)燒友,不懂這些可不行。對(duì)初學(xué)者而言,匯編的許多命令太復(fù)雜,往往學(xué)習(xí)很長(zhǎng)時(shí)間也寫不出一個(gè)漂漂亮亮的程序,以致妨礙了我們學(xué)習(xí)匯編的興趣,不少人就此放棄。所以我個(gè)人看法學(xué)匯編,不一定要寫程序,寫程序確實(shí)不是匯編的強(qiáng)項(xiàng),

2、大家不妨玩玩DEBUG,有時(shí)CRACK出一個(gè)小軟件比完成一個(gè)程序更有成就感(就像學(xué)電腦先玩游戲一樣)。某些高深的指令事實(shí)上只對(duì)有經(jīng)驗(yàn)的匯編程序員有用,對(duì)我們而言,太過(guò)高深了。為了使學(xué)習(xí)匯編語(yǔ)言有個(gè)好的開始,你必須要先排除那些華麗復(fù)雜的命令,將注意力集中在最重要的幾個(gè)指令上(CMPLOOPMOVJNZ……)??赐ū疚?,你完全可以“不經(jīng)意”間在前輩或是后生賣弄一下DEBUG,很有成就感的,試試看!那么――這個(gè)接下來(lái)呢?――Herewego!因?yàn)閰R編是通過(guò)CPU和內(nèi)存跟硬件對(duì)話的,所以我們不得不先了解一下CPU和內(nèi)存: ?。茫校帐强梢詧?zhí)行電腦所有算術(shù)╱邏

3、輯運(yùn)算與基本I/O控制功能的一塊芯片。一種匯編語(yǔ)言只能用于特定的CPU。也就是說(shuō),不同的CPU其匯編語(yǔ)言的指令語(yǔ)法亦不相同。個(gè)人電腦由1981年推出至今,其CPU發(fā)展過(guò)程為:8086→80286→80386→80486→PENTIUM→……,還有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不過(guò)多了些指令(如多能奔騰的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。為確保匯編程序可以適用于各種機(jī)型,所以推薦使用8086匯編語(yǔ)言,其兼容性最佳。本文所提均為8086匯編語(yǔ)言。寄存器(Register)是C

4、PU內(nèi)部的元件,所以在寄存器之間的數(shù)據(jù)傳送非常快。用途:1.可將寄存器內(nèi)的數(shù)據(jù)執(zhí)行算術(shù)及邏輯運(yùn)算。2.存于寄存器內(nèi)的地址可用來(lái)指向內(nèi)存的某個(gè)位置,即尋址。3.可以用來(lái)讀寫數(shù)據(jù)到電腦的周邊設(shè)備。8086有8個(gè)8位數(shù)據(jù)寄存器,這些8位寄存器可分別組成16位寄存器:AH&AL=AX:累加寄存器,常用于運(yùn)算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:計(jì)數(shù)寄存器,常用于計(jì)數(shù);DH&DL=DX:數(shù)據(jù)寄存器,常用于數(shù)據(jù)傳遞。為了運(yùn)用所有的內(nèi)存空間,8086設(shè)定了四個(gè)段寄存器,專門用來(lái)保存段地址:CS(CodeSegment):代碼段寄存器;

5、DS(DataSegment):數(shù)據(jù)段寄存器;SS(StackSegment):堆棧段寄存器;ES(ExtraSegment):附加段寄存器。當(dāng)一個(gè)程序要執(zhí)行時(shí),就要決定程序代碼、數(shù)據(jù)和堆棧各要用到內(nèi)存的哪些位置,通過(guò)設(shè)定段寄存器CS,DS,SS來(lái)指向這些起始位置。通常是將DS固定,而根據(jù)需要修改CS。所以,程序可以在可尋址空間小于64K的情況下被寫成任意大小。所以,程序和其數(shù)據(jù)組合起來(lái)的大小,限制在DS所指的64K內(nèi),這就是COM文件不得大于64K的原因。8086以內(nèi)存做為戰(zhàn)場(chǎng),用寄存器做為軍事基地,以加速工作。除了前面所提的寄存器外,還有一些特

6、殊功能的寄存器:IP(IntructionPointer):指令指針寄存器,與CS配合使用,可跟蹤程序的執(zhí)行過(guò)程;SP(StackPointer):堆棧指針,與SS配合使用,可指向目前的堆棧位置。BP(BasePointer):基址指針寄存器,可用作SS的一個(gè)相對(duì)基址位置;SI(SourceIndex):源變址寄存器可用來(lái)存放相對(duì)于DS段之源變址指針;DI(DestinationIndex):目的變址寄存器,可用來(lái)存放相對(duì)于ES段之目的變址指針。還有一個(gè)標(biāo)志寄存器FR(FlagRegister),有九個(gè)有意義的標(biāo)志,將在下文用到時(shí)詳細(xì)說(shuō)明。  內(nèi)存

7、是電腦運(yùn)作中的關(guān)鍵部分,也是電腦在工作中儲(chǔ)存信息的地方。內(nèi)存組織有許多可存放數(shù)值的儲(chǔ)存位置,叫“地址”。8086地址總線有20位,所以CPU擁有達(dá)1M的尋址空間,這也是DOS的有效控制范圍,而8086能做的運(yùn)算僅限于處理16位數(shù)據(jù),即只有0到64K,所以,必須用分段尋址才能控制整個(gè)內(nèi)存地址。完整的20位地址可分成兩部份:1.段基址(Segment):16位二進(jìn)制數(shù)后面加上四個(gè)二進(jìn)制0,即一個(gè)16進(jìn)制0,變成20位二進(jìn)制數(shù),可設(shè)定1M中任何一個(gè)64K段,通常記做16位二進(jìn)制數(shù);2.偏移量(Offset):直接使用16位二進(jìn)制數(shù),指向段基址中的任何一個(gè)

8、地址。如:2222(段基址):3333(偏移量),其實(shí)際的20位地址值為:25553。除了上述營(yíng)養(yǎng)要充分吸收外,你還要知道

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。
关闭