資源描述:
《IBM-PC 匯編語(yǔ)言程序設(shè)計(jì)ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、IBM-PC匯編語(yǔ)言程序設(shè)計(jì)AssemblyLanguageProgramming什么是匯編語(yǔ)言?機(jī)器特定的編程語(yǔ)言該語(yǔ)言的語(yǔ)句和機(jī)器內(nèi)在語(yǔ)言是一一對(duì)應(yīng)的關(guān)系該語(yǔ)言和機(jī)器的指令集、系統(tǒng)結(jié)構(gòu)相匹配程序設(shè)計(jì)的級(jí)別機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言IBM-PC匯編語(yǔ)言針對(duì)8086,8088,80186,80286,80386,80486,andPentiumProcessors什么是匯編器?系統(tǒng)級(jí)別的程序負(fù)責(zé)將匯編語(yǔ)言編寫的源代碼翻譯成機(jī)器語(yǔ)言一般由軟件開發(fā)商提供,例如我們所使用的Microsoft的MASM6.11版本的編譯器源文件目標(biāo)文件可執(zhí)行文件為什么要學(xué)習(xí)匯編語(yǔ)言?能夠
2、學(xué)習(xí)到處理器是如何工作的理解計(jì)算機(jī)的基本系統(tǒng)結(jié)構(gòu)探究數(shù)據(jù)和指令的內(nèi)部表述能夠創(chuàng)建小巧有效的程序允許程序員繞過高層語(yǔ)言的限制編程有些工作必須用匯編語(yǔ)言完成機(jī)器語(yǔ)言數(shù)字表示的機(jī)器執(zhí)行的指令集合,被稱為處理器指令集處理器能夠執(zhí)行的基本指令的集合每個(gè)指令被編碼成為數(shù)字符號(hào)指令可能占用一個(gè)或者多個(gè)字節(jié)每個(gè)數(shù)字代表一個(gè)機(jī)器指令I(lǐng)BM-PC機(jī)器指令舉例1011000000000101borB005h操作碼=10110000b含義:拷貝一個(gè)字節(jié)數(shù)據(jù)到AL寄存器中字節(jié)數(shù)據(jù)由該指令的第二部分代表:00000101b匯編語(yǔ)言vs機(jī)器語(yǔ)言編程機(jī)器語(yǔ)言編程編寫一系列的數(shù)字符號(hào)表示程序執(zhí)行
3、所需的指令和數(shù)據(jù)匯編語(yǔ)言編程采用符號(hào)指令表示,將翻譯成機(jī)器語(yǔ)言程序和數(shù)據(jù)常量第1部分軟硬件基礎(chǔ)知識(shí)AssemblyLanguageProgramming1數(shù)據(jù)表示AssemblyLanguageProgramming二進(jìn)制數(shù)字1101101b數(shù)位從左到右依次排列b6b5b4b3b2b1b0下標(biāo)表示位值(placevalue)bi?2i需要熟記各個(gè)位值轉(zhuǎn)換到十進(jìn)制數(shù)的多項(xiàng)式b6*26+b5*25+b4*24+b3*23+b2*22+b1*21+b0*20Inthiscase,1101101bis64+32+8+4+1=109d十進(jìn)制到二進(jìn)制的轉(zhuǎn)換109d轉(zhuǎn)換到二
4、進(jìn)制-循環(huán)被2除余數(shù)作為數(shù)位值直到0為止將余數(shù)組合起來第一位余數(shù)作為二進(jìn)制數(shù)的最低位109d=1101101b109/2=54r154/2=27r027/2=13r113/2=6r16/2=3r03/2=1r11/2=0r1十六進(jìn)制數(shù)0~9,A,B,C,D,E,F注意:數(shù)字以H結(jié)尾大家思考:為何引入十六進(jìn)制數(shù)?二進(jìn)制和十六進(jìn)制Binary?Hex4位一組劃分(從最低位開始)最后一組不足4位補(bǔ)0每組對(duì)應(yīng)的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字Hex?Binary相反的方法每個(gè)數(shù)字展成4bits可以忽略前面的若干的001001110b=4Eh37h=00110111b二進(jìn)制數(shù)據(jù)存儲(chǔ)存
5、儲(chǔ)數(shù)據(jù)的大小定義,通常字節(jié)byteDB字wordDW雙字doublewordDD四字quadwordDQ存儲(chǔ)器中的每個(gè)字節(jié)都有唯一的地址基本加法Easy!!例如:cccc10101+1111100100HexExample:cc3CF02+435C9804CB0+0=00+1=11+0=11+1=101+1+1=11WatchCarries基本減法Hexexample:bbFCF02-435C9B9939bbbbb1101000011-11010011011011010Aborrowaddssixteen字符數(shù)據(jù)ASCIIAmericanStandardCode
6、forInformationInterchange(ASCII)7-bit二進(jìn)制碼表示的128個(gè)字符通常占用1字節(jié)包括一些控制字符ASCII碼的序列稱為ASCII字符串注:數(shù)字字符‘1’~‘9’的ASCII碼值:30~39大家思考:如何將ASCII碼值和對(duì)應(yīng)的數(shù)字相轉(zhuǎn)換?有符號(hào)數(shù)和無符號(hào)數(shù)無符號(hào)數(shù):所有位均為數(shù)據(jù)位有符號(hào)數(shù):最左邊的位為符號(hào)位例如:11111101無符號(hào)數(shù)252,而有符號(hào)數(shù)為-7格式字節(jié)字雙字Max無符號(hào)數(shù)255/28-1216-1232-1Max有符號(hào)數(shù)127/27-1215-1231-1理解Two’sComplementCode補(bǔ)碼的定義:[
7、X]補(bǔ)=(M+X)modM其中:M=2n正數(shù)的編碼?無符號(hào)正數(shù)表示負(fù)數(shù)的編碼?其值加上256后對(duì)應(yīng)的正數(shù)編碼Codefor+107107d=1101011bcode:01101011(6Bh)Codefor-107-107+256=149149d=10010101bcode:10010101b(95h)大家計(jì)算6Bh+95h=?二進(jìn)制補(bǔ)碼轉(zhuǎn)換c和-c的二進(jìn)制補(bǔ)碼加和的值等于2的冪8-bitcode:c+(-c)=2816-bitcode:c+(-c)=216(-c)=2n-c=[(2n-1)-c]+1求補(bǔ)碼的方法1:(-c)=2n-c求補(bǔ)碼的方法2:翻轉(zhuǎn)所有的位
8、加1解碼二進(jìn)制補(bǔ)碼舉例0