匯編語言講義第一章_第1頁
匯編語言講義第一章_第2頁
匯編語言講義第一章_第3頁
匯編語言講義第一章_第4頁
匯編語言講義第一章_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言程序設(shè)計第一章 匯編語言根底知識1.1計算機(jī)系統(tǒng)概述1.2數(shù)據(jù)表示1.3INTEL80x86系列微處理器1.1計算機(jī)系統(tǒng)概述1.1.1計算機(jī)的程序設(shè)計語言1.1.2計算機(jī)的軟件1.1.3計算機(jī)的硬件1.1.1計算機(jī)的程序設(shè)計語言計算機(jī)的程序設(shè)計語言可以分為低級語言和高級語言。低級語言有機(jī)器語言和匯編語言。高級語言有C/C++、PASCAL、BASIC等。1.機(jī)器語言計算機(jī)可以直接識別的是二進(jìn)制數(shù)0和1的代碼。機(jī)器指令〔Instruction〕就是用二進(jìn)制編碼的指令,一條機(jī)器指令控制計算機(jī)完成一個操作。指令系統(tǒng)〔InstructionSet〕是指某種處理器所支持的所有指令的集合。機(jī)器語言〔MachineLanguage〕就是指令系統(tǒng)及使用它們編寫程序的規(guī)那么。機(jī)器語言程序是計算機(jī)唯一能夠直接識別并執(zhí)行的程序。用其他語言編寫的程序都要翻譯、轉(zhuǎn)換成機(jī)器語言程序。機(jī)器語言程序常稱為目標(biāo)程序〔或目的程序〕。機(jī)器指令一般由操作碼〔Opcode〕和操作數(shù)〔Operand〕組成。操作碼說明處理器要進(jìn)行的操作;操作數(shù)說明參加操作的數(shù)據(jù)對象。2.匯編語言匯編語言是一種符號語言,用助記符表示操作碼,用易于記憶的符號表示操作數(shù)。助記符一般是說明指令功能的英語單詞或其縮寫。匯編格式指令就是用助記符表示的指令。匯編語言〔AssemblyLanguage〕是指匯編格式指令集以及使用它們編寫程序的規(guī)那么。用匯編語言編寫的程序就是匯編語言程序,或稱匯編語言源程序。匯編語言源程序要由匯編程序?qū)ζ溥M(jìn)行“匯編〞,轉(zhuǎn)換成機(jī)器語言程序才能由處理器執(zhí)行。二者不同3.高級語言〔High-levelProgrammingLanguage〕高級語言比較接近于人類的自然語言,與具體的計算機(jī)硬件無關(guān)。用高級語言編寫的源程序需要經(jīng)過編譯或解釋程序的翻譯,才可轉(zhuǎn)換為機(jī)器語言程序。編譯程序:現(xiàn)把高級語言程序翻譯成機(jī)器語言程序〔或先翻譯成匯編語言程序,然后再由匯編程序再次翻譯成機(jī)器語言程序〕,然后再在機(jī)器上執(zhí)行。解釋程序:直接把高級語言程序在機(jī)器上運行,一邊解釋一邊執(zhí)行。實現(xiàn)100與256相加機(jī)器指令B86400050001A30020匯編指令MOVAX,100 ADDAX,256MOV[2000H],AX高級語言表達(dá):100+256匯編語言與高級語言的特點匯編語言:與處理器密切相關(guān);通用性、可移植性較差。〔缺點〕功能有限,涉及到硬件細(xì)節(jié),編寫程序比較繁瑣,調(diào)試起來比較困難?!踩秉c〕匯編指令與機(jī)器指令一一對應(yīng),可以直接有效地控制計算機(jī)硬件,可以產(chǎn)生運行速度快、指令序列短小的高效率目標(biāo)程序。〔優(yōu)點〕高級語言:與具體計算機(jī)無關(guān),可在多種計算機(jī)上編譯后運行。功能強(qiáng)大,不必關(guān)心瑣碎問題,采用類似自然語言的語法,易于掌握和應(yīng)用。不易直接控制計算機(jī)的硬件操作,產(chǎn)生的目標(biāo)程序較龐大、運行速度較慢?;旌暇幊? 取長補(bǔ)短匯編語言的主要應(yīng)用場合匯編語言的大局部語句直接對應(yīng)著機(jī)器指令,執(zhí)行速度快,效率高,代碼體積小,在那些存儲器容量有限,但需要快速和實時響應(yīng)的場合比較有用,比方儀器儀表和工業(yè)控制設(shè)備中。在系統(tǒng)程序的核心局部,以及與系統(tǒng)硬件頻繁打交道的局部,可以使用匯編語言。比方操作系統(tǒng)的核心程序段、I/O接口電路的初始化程序、外部設(shè)備的低層驅(qū)動程序,以及頻繁調(diào)用的子程序、動態(tài)連接庫、某些高級繪圖程序、視頻游戲程序等。匯編語言可以用于軟件的加密和解密、計算機(jī)病毒的分析和防治,以及程序的調(diào)試和錯誤分析等各個方面。1.1.2計算機(jī)的軟件一個完整的計算機(jī)系統(tǒng)分為硬件和軟件兩大局部。硬件〔Hardware〕是計算機(jī)系統(tǒng)的機(jī)器局部,是計算機(jī)工作的物質(zhì)根底。軟件〔Software〕是為了運行、管理和維護(hù)計算機(jī)而編制的各種程序的總和,廣義的軟件還應(yīng)該包括與程序有關(guān)的文檔。軟件可以分為系統(tǒng)軟件和應(yīng)用軟件。見圖1.1計算機(jī)軟件層次圖。后一頁圖1.1計算機(jī)軟件層次圖操作系統(tǒng)常駐監(jiān)督程序系統(tǒng)程序庫裝入程序連接程序翻譯程序文本編輯程序調(diào)試程序驅(qū)動程序文件管理程序I/O用戶程序 用戶程序庫系統(tǒng)軟件 用戶軟件返回1.系統(tǒng)軟件系統(tǒng)軟件是指為了方便使用、維護(hù)和管理計算機(jī)系統(tǒng)而編制的一類軟件及其文檔。操作系統(tǒng)〔operatingsystem〕是系統(tǒng)軟件的核心。操作系統(tǒng)是系統(tǒng)程序的集合。它負(fù)責(zé)管理系統(tǒng)的軟硬件資源,向用戶提供方便、有效和可靠的工作環(huán)境。操作系統(tǒng)的主要局部是常駐內(nèi)存監(jiān)督程序〔monitor〕,只要一開機(jī)它就存在于內(nèi)存中,它可以從用戶接收命令,并使操作系統(tǒng)執(zhí)行相應(yīng)的動作。I/O驅(qū)動程序〔I/Odriver〕用來對I/O設(shè)備進(jìn)行控制或管理。文件管理程序〔filemanagement〕用來處理存儲在外存中的大量信息,對其中的信息以文件〔file〕的形式進(jìn)行存取、復(fù)制及其他操作。文本編輯程序〔texteditor〕用來建立、輸入或修改文本,并使它存入內(nèi)存或大容量存儲器中。翻譯程序〔translator〕:系統(tǒng)程序中的翻譯程序包括匯編程序、解釋程序和編譯程序。連接程序〔linker〕用來把要執(zhí)行的程序與庫文件或其他已經(jīng)翻譯好的子程序〔能完成獨立功能的程序模塊〕連接在一起,形成機(jī)器能執(zhí)行的程序。裝入程序〔loader〕用來把程序從外存?zhèn)魉偷絻?nèi)存,以便機(jī)器執(zhí)行。調(diào)試程序〔debug〕是系統(tǒng)提供給用戶的能監(jiān)督和控制用戶程序的一種工具。系統(tǒng)程序庫〔systerlibrary〕和用戶程序庫〔userlibrary〕,各種標(biāo)準(zhǔn)程序、子程序和一些文件的集合稱為程序庫,它可以被系統(tǒng)程序或用戶程序調(diào)用。2.應(yīng)用軟件應(yīng)用軟件是解決某一問題的程序及其文檔。返回進(jìn)行匯編語言程序設(shè)計所需要的軟件系統(tǒng)軟件DOS平臺Windows的虛擬MS-DOS環(huán)境應(yīng)用軟件文本編輯器:用來錄入、修改源程序。常用的有:DOS的EDIT全屏幕編輯器;Windows的Notepad計事本;程序開發(fā)系統(tǒng)中的程序編輯器,例如你熟悉的TurboC編輯器;MASM集成開發(fā)環(huán)境PWB的編輯器。匯編程序:將匯編源程序翻譯成目標(biāo)程序。微機(jī)的匯編程序有多種版本,如MASM、NASM、MASM、AT&T等。連接程序LINK.EXE:將目標(biāo)程序轉(zhuǎn)換成可執(zhí)行程序。調(diào)試程序:進(jìn)行程序排錯。常用的有:DOS的DEBUG程序;MASM的CodeView;TurboDebugger等。集編輯、匯編、連接和調(diào)試為一體的綜合開發(fā)環(huán)境。如MASM的程序員平臺PWB。集編輯器、匯編/反匯編、運行debug的軟件模擬工具〔虛擬PC〕EMU8086。源程序可執(zhí)行文件目標(biāo)模塊文本編輯器匯編程序連接程序調(diào)試程序1.1.3計算機(jī)的硬件計算機(jī)的硬件分為五大組成局部:運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備?!踩缦聢D〕運算器和控制器是計算機(jī)的核心,合成中央處理單元CPU〔CentralProcessingUnit〕或處理機(jī)、處理器〔Processor〕。輸入設(shè)備和輸出設(shè)備往往通稱為外部設(shè)備〔Peripheral〕,簡稱外設(shè)或I/O設(shè)備。在微型計算機(jī)中,CPU由一個大規(guī)模集成電路芯片構(gòu)成,被稱為微處理器〔Microprocessor〕。后一頁微型計算機(jī)的系統(tǒng)組成I/O接口主存儲器系統(tǒng)總線CPU寄存器控制器運算器輔助存儲器輸入設(shè)備輸出設(shè)備1.中央處理單元運算器執(zhí)行所有的算術(shù)和邏輯運算??刂破髫?fù)責(zé)把指令逐條從存儲器中取出,經(jīng)譯碼分析后向機(jī)器發(fā)出各種控制命令。CPU內(nèi)部還有一些高速存儲單元,稱為存放器〔Register〕。它們?yōu)樘幚韱卧峁└鞣N操作所需的數(shù)據(jù)。2.存儲器〔Memory〕存儲器是計算機(jī)的記憶部件。它用來存放程序以及程序中所涉及的數(shù)據(jù)。按所在位置,存儲器可以分為主存儲器〔主存、內(nèi)存〕和輔助存儲器〔輔存、外存〕?!捕邊^(qū)別〕按讀寫能力,存儲器可以分為隨機(jī)存儲器RAM〔讀寫存儲器〕和只讀存儲器ROM?!捕邊^(qū)別〕存儲器地址〔Address〕、存儲器容量。主存與存放器的區(qū)別。3.外部設(shè)備外部設(shè)備是實現(xiàn)人機(jī)交互和機(jī)間通信的一些機(jī)電設(shè)備。輸入設(shè)備用來接受用戶輸入的原始數(shù)據(jù)和程序,并將它們轉(zhuǎn)化為計算機(jī)可識別的形式存放到內(nèi)存中。常用的輸入設(shè)備有鍵盤、鼠標(biāo)等。輸出設(shè)備用來將存放在內(nèi)存中由計算機(jī)處理的結(jié)果轉(zhuǎn)變?yōu)槿藗兯芙邮艿男问?。常用的輸出設(shè)備有顯示器、打印機(jī)等。每個外設(shè)必須通過輸入輸出接口電路〔I/O接口〕與系統(tǒng)連接。程序員所見的I/O接口由一組存放器組成。一般說來,這些存放器有三種不同的用途:數(shù)據(jù)存放器:用來存放要在外設(shè)和主機(jī)間傳送的數(shù)據(jù),實際起了緩沖器的作用。狀態(tài)存放器:用來保存外設(shè)或接口的狀態(tài)信息,以便CPU在必要時檢測外設(shè)的狀態(tài),了解外設(shè)的工作情況。命令存放器:又稱控制存放器,CPU給外設(shè)或接口的控制命令通過此存放器送給外設(shè)。各種外部設(shè)備都有以上三種類型的存放器,只是每個接口所配備的存放器數(shù)量是根據(jù)設(shè)備的需要確定的。為了區(qū)別這些存放器,各個存放器進(jìn)行了編號,形成I/O地址,通常被稱作I/O端口〔Port〕。這樣就組成了一個獨立于內(nèi)存儲器的I/O地址空間。實際上,系統(tǒng)就是通過這些端口與外設(shè)進(jìn)行通信的。4.系統(tǒng)總線系統(tǒng)總線把CPU、存儲器和I/O設(shè)備連接起來,用來傳送各局部之間的信息。系統(tǒng)總線包括數(shù)據(jù)線、地址線和控制線三組。數(shù)據(jù)線:雙向的,用來傳送信息。地址線:單向的,用來指出信息的來源和目的地??刂凭€:雙向的,用來規(guī)定總線的動作,如方向等。系統(tǒng)總線的工作由總線控制邏輯負(fù)責(zé)指揮。返回主存與輔存的主要區(qū)別主存:用于存放當(dāng)前正在執(zhí)行的程序和使用的數(shù)據(jù);CPU可以直接存取。由半導(dǎo)體芯片構(gòu)成,其本錢高、容量小、速度快。輔存:用于長期保存大量程序和數(shù)據(jù);CPU要通過I/O接口訪問。由磁盤或光盤構(gòu)成,其本錢低、容量大、速度較慢。目錄返回RAM和ROM的主要區(qū)別RAM:RAM可以按地址隨機(jī)讀寫。斷電后不能保存信息。ROM:其中的信息只能被讀出。斷電后仍能保存信息。目錄返回存儲器地址、存儲容量存儲器由大量存儲單元組成。為了區(qū)別每個單元,對它們進(jìn)行編號,每個存儲單元就有了一個惟一的存儲器地址〔Address〕。每個存儲單元存放一個字節(jié)的數(shù)據(jù),一個字節(jié)B〔Byte〕包含了8個二進(jìn)制位b〔bit〕。存儲容量是指存儲器所具有的存儲單元個數(shù),其根本單位是字節(jié)B。常用的單位是KB〔千字節(jié)〕,MB〔兆字節(jié)〕,GB〔吉字節(jié)〕,TB〔太字節(jié)〕。1KB=210B=1024B,1MB=210KB=220B,1GB=210MB=230B,1TB=210GB=240B。目錄返回主存與存放器的區(qū)別共同點:存放二進(jìn)制信息不同點:位置:存放器在CPU;主存在CPU外部。訪問方式:對存放器按名訪問;對主存按地址訪問。目錄返回1.2數(shù)據(jù)表示1.2.1進(jìn)位計數(shù)制1.2.2數(shù)制之間的轉(zhuǎn)換1.2.3編碼1.2.4有符號數(shù)的表示法1.2.5無符號整數(shù)1.2.1進(jìn)位計數(shù)制在采用進(jìn)位計數(shù)制的系統(tǒng)中,如果只用r個根本符號〔0,1,2,……,r-1〕表示數(shù)值,那么稱其為基r數(shù)制,r稱為該數(shù)制的基數(shù),而數(shù)制中每一個固定位置對應(yīng)的單位值稱為“權(quán)〞。規(guī)那么為“逢r進(jìn)一〞。習(xí)慣上常用的是十進(jìn)制計數(shù)。一個任意的十進(jìn)制數(shù)可以表示為: anan-1…a0.b1b2…bm其含意是: an×10n+an-1*10n-1+…+a0*100+b1*10-1+b2*10-2+…bm*10-m其中ai〔i=0,1,…,n〕,bj〔j=1,2,…,m〕是0,1,2,3,4,5,6,7,8,9十個數(shù)碼中的一個。十進(jìn)制的基數(shù)為10,且遵循逢十進(jìn)一的規(guī)那么。上式中對應(yīng)于每位數(shù)字的10k稱為該位數(shù)字的權(quán),所以每位數(shù)字乘以其權(quán)所得到的乘積之和即為所表示數(shù)的值。例如:1234.56=1×103+2×102+3×101+4×100+5×10-1+6×10-2計算機(jī)中為了便于存儲及計算的物理實現(xiàn),采用了二進(jìn)制數(shù)。二進(jìn)制數(shù)的特點為:基數(shù)為2,只有0,1兩個數(shù)碼,各個位權(quán)以2k表示,遵循逢二進(jìn)一的規(guī)那么。二進(jìn)制數(shù)anan-1…a0.b1b2…bm可以表示為: an×2n+an-1*2n-1+…+a0*20+b1*2-1+b2*2-2+…bm*2-m其中ai,bj非0即1。例如:1011.011=1×23+0×22+1×21+1×20+0×2-1+1×2-2+1×2-3為了便于表示二進(jìn)制數(shù),人們又常用到十六進(jìn)制數(shù),另外還有八進(jìn)制數(shù)。幾種常用進(jìn)位計數(shù)制特點十進(jìn)制(Decimal)二進(jìn)制(Bianry)八進(jìn)制(Octal)十六進(jìn)制(Hexadecimal)基數(shù)r102816基本符號0,1,2,3,4,5,6,7,8,90,10,1,2,3,4,5,6,70,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)(a~f)權(quán)10k2k8k16k規(guī)則逢十進(jìn)一逢二進(jìn)一逢八進(jìn)一逢十六進(jìn)一后綴D或d或缺省B或b字母O或oH或h1.2.2數(shù)制之間的轉(zhuǎn)換二進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)任意數(shù)anan-1…a0.b1b2…bm=an×rn+an-1*rn-1+…+a0*r0+b1*r-1+b2*r-2+…bm*r-m=對應(yīng)的十進(jìn)制數(shù)其中r為2、8或16。例如:1011.011B=1×23+0×22+1×21+1×20+1×2-1+1×2-2+1×2-3=11.875D〔37〕8=3×81+7×80=〔31〕103ABH=3×162+10×161+11×160=839D十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)十進(jìn)制數(shù)的整數(shù)局部采用除r〔=2,8,16〕取余法:把要轉(zhuǎn)換的十進(jìn)制數(shù)的整數(shù)局部不斷地除以二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)的基數(shù)2,8或16,并記下余數(shù),直到商為0為止。第一次取得的余數(shù)為轉(zhuǎn)換后整數(shù)局部的最低位。十進(jìn)制數(shù)的小數(shù)局部采用乘r〔=2,8,16〕取整法:把要轉(zhuǎn)換的十進(jìn)制數(shù)的小數(shù)局部不斷乘以二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù)的基數(shù)2、8或16,并記下整數(shù)局部,直到結(jié)果的小數(shù)局部為0為止,或直到達(dá)所要求的精度為止。首次取得的整數(shù)局部為轉(zhuǎn)換后小數(shù)局部的最高位。后一頁例子例子例1.3: 117D=1110101B,轉(zhuǎn)換過程:

