版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一章基礎(chǔ)知識匯編語言簡介進位計數(shù)制及相互轉(zhuǎn)換帶符號數(shù)的表示字符編碼10/29/202280x86/8088宏匯編語言程序設(shè)計第一章基礎(chǔ)知識匯編語言簡介10/22/202280x8611.1
匯編語言簡介
自1946年世界上第一臺電子數(shù)字計算機ENIAC(ElectronicNumericalIntegratorandCalculator)問世至今,雖然僅短短六十年,但計算機以驚人的速度發(fā)展?,F(xiàn)今社會無論哪個行業(yè)、部門、地區(qū)到處可見計算機的應(yīng)用。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1匯編語言簡介自1946年世界上第一臺電21.1匯編語言簡介程序設(shè)計語言的發(fā)展
在計算機的發(fā)展過程中,程序設(shè)計語言也經(jīng)歷了下面三個階段的發(fā)展。機器語言匯編語言高級語言10/29/202280x86/8088宏匯編語言程序設(shè)計1.1匯編語言簡介程序設(shè)計語言的發(fā)展10/22/2022831.1.1程序設(shè)計語言的發(fā)展機器語言
計算機的中央處理器(CPU)能夠識別和執(zhí)行的機器指令代碼。
機器語言的指令以代碼的形式表示的,這對編制程序和閱讀程序都是相當困難的。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展機器語言10/22/2022841.1.1
程序設(shè)計語言的發(fā)展匯編語言
匯編語言是把由機器指令組成的機器語言程序“符號化”,并與機器語言一一對應(yīng)。由于不同的機器有不同的匯編語言指令系統(tǒng),因此匯編語言的可移植性較差。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展匯編語言10/22/2022851.1.1
程序設(shè)計語言的發(fā)展高級語言
如VB、VC、DELPHI等程序設(shè)計語言。高級語言易學好用,這些語言是面向數(shù)學語言或自然語言,因此容易接受和掌握。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展高級語言10/22/2022861.1.2
匯編語言特性
由于每種計算機的設(shè)計者有不同的設(shè)計思想,不同的應(yīng)用目的。因此,每種計算機有它自己的機器語言和匯編語言。為了學習、使用某種計算機的匯編語言就必須首先熟悉那種計算機。這使得用匯編語言編寫程序比高級語言困難得多,但由于匯編語言的特性使得我們還有意義繼續(xù)學習和使用它。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.2匯編語言特性由于每種計算機的設(shè)計者有不同的71.1.2
匯編語言特性
知識:學習和使用匯編語言可以從根本上認識、理解計算機的工作過程。有助于程序設(shè)計任意更充分地利用機器硬件的全部功能,寫出更好的程序
功能:現(xiàn)在的計算機系統(tǒng)中,某些功能還只能通過使用匯編語言來實現(xiàn)。例如機器的自檢、系統(tǒng)的初始化等。
效率:匯編語言的效率通常高于高級語言。“效率”指的是程序的目標代碼所占有的空間和程序的運行速度。在需要節(jié)省內(nèi)存空間和提高程序運行速度的場合常常使用匯編語言。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.2匯編語言特性
知識:學習和使用匯編語言可以從根81.2
進位計數(shù)制及相互轉(zhuǎn)換1.2.1進位計數(shù)制
人類在長期的生產(chǎn)實踐中創(chuàng)造了我們最熟悉的十進制,而生活中還有八進制、十六進制等多種數(shù)系,還有在計算機中廣泛使用的二進制數(shù)系,它們的共同之處就是都采用進位計數(shù)制。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.2進位計數(shù)制及相互轉(zhuǎn)換1.2.1進位計數(shù)制91.2.1
進位計數(shù)制進位計數(shù)制采用位置表示法,即處于不同位置的同一數(shù)字符號,所表示的數(shù)值不同。如1992中兩個9一個表示9百,一個表示9十。數(shù)制中每一固定位置對應(yīng)的單位值稱為“權(quán)”。如1992中1的位權(quán)為1千,其它各位的位權(quán)依次為百、十、一。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制進位計數(shù)制采用位置表示法,即處101.2.1
進位計數(shù)制
在進位計數(shù)制中,每個數(shù)位上允許的數(shù)碼十有限的。每個數(shù)位上有限數(shù)碼的個數(shù)叫基數(shù)。例如,在十進制數(shù)中有10個數(shù)碼0~9。由于每個進位計數(shù)制的數(shù)碼中必定包含0,因此有限數(shù)碼中最大數(shù)碼一定是基數(shù)減一。如果某數(shù)位超過最大數(shù)碼便產(chǎn)生向高位的進位,這就是進位計數(shù)制的數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制在進位計數(shù)制中,每個數(shù)位上允111.2.1
進位計數(shù)制對于任意一個進位計數(shù)制,如果用R表示基數(shù),那么任何一個數(shù)S均可用如下多項式表示:S=knRn+kn-1Rn-1+…+k0R0+k-1R-1+k-2R-2+…+k-mR-m例如,十進制數(shù)12345.67可用下面的多項式來表示:12345.67=1×104+2×103+3×102+4×101+5×100+6×10-1+7×10-210/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制對于任意一個進位計數(shù)制,如果用121.2.1
進位計數(shù)制在書寫不同進位計數(shù)制數(shù)時,常常在尾部用一個字母來表示該數(shù)時什么進位計數(shù)制的數(shù)。
結(jié)尾用B(2進制數(shù))、O(8進制數(shù))、D(10進制數(shù))、H(16進制數(shù))。缺省為十進制數(shù)。例如712O、9198D、10010B、BE49H等等。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制10/22/202280x86/808131.2進位計數(shù)制及相互轉(zhuǎn)換1.2.2各種數(shù)制間的相互轉(zhuǎn)換
由于八進制數(shù)、十六進制數(shù)與二進制數(shù)之間有固定的對應(yīng)關(guān)系,按每3位或4位二進制數(shù)一組就可以完成八進制數(shù)、十六進制數(shù)與二進制數(shù)之間的相互轉(zhuǎn)換。因此,我們只需討論十進制數(shù)與二進制數(shù)之間的相互轉(zhuǎn)換。這兩種數(shù)制之間的轉(zhuǎn)換方法同樣可以引入到十進制數(shù)與八、十六進制數(shù)之間的相互轉(zhuǎn)換。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2進位計數(shù)制及相互轉(zhuǎn)換1.2.2各種數(shù)制間的相互轉(zhuǎn)換141.2.2
各種數(shù)制間的相互轉(zhuǎn)換1.2.2.1十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)
十進制整數(shù)轉(zhuǎn)換位二進制整數(shù)有兩種轉(zhuǎn)換方法:(1)減權(quán)定位法(2)除基取余法10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2各種數(shù)制間的相互轉(zhuǎn)換1.2.2.1十進制整數(shù)15減權(quán)定位法首先寫出要轉(zhuǎn)換的十進制數(shù),其次寫出所有小于此數(shù)的各位二進制權(quán)值,然后用要轉(zhuǎn)換的十進制數(shù)減去與它最接近的二進制權(quán)值,如夠減則減去并在相應(yīng)位記以1;如不夠減則在相應(yīng)位記以0并跳過此位;如此不斷重復(fù),直到該數(shù)為0為止。
例:將十進制數(shù)117轉(zhuǎn)換為二進制數(shù)
計算過程如下:
小于117的二進制權(quán)為643216842110/29/202280x86/8088宏匯編語言程序設(shè)計減權(quán)定位法首先寫出要轉(zhuǎn)換的十進制數(shù),其次寫出所有小于此數(shù)的各16經(jīng)過轉(zhuǎn)換后,117D=1110101B10/29/202280x86/8088宏匯編語言程序設(shè)計經(jīng)過轉(zhuǎn)換后,117D=1110101B10/22/20217除基取余法
把要轉(zhuǎn)換的十進制數(shù)的整數(shù)部分不斷除以2,并記下余數(shù),直到商為0為止。例:將十進制數(shù)117轉(zhuǎn)換為二進制數(shù)。計算過程如下:
經(jīng)過轉(zhuǎn)換后,117D=1110101B10/29/202280x86/8088宏匯編語言程序設(shè)計除基取余法把要轉(zhuǎn)換的十進制數(shù)的整數(shù)部分不斷除以2,并記下181.2.2
各種數(shù)制間的相互轉(zhuǎn)換1.2.2.2十進制小數(shù)轉(zhuǎn)換位二進制小數(shù)
轉(zhuǎn)換方法與整數(shù)轉(zhuǎn)換方面類似,也有兩種方法。(1)減權(quán)定位法與整數(shù)轉(zhuǎn)換差異:a、位權(quán)值不同二進制小數(shù)部分的位權(quán)值分別位0.5,0.25,0.125,0.0625…b、轉(zhuǎn)換的小數(shù)需要根據(jù)程序要求或計算機字長來確定小數(shù)的位數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2各種數(shù)制間的相互轉(zhuǎn)換1.2.2.2十進制小數(shù)19減權(quán)定位法例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):
0.8125-0.5=0.3125(a-1=1)0.3125-0.25=0.0625(a-2=1)0.0625<0.125(a-3=0)0.0625-0.0625=0(a-4=1)
經(jīng)過轉(zhuǎn)換后,0.8125D=0.1101B10/29/202280x86/8088宏匯編語言程序設(shè)計減權(quán)定位法例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):10/201.2.2.2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù)
(2)乘基取整法
十進制小數(shù),成立基數(shù)2后,如整數(shù)部分為1則a-1=1,否則a-1=0,把剩余的小數(shù)部分重復(fù)乘以基數(shù)2,直到小數(shù)為零或達到程序要求的小數(shù)位數(shù)。例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):0.8125×2=1.625(a-1=1)0.625×2=1.25(a-2=1)0.25×2=0.5(a-3=0)0.5×2=1(a-4=1)經(jīng)過轉(zhuǎn)換后,0.8125D=0.1101B
10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù)
(2)乘基取整法211.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)有兩種方法:按權(quán)相加法首先二進制各位的系數(shù)乘以該位的位權(quán)值,然后把各位的乘積相加即得到轉(zhuǎn)換后的十進制數(shù)。例如:
110110101B=1×28+1×27+1×25+1×24+1×22+1×20
=437D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)二進制整數(shù)轉(zhuǎn)換為十221.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)(2)逐次乘積相加法從最高位開始,逐次乘2再加次高位的系數(shù),所得結(jié)果再乘以2并與相鄰位的低位相加,一直進行到加上最低位為止。例如:
1101101B=(((((1×2+1)×2+0)×2+1)×2+1×2)+0)×2+1
=109D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)(2)逐次乘積相加231.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)有兩種方法:(1)按權(quán)相加法同整數(shù)的按權(quán)相加法類同。例如:0.1101B=1×2-1+1×2-2+1×2-4
=0.8125D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)二進制小數(shù)轉(zhuǎn)換為十241.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)(2)逐次除基相加法從最低位開始,除以基數(shù)2,再與次低位相加,所得結(jié)果再除以2并與相鄰的高位相加,如此繼續(xù)到小數(shù)點后最高位除以2為止。例如:0.1101B=(((1/2+0)/2+1)/2+1)/2
=0.8125D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)(2)逐次除基相加251.3帶符號數(shù)的表示在現(xiàn)實生活中我們所使用的數(shù)有正數(shù)和負數(shù),因此計算機中處理的數(shù)常常是帶符號的數(shù)。在日常生活中我們用+和-表示數(shù)值的正負。在計算機中正數(shù)與負數(shù)是如何表示的呢?在計算機中通常在數(shù)的最高位用1位二進制數(shù)位來表示數(shù)的符號,0表示正數(shù),1表示負數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3帶符號數(shù)的表示在現(xiàn)實生活中我們所使用的數(shù)有正數(shù)和負數(shù)261.3帶符號數(shù)的表示在日常生活中用+或-表示的數(shù)叫真值。在二進制數(shù)的最高位設(shè)置符號位,把符號加以數(shù)值化,這樣的數(shù)叫做機器數(shù)。例如-1011的機器數(shù)表示為11011。帶符號的機器數(shù)可以用原碼、反碼和補碼三種不同碼制來表示。由于補碼表示法在加減運算中的優(yōu)點,現(xiàn)在大多數(shù)計算機都采用補碼表示法。IBMPC及其系列機也是采用的補碼表示法。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3帶符號數(shù)的表示在日常生活中用+或-表示的數(shù)叫真271.3.1原碼表示法原碼是一種比較直觀的機器數(shù)表示方法。原碼用二進制數(shù)的最高位表示符號位(0表示正數(shù),1表示負數(shù)),數(shù)的有效值用二進制數(shù)絕對值表示。例如,+1011的原碼表示為:01011,-1101的原碼表示為11101。在原碼表示法中數(shù)0有兩種表示方法。對應(yīng)8位帶符號的二進制數(shù),數(shù)0兩種表示方法為00000000和10000000,分別對應(yīng)+0和-0。8位帶符號的二進制數(shù)的原碼表示中能表示的最大數(shù)為01111111,最小數(shù)為11111111,即-127~127。對原碼表示的機器數(shù)進行加減運算時,需要根據(jù)指令中的加減和兩數(shù)的符號,才能確定實際的加或減操作。因此,運算非常不方便。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.1原碼表示法原碼是一種比較直觀的機器數(shù)表示方法。1281.3.2補碼表示法由于原碼對加減運算不太方便,因此設(shè)想讓符號位也作為數(shù)的一部分參與運算,使器運算操作簡化,無需進行過多的判斷和處理。補碼能夠滿足這個要求。
1.3.2.1補碼的表示規(guī)則:以最高位作為符號位(0表示正數(shù),1表示負數(shù))。正數(shù)的補碼是其本身。負數(shù)的補碼是對其正數(shù)“各位求反、末位加1”后形成的。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2補碼表示法由于原碼對加減運算不太方便,因此設(shè)想讓291.3.2.2真值、原碼與補碼的變換由于正數(shù)的原碼和補碼的機器數(shù)一樣,因此我們只討論負數(shù)的變換。從一個負數(shù)的真值變換為補碼的方法:把n位二進制數(shù)連同符號位一起,按位變反(即0到1,1到0),然后最低位加1。例如[-46]補碼=
?[46]補碼=00101110按位取反11010001末位加11101001010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換由于正數(shù)的原碼和補碼的機301.3.2.2真值、原碼與補碼的變換如果一個負數(shù)已是原碼,那么轉(zhuǎn)換為補碼表示,首先保持符號位不變,然后將有效數(shù)各位變反,最低位加1即可。例如:
[-46]原碼=10101110有效數(shù)位按位取反11010001末位加11101001010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換如果一個負數(shù)已是原碼,那311.3.2.2真值、原碼與補碼的變換負數(shù)由真值或原碼轉(zhuǎn)換為補碼時,有一個簡便的方法:自最低位向最高位,遇到第一個1以及以前的各位0均保持不變,以后各高位按位變反。若變換前已是原碼,則符號位保持不變。例如:[-46]二進制真值:-00101110[-46]補碼=11010010[-46]原碼:10101110[-46]補碼:=1101001010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換負數(shù)由真值或原碼轉(zhuǎn)換為補321.3.2.2真值、原碼與補碼的變換在計算機程序中有一個求補運算。把一個已經(jīng)是補碼表示的數(shù),連同符號位一起“各位求反、末位加1”的操作稱作求補。求補運算實際上是一個變號運算或求相反數(shù)運算。即[X]補通過求補預(yù)算得到[-X]補。例如,[y]補=10011010,則對[y]補進行求補運算各位求反01100101末位加101100110得到[-y]補=0110011010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換在計算機程序中有一個求補331.3.2.3補碼表示法中數(shù)的表示范圍在8位二進制補碼表示法中,最大的數(shù)為01111111,最小的數(shù)為10000000。因此8位二進制補碼表示范圍為:-128~1278位二進制補碼表示法中,0只有一種表示方法:00000000,而11111111為-1的補碼形式。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.3補碼表示法中數(shù)的表示范圍在8位二進制補碼表示法341.3.2.4補碼的加減運算如果在計算機內(nèi),參與運算的數(shù)已是補碼表示,那么按下面規(guī)則進行加減運算:
[x+y]補=[x]補+[y]補[x-y]補=[x]補+[-y]補加法運算:參加加法運算的兩個數(shù),連同符號位一起參加運算,并以2n為模便可得到運算的正確結(jié)果,且和數(shù)一定也是補碼表示的。減法運算:先對減數(shù)進行一次求補運算,然后進行加法運算,同樣可以得到正確的運算結(jié)果。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.4補碼的加減運算如果在計算機內(nèi),參與運算的數(shù)已是351.3.2.4補碼的加法運算例X=74D,Y=-41D,求X+Y=?[X]補=01001010[Y]補=11010111[X]補=01001010+[Y]補=11010111
100100001
高位1自動舍去(以2n為模)因此,[X]補+[Y]補=00100001=[33]補10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.4補碼的加法運算例X=74D,Y=-41D361.3.2.4補碼的減法運算例X=74D,Y=-41D,求X-Y=?[X]補=01001010[Y]補=11010111[-Y]補=00101001[X]補=01001010+[-Y]補=00101001
01110011
因此,[X]補-[Y]補
=[X]補+[-Y]補
=
01110011=[115]補10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.4補碼的減法運算例X=74D,Y=-41D371.4字符編碼計算機中通常采用的字符編碼是ASCII碼。ASCII碼字符集采用一個字節(jié)(最高位用做奇偶校驗)表示字符。標準的ASCII碼共128個字符,分為可打印ASCII碼和非打印ASCII碼??纱蛴SCII碼:共95個。例如:數(shù)字'0'~'9':30H~39H字母'A'~'Z':41H~5AH字母'a'~'z':61H~7AH空格:20H非打印ASCII碼:用于控制性代碼,共33個。例如回車CR:0DH,換行LF:0AH,響鈴BEL:07H
10/29/202280x86/8088宏匯編語言程序設(shè)計1.4字符編碼計算機中通常采用的字符編碼是ASCII碼。1038第一章基礎(chǔ)知識匯編語言簡介進位計數(shù)制及相互轉(zhuǎn)換帶符號數(shù)的表示字符編碼10/29/202280x86/8088宏匯編語言程序設(shè)計第一章基礎(chǔ)知識匯編語言簡介10/22/202280x86391.1
匯編語言簡介
自1946年世界上第一臺電子數(shù)字計算機ENIAC(ElectronicNumericalIntegratorandCalculator)問世至今,雖然僅短短六十年,但計算機以驚人的速度發(fā)展?,F(xiàn)今社會無論哪個行業(yè)、部門、地區(qū)到處可見計算機的應(yīng)用。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1匯編語言簡介自1946年世界上第一臺電401.1匯編語言簡介程序設(shè)計語言的發(fā)展
在計算機的發(fā)展過程中,程序設(shè)計語言也經(jīng)歷了下面三個階段的發(fā)展。機器語言匯編語言高級語言10/29/202280x86/8088宏匯編語言程序設(shè)計1.1匯編語言簡介程序設(shè)計語言的發(fā)展10/22/20228411.1.1程序設(shè)計語言的發(fā)展機器語言
計算機的中央處理器(CPU)能夠識別和執(zhí)行的機器指令代碼。
機器語言的指令以代碼的形式表示的,這對編制程序和閱讀程序都是相當困難的。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展機器語言10/22/20228421.1.1
程序設(shè)計語言的發(fā)展匯編語言
匯編語言是把由機器指令組成的機器語言程序“符號化”,并與機器語言一一對應(yīng)。由于不同的機器有不同的匯編語言指令系統(tǒng),因此匯編語言的可移植性較差。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展匯編語言10/22/20228431.1.1
程序設(shè)計語言的發(fā)展高級語言
如VB、VC、DELPHI等程序設(shè)計語言。高級語言易學好用,這些語言是面向數(shù)學語言或自然語言,因此容易接受和掌握。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.1程序設(shè)計語言的發(fā)展高級語言10/22/20228441.1.2
匯編語言特性
由于每種計算機的設(shè)計者有不同的設(shè)計思想,不同的應(yīng)用目的。因此,每種計算機有它自己的機器語言和匯編語言。為了學習、使用某種計算機的匯編語言就必須首先熟悉那種計算機。這使得用匯編語言編寫程序比高級語言困難得多,但由于匯編語言的特性使得我們還有意義繼續(xù)學習和使用它。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.2匯編語言特性由于每種計算機的設(shè)計者有不同的451.1.2
匯編語言特性
知識:學習和使用匯編語言可以從根本上認識、理解計算機的工作過程。有助于程序設(shè)計任意更充分地利用機器硬件的全部功能,寫出更好的程序
功能:現(xiàn)在的計算機系統(tǒng)中,某些功能還只能通過使用匯編語言來實現(xiàn)。例如機器的自檢、系統(tǒng)的初始化等。
效率:匯編語言的效率通常高于高級語言。“效率”指的是程序的目標代碼所占有的空間和程序的運行速度。在需要節(jié)省內(nèi)存空間和提高程序運行速度的場合常常使用匯編語言。10/29/202280x86/8088宏匯編語言程序設(shè)計1.1.2匯編語言特性
知識:學習和使用匯編語言可以從根461.2
進位計數(shù)制及相互轉(zhuǎn)換1.2.1進位計數(shù)制
人類在長期的生產(chǎn)實踐中創(chuàng)造了我們最熟悉的十進制,而生活中還有八進制、十六進制等多種數(shù)系,還有在計算機中廣泛使用的二進制數(shù)系,它們的共同之處就是都采用進位計數(shù)制。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.2進位計數(shù)制及相互轉(zhuǎn)換1.2.1進位計數(shù)制471.2.1
進位計數(shù)制進位計數(shù)制采用位置表示法,即處于不同位置的同一數(shù)字符號,所表示的數(shù)值不同。如1992中兩個9一個表示9百,一個表示9十。數(shù)制中每一固定位置對應(yīng)的單位值稱為“權(quán)”。如1992中1的位權(quán)為1千,其它各位的位權(quán)依次為百、十、一。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制進位計數(shù)制采用位置表示法,即處481.2.1
進位計數(shù)制
在進位計數(shù)制中,每個數(shù)位上允許的數(shù)碼十有限的。每個數(shù)位上有限數(shù)碼的個數(shù)叫基數(shù)。例如,在十進制數(shù)中有10個數(shù)碼0~9。由于每個進位計數(shù)制的數(shù)碼中必定包含0,因此有限數(shù)碼中最大數(shù)碼一定是基數(shù)減一。如果某數(shù)位超過最大數(shù)碼便產(chǎn)生向高位的進位,這就是進位計數(shù)制的數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制在進位計數(shù)制中,每個數(shù)位上允491.2.1
進位計數(shù)制對于任意一個進位計數(shù)制,如果用R表示基數(shù),那么任何一個數(shù)S均可用如下多項式表示:S=knRn+kn-1Rn-1+…+k0R0+k-1R-1+k-2R-2+…+k-mR-m例如,十進制數(shù)12345.67可用下面的多項式來表示:12345.67=1×104+2×103+3×102+4×101+5×100+6×10-1+7×10-210/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制對于任意一個進位計數(shù)制,如果用501.2.1
進位計數(shù)制在書寫不同進位計數(shù)制數(shù)時,常常在尾部用一個字母來表示該數(shù)時什么進位計數(shù)制的數(shù)。
結(jié)尾用B(2進制數(shù))、O(8進制數(shù))、D(10進制數(shù))、H(16進制數(shù))。缺省為十進制數(shù)。例如712O、9198D、10010B、BE49H等等。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.1進位計數(shù)制10/22/202280x86/808511.2進位計數(shù)制及相互轉(zhuǎn)換1.2.2各種數(shù)制間的相互轉(zhuǎn)換
由于八進制數(shù)、十六進制數(shù)與二進制數(shù)之間有固定的對應(yīng)關(guān)系,按每3位或4位二進制數(shù)一組就可以完成八進制數(shù)、十六進制數(shù)與二進制數(shù)之間的相互轉(zhuǎn)換。因此,我們只需討論十進制數(shù)與二進制數(shù)之間的相互轉(zhuǎn)換。這兩種數(shù)制之間的轉(zhuǎn)換方法同樣可以引入到十進制數(shù)與八、十六進制數(shù)之間的相互轉(zhuǎn)換。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2進位計數(shù)制及相互轉(zhuǎn)換1.2.2各種數(shù)制間的相互轉(zhuǎn)換521.2.2
各種數(shù)制間的相互轉(zhuǎn)換1.2.2.1十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)
十進制整數(shù)轉(zhuǎn)換位二進制整數(shù)有兩種轉(zhuǎn)換方法:(1)減權(quán)定位法(2)除基取余法10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2各種數(shù)制間的相互轉(zhuǎn)換1.2.2.1十進制整數(shù)53減權(quán)定位法首先寫出要轉(zhuǎn)換的十進制數(shù),其次寫出所有小于此數(shù)的各位二進制權(quán)值,然后用要轉(zhuǎn)換的十進制數(shù)減去與它最接近的二進制權(quán)值,如夠減則減去并在相應(yīng)位記以1;如不夠減則在相應(yīng)位記以0并跳過此位;如此不斷重復(fù),直到該數(shù)為0為止。
例:將十進制數(shù)117轉(zhuǎn)換為二進制數(shù)
計算過程如下:
小于117的二進制權(quán)為643216842110/29/202280x86/8088宏匯編語言程序設(shè)計減權(quán)定位法首先寫出要轉(zhuǎn)換的十進制數(shù),其次寫出所有小于此數(shù)的各54經(jīng)過轉(zhuǎn)換后,117D=1110101B10/29/202280x86/8088宏匯編語言程序設(shè)計經(jīng)過轉(zhuǎn)換后,117D=1110101B10/22/20255除基取余法
把要轉(zhuǎn)換的十進制數(shù)的整數(shù)部分不斷除以2,并記下余數(shù),直到商為0為止。例:將十進制數(shù)117轉(zhuǎn)換為二進制數(shù)。計算過程如下:
經(jīng)過轉(zhuǎn)換后,117D=1110101B10/29/202280x86/8088宏匯編語言程序設(shè)計除基取余法把要轉(zhuǎn)換的十進制數(shù)的整數(shù)部分不斷除以2,并記下561.2.2
各種數(shù)制間的相互轉(zhuǎn)換1.2.2.2十進制小數(shù)轉(zhuǎn)換位二進制小數(shù)
轉(zhuǎn)換方法與整數(shù)轉(zhuǎn)換方面類似,也有兩種方法。(1)減權(quán)定位法與整數(shù)轉(zhuǎn)換差異:a、位權(quán)值不同二進制小數(shù)部分的位權(quán)值分別位0.5,0.25,0.125,0.0625…b、轉(zhuǎn)換的小數(shù)需要根據(jù)程序要求或計算機字長來確定小數(shù)的位數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2各種數(shù)制間的相互轉(zhuǎn)換1.2.2.2十進制小數(shù)57減權(quán)定位法例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):
0.8125-0.5=0.3125(a-1=1)0.3125-0.25=0.0625(a-2=1)0.0625<0.125(a-3=0)0.0625-0.0625=0(a-4=1)
經(jīng)過轉(zhuǎn)換后,0.8125D=0.1101B10/29/202280x86/8088宏匯編語言程序設(shè)計減權(quán)定位法例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):10/581.2.2.2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù)
(2)乘基取整法
十進制小數(shù),成立基數(shù)2后,如整數(shù)部分為1則a-1=1,否則a-1=0,把剩余的小數(shù)部分重復(fù)乘以基數(shù)2,直到小數(shù)為零或達到程序要求的小數(shù)位數(shù)。例如把十進制小數(shù)0.8125轉(zhuǎn)換成二進制數(shù):0.8125×2=1.625(a-1=1)0.625×2=1.25(a-2=1)0.25×2=0.5(a-3=0)0.5×2=1(a-4=1)經(jīng)過轉(zhuǎn)換后,0.8125D=0.1101B
10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù)
(2)乘基取整法591.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)有兩種方法:按權(quán)相加法首先二進制各位的系數(shù)乘以該位的位權(quán)值,然后把各位的乘積相加即得到轉(zhuǎn)換后的十進制數(shù)。例如:
110110101B=1×28+1×27+1×25+1×24+1×22+1×20
=437D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)二進制整數(shù)轉(zhuǎn)換為十601.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)(2)逐次乘積相加法從最高位開始,逐次乘2再加次高位的系數(shù),所得結(jié)果再乘以2并與相鄰位的低位相加,一直進行到加上最低位為止。例如:
1101101B=(((((1×2+1)×2+0)×2+1)×2+1×2)+0)×2+1
=109D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.3二進制整數(shù)轉(zhuǎn)換為十進制整數(shù)(2)逐次乘積相加611.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)有兩種方法:(1)按權(quán)相加法同整數(shù)的按權(quán)相加法類同。例如:0.1101B=1×2-1+1×2-2+1×2-4
=0.8125D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)二進制小數(shù)轉(zhuǎn)換為十621.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)(2)逐次除基相加法從最低位開始,除以基數(shù)2,再與次低位相加,所得結(jié)果再除以2并與相鄰的高位相加,如此繼續(xù)到小數(shù)點后最高位除以2為止。例如:0.1101B=(((1/2+0)/2+1)/2+1)/2
=0.8125D10/29/202280x86/8088宏匯編語言程序設(shè)計1.2.2.4二進制小數(shù)轉(zhuǎn)換為十進制小數(shù)(2)逐次除基相加631.3帶符號數(shù)的表示在現(xiàn)實生活中我們所使用的數(shù)有正數(shù)和負數(shù),因此計算機中處理的數(shù)常常是帶符號的數(shù)。在日常生活中我們用+和-表示數(shù)值的正負。在計算機中正數(shù)與負數(shù)是如何表示的呢?在計算機中通常在數(shù)的最高位用1位二進制數(shù)位來表示數(shù)的符號,0表示正數(shù),1表示負數(shù)。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3帶符號數(shù)的表示在現(xiàn)實生活中我們所使用的數(shù)有正數(shù)和負數(shù)641.3帶符號數(shù)的表示在日常生活中用+或-表示的數(shù)叫真值。在二進制數(shù)的最高位設(shè)置符號位,把符號加以數(shù)值化,這樣的數(shù)叫做機器數(shù)。例如-1011的機器數(shù)表示為11011。帶符號的機器數(shù)可以用原碼、反碼和補碼三種不同碼制來表示。由于補碼表示法在加減運算中的優(yōu)點,現(xiàn)在大多數(shù)計算機都采用補碼表示法。IBMPC及其系列機也是采用的補碼表示法。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3帶符號數(shù)的表示在日常生活中用+或-表示的數(shù)叫真651.3.1原碼表示法原碼是一種比較直觀的機器數(shù)表示方法。原碼用二進制數(shù)的最高位表示符號位(0表示正數(shù),1表示負數(shù)),數(shù)的有效值用二進制數(shù)絕對值表示。例如,+1011的原碼表示為:01011,-1101的原碼表示為11101。在原碼表示法中數(shù)0有兩種表示方法。對應(yīng)8位帶符號的二進制數(shù),數(shù)0兩種表示方法為00000000和10000000,分別對應(yīng)+0和-0。8位帶符號的二進制數(shù)的原碼表示中能表示的最大數(shù)為01111111,最小數(shù)為11111111,即-127~127。對原碼表示的機器數(shù)進行加減運算時,需要根據(jù)指令中的加減和兩數(shù)的符號,才能確定實際的加或減操作。因此,運算非常不方便。10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.1原碼表示法原碼是一種比較直觀的機器數(shù)表示方法。1661.3.2補碼表示法由于原碼對加減運算不太方便,因此設(shè)想讓符號位也作為數(shù)的一部分參與運算,使器運算操作簡化,無需進行過多的判斷和處理。補碼能夠滿足這個要求。
1.3.2.1補碼的表示規(guī)則:以最高位作為符號位(0表示正數(shù),1表示負數(shù))。正數(shù)的補碼是其本身。負數(shù)的補碼是對其正數(shù)“各位求反、末位加1”后形成的。
10/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2補碼表示法由于原碼對加減運算不太方便,因此設(shè)想讓671.3.2.2真值、原碼與補碼的變換由于正數(shù)的原碼和補碼的機器數(shù)一樣,因此我們只討論負數(shù)的變換。從一個負數(shù)的真值變換為補碼的方法:把n位二進制數(shù)連同符號位一起,按位變反(即0到1,1到0),然后最低位加1。例如[-46]補碼=
?[46]補碼=00101110按位取反11010001末位加11101001010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換由于正數(shù)的原碼和補碼的機681.3.2.2真值、原碼與補碼的變換如果一個負數(shù)已是原碼,那么轉(zhuǎn)換為補碼表示,首先保持符號位不變,然后將有效數(shù)各位變反,最低位加1即可。例如:
[-46]原碼=10101110有效數(shù)位按位取反11010001末位加11101001010/29/202280x86/8088宏匯編語言程序設(shè)計1.3.2.2真值、原碼與補碼的變換如果一個負數(shù)已是原碼,那691.3.2.2真值、原碼與補碼的變換負數(shù)由真值或原碼轉(zhuǎn)換為補碼時,有一個簡便的方法:自最低位向最高位,遇到第一個1以及以前的各位0均保持不變,以后各高位按位變反。若變換前已是原碼,則符號位保持不變。例如:[-46]二進制真值:-00101110[-46]補碼=11010010
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校圖書閱覽室管理制度范文
- 消防隊籃球賽題目及答案
- 浙江中醫(yī)藥藥學題目及答案
- 養(yǎng)老院老人生活照料服務(wù)規(guī)范制度
- 養(yǎng)老院老人緊急救援人員職業(yè)發(fā)展規(guī)劃制度
- 體育賽事面試題目及答案
- 教招編制考試題目及答案
- 辦公室員工工作環(huán)境改善制度
- 鐵路營業(yè)線施工三會制度
- 進貨檢驗驗收制度
- 成都市高新區(qū)2025-2026學年七年級上數(shù)學期末試題及答案
- DB45∕T 2364-2021 公路路基監(jiān)測技術(shù)規(guī)范
- 智能客戶服務(wù)實務(wù)-教案
- 2025年云南省中考數(shù)學真題試卷及答案
- 2022危險廢物管理計劃和管理臺賬制定技術(shù)導(dǎo)則
- CISP(CISO與CISE)題庫及答案解析(700道)
- 《CAD的簡介和作用》課件
- 配電箱移交協(xié)議書模板
- 2024-2030年中國桉葉(油)素市場專題研究及市場前景預(yù)測評估報告
- 攝像機基礎(chǔ)知識攝像機基礎(chǔ)知識
- 齒軌卡軌車資料
評論
0/150
提交評論