117/2=58 (a0=1) 58/2=29 (a1=0) 29/2=14 (a2=1) 14/2=7 (a3=0) 7/2=3 (a4=1) 3/2=1 (a5=1) 1/2=1 (a6=1)進(jìn)制間的轉(zhuǎn)換目錄例1.9: 48956D=BF3CH,轉(zhuǎn)換過程為: 48956/16=3059 (a0=12) 3059/16=191 (a1=3) 191/16=11 (a2=15) 11/16=0 (a3=11)進(jìn)制間的轉(zhuǎn)換目錄返回例1.4:0.8125D=0.1101B,轉(zhuǎn)換過程為: 0.8125×2=1.625 〔b1=1〕 0.625×2=1.25 〔b2=1〕 0.25×2=0.5 〔b3=0〕 0.5×2=1.0 〔b4=1〕0.8125D=0.DH,轉(zhuǎn)換過程為: 0.8125×16=13.0000 〔b1=13〕進(jìn)制間的轉(zhuǎn)換目錄返回降冪法:首先寫出要轉(zhuǎn)換的十進(jìn)制數(shù),其次寫出所有小于此數(shù)的各位二進(jìn)制權(quán)值,用要轉(zhuǎn)換的十進(jìn)制數(shù)減去與它最近的二進(jìn)制權(quán)值,如夠減那么減去,并在相應(yīng)位記以1;如不夠減那么在相應(yīng)位記以0并跳過此位;如此不斷重復(fù),直到該數(shù)為0為止。首先寫出要轉(zhuǎn)換的十進(jìn)制數(shù),其次寫出小于該數(shù)的十六〔八〕進(jìn)制權(quán)值,然后找出該數(shù)中包含多少個最接近它的權(quán)值的倍數(shù),這一倍數(shù)即對應(yīng)位的值,用原數(shù)減去此倍數(shù)與相應(yīng)位權(quán)值的乘積,得到一個差值,再用此差值去找低一位的權(quán)值的倍數(shù),如此反復(fù),直到差值為0為止。后一頁例子例子例1.1:N=117D,小于N的二進(jìn)制權(quán)為: 64 32 16 8 4 2 1對應(yīng)的二進(jìn)制數(shù)是: 1 1 1 0 1 0 1計算過程如下: 117-26=117-64=53 〔a6=1〕 53-25=53-32=21 〔a5=1〕 21-24=21-16=5 〔a4=1〕 〔a3=0〕 5-22=5-4=1 〔a2=1〕 〔a1=0〕 1-20=1-1=0 〔a0=1〕進(jìn)制間的轉(zhuǎn)換例1.2 N=0.8125D,小于此數(shù)的二進(jìn)制權(quán)為: 0.5 0.25 0.125 0.0625對應(yīng)的二進(jìn)制數(shù)是: 1 1 0 1計算過程如下: 0.8125-2-1=0.8125-0.5=0.3125 〔b1=1〕 0.3125-2-2=0.3125-0.25=0.0625 〔b2=1〕 〔b3=0〕 0.0625-2-4=0.0625-0.0625=0 〔b4=1〕 進(jìn)制間的轉(zhuǎn)換返回例1.8 N=48956D,小于N的十六進(jìn)制權(quán)為: 4096 256 16 1對應(yīng)的十六進(jìn)制數(shù)是: B F 3 C計算過程如下: 48956-11×4096=48956-11×163=3900 〔a3=11〕 3900-15×256=3900-15×162=60 〔a2=15〕 60-3×16=60-3×161=12 〔a1=3〕 12-12×1=12-12×160=0 〔a0=12〕進(jìn)制間的轉(zhuǎn)換返回二進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)之間的轉(zhuǎn)換計算機(jī)中,存儲信息的根本單位為一個二進(jìn)制位〔Bit〕,但由于常用的字符是采用8位二進(jìn)制數(shù)最成的一個字節(jié)〔Bytye〕來表示的。一個字節(jié)由8位組成,可以用兩個四位組〔又稱半字節(jié)〕來表示,所以用十六進(jìn)制數(shù)來表示二進(jìn)制數(shù)是比較方便的。二進(jìn)制和十六〔八〕進(jìn)制數(shù)之間具有對應(yīng)關(guān)系〔見表〕:每四〔三〕個二進(jìn)制位對應(yīng)一個十六〔八〕進(jìn)制位,所以相互轉(zhuǎn)換非常簡單。例如: 3AH=00111010B 657O=110101111B二進(jìn)制數(shù)轉(zhuǎn)換為十六〔八〕進(jìn)制數(shù):以小數(shù)點為界,分別向左向右分組,每四〔三〕位一組,不夠四〔三〕位,兩頭補(bǔ)0。每組對應(yīng)一個十六〔八〕進(jìn)制位。例如: =35BF.54H轉(zhuǎn)換過程為:

000035B F.54后一頁不同進(jìn)制間與BCD碼的對應(yīng)關(guān)系十進(jìn)制二進(jìn)制十六進(jìn)制BCD碼0000000100011120010223001133401004450101556011066701117781000889100199101010A111011B121100C131101D141110E151111F返回1.2.3編碼在計算機(jī)中,各種字符只能用假設(shè)干位的二進(jìn)制碼的組合表示,這就稱為二進(jìn)制編碼。由于字節(jié)為計算機(jī)的根本存儲單位,所以常用8個二進(jìn)制位表達(dá)1個字符。BCD〔BinaryCodedDecimal〕碼一位十進(jìn)制數(shù)可以用四位二進(jìn)制編碼來表示,這就是所謂的BCD碼。常用的BCD碼是8421BCD碼,它用4位二進(jìn)制編碼的低10個表示0~9這十個數(shù)字。例:十進(jìn)制數(shù)4978.149的BCD碼為:

ASCII碼字母和各種字符也必須按特定的規(guī)那么用二進(jìn)制編碼才能在計算機(jī)中表示。80X86機(jī)最常用的一種編碼是美國信息交換標(biāo)準(zhǔn)代碼ASCII〔AmericanStandardCodeforInformationInterchange〕。標(biāo)準(zhǔn)ASCII碼用七位二進(jìn)制編碼,故有128個,如教材所示。微型機(jī)存儲單位為8位,表達(dá)ASCII碼時最高D7位通常為0;通信時D7為通常用作奇偶校驗位。字符包括:字母:A、B、…Z,a、b、…z;數(shù)字:0、1、…、9;專用字符:+、-、*、/、、SP〔space空格〕、…;非打印字符:BEL〔bell響鈴〕、LF〔linefeed換行〕、CR〔carriagereturn回車〕、……在PC機(jī)中,有時還采用擴(kuò)展ASCII碼,主要表達(dá)各種制表用的符號等。擴(kuò)展ASCII碼最高位D7位為1,以與標(biāo)準(zhǔn)ASCII碼區(qū)別。1.2.4有符號數(shù)的表示方法計算機(jī)中的數(shù)是用二進(jìn)制來表示的,數(shù)的符號也是用二進(jìn)制表示的。在機(jī)器中,把一個數(shù)連同其符號在內(nèi)數(shù)值化表示的數(shù)稱為“機(jī)器數(shù)〞。與之對應(yīng)的實際數(shù)值稱為機(jī)器數(shù)的“真值〞。機(jī)器數(shù),一般用最高有效位來表示數(shù)的符號,正數(shù)用0表示,負(fù)數(shù)用1表示。常用的有原碼、反碼和補(bǔ)碼表示法。1.原碼最高有效位表示符號〔正數(shù)為0,負(fù)數(shù)為1〕,其他位直接表示數(shù)值大小。2.反碼正數(shù)的反碼與原碼相同,最高符號位用0表示,其余位為數(shù)值位。而負(fù)數(shù)的反碼那么為它的正數(shù)的各位〔包括符號位〕按位取反而形成的;即0變1,1變0。3.補(bǔ)碼正數(shù)的補(bǔ)碼與原碼相同,即最高有效位用0表示,其余位為數(shù)值位。而負(fù)數(shù)的補(bǔ)碼那么為它的反碼,在最低有效位〔即D0位〕加1所形成。后一頁例子例子例子例如:有符號數(shù)X的原碼表示如機(jī)器字長為8位 X=105=01101001B, [X]原=01101001B=69H X=-105, [X]原=11101001B=E9H如機(jī)器字長為16位,那么 X=105=0000000001101001B, [X]原=0000000001101001B=0069H X=-105, [X]原=1000000001101001B=8069H原碼表示返回例如:有符號數(shù)X的反碼表示如機(jī)器字長為8位 X=105=01101001B, [X]反=01101001B=69H X=-105, [X]反=10010110B=96H如機(jī)器字長為16位,那么 X=105=0000000001101001B, [X]反=0000000001101001B=0069H X=-105, [X]反=1111111110010110B=FF96H反碼表示返回例如:有符號數(shù)X的補(bǔ)碼表示如機(jī)器字長為8位 X=105=01101001B, [X]補(bǔ)=01101001B=69H X=-105, [X]補(bǔ)=10010111B=97H如機(jī)器字長為16位,那么 X=105=0000000001101001B, [X]補(bǔ)=0000000001101001B=0069H X=-105, [X]補(bǔ)=1111111110010111B=FF97H補(bǔ)碼表示返回數(shù)值0,在原碼和反碼中有+0和-0兩種表示方法。 如機(jī)器字長為8位,那么 [+0]原=00000000B [-0]原=10000000B [+0]反=00000000B [-0]反=11111111BN位二進(jìn)制原碼和反碼所能表示的數(shù)值范圍為+2N-1-1~-(2N-1-1)。即當(dāng)N=8時,所表示的數(shù)值范圍為+127~-127;當(dāng)N=16時,所表示的數(shù)值范圍為+65535~-65535。用補(bǔ)碼表示數(shù)時的符號擴(kuò)展問題所謂符號擴(kuò)展是指一個數(shù)從位數(shù)較少擴(kuò)展到位數(shù)較多〔如從8位擴(kuò)展到16位,

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論