版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章匯編語言程序設計
基礎1/15/20231河南師范大學計算機與信息技術學院本章內容提要數據表示方法微型計算機結構匯編語言程序開發(fā)環(huán)境、過程、基本方法1/15/20232河南師范大學計算機與信息技術學院1.1機器語言與匯編語言 指令與程序計算機進行的任何工作完全取決于各種程序,程序工作由一系列指令完成。指令用于之處計算機要進行的特定操作和操作對象。一臺計算機全部指令的集合,構成該計算機的指令系統(tǒng)。指令系統(tǒng)的性能與其指令系統(tǒng)有重要關系,不同類型計算機的指令系統(tǒng)差異較大。1/15/20233河南師范大學計算機與信息技術學院1.1機器語言與匯編語言機器語言機器語言是以計算機硬件能直接執(zhí)行和理解的指令系統(tǒng)為基礎而形成的語言,它與計算機硬件密切相關,為特定的計算機而設計。相應機器語言編寫的程序稱為機器語言程序。機器語言直接對硬件編程。計算機可以直接執(zhí)行機器語言程序。機器語言除用于編寫計算機最底層的核心系統(tǒng)程序外,實際應用中直接使用的場合越來越少。1/15/20234河南師范大學計算機與信息技術學院1.1機器語言與匯編語言匯編語言匯編語言是一種符號化的機器語言,即用助記符代替機器語言的二進制代碼。助記符一般是英語單詞的縮寫,方便書寫和記憶。匯編語言指令與機器語言指令一一對應。匯編語言編寫的程序,稱為匯編語言源程序。匯編語言源程序必須通過匯編程序,翻譯成相應的目標代碼才能運行。這個過程稱為匯編。1/15/20235河南師范大學計算機與信息技術學院1.2數據表示方法3字符數據編碼2數值數據編碼1數制及其轉換4內存中的數據1/15/20236河南師范大學計算機與信息技術學院1.2.1數制及其轉換
進位計數制:在采用進位計數制的系統(tǒng)中,如果只用r個基本符號(0,1,2,……,r-1)表示數值,則稱其為基r數制,r稱為該數制的基數,而數制中每一個固定位置對應的單位值稱為“權”。規(guī)則為“逢r進一”。一個任意的十進制數可以表示為:
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十個數碼中的一個。1/15/20237河南師范大學計算機與信息技術學院1.2.1數制及其轉換 十進制的基數為10,且遵循逢十進一的規(guī)則。上式中對應于每位數字的10k稱為該位數字的權,所以每位數字乘以其權所得到的乘積之和即為所表示數的值。例如:1234.56=1×103+2×102+3×101+4×100+5×10-1+6×10-21/15/20238河南師范大學計算機與信息技術學院1.2.1數制及其轉換 二進制數的特點為:基數為2,只有0,1兩個數碼,各個位權以2k表示,遵循逢二進一的規(guī)則。二進制數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.011B=1×23+0×22+1×21+1×20+0×2-1+1×2-2+1×2-3=11.275D1/15/20239河南師范大學計算機與信息技術學院1.2.1數制及其轉換十進制二進制八進制十六進制基數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)權10k2k8k16k規(guī)則逢十進一逢二進一逢八進一逢十六進一后綴D或d或缺省B或b字母O或oH或h幾種常用進位計數制1/15/202310河南師范大學計算機與信息技術學院1.2.1數制及其轉換二進制000001010011100101110111八進制01234567二進制0000000100100011010001010110011110001001十/十六進制0123456789二進制101010111100110111101111十六進制ABCDEF二進制、十進制、八進制、十六進制數的對應關系N位二進制數可以表示2n個數。1/15/202311河南師范大學計算機與信息技術學院1.2.2二進制數和十進制數之間的轉換二進制數轉換為十進制數十進制數轉換為二進制數知識要點1/15/202312河南師范大學計算機與信息技術學院非十進制轉換為十進制數anan-1…a0.b1b2…bm=an×rn+an-1*rn-1+…+a0*r0+b1*r-1+b2*r-2+…bm*r-m=對應的十進制數其中r為2、8或16。例如:
1011100.10111B=26+24+23+22+2-1+2-3+2-4+2-5=92.71875D37O=3×81+7×80=31D3ABH=3×162+10×161+11×160=839D1/15/202313河南師范大學計算機與信息技術學院十進制數轉換為非十進制數首先寫出要轉換的十進制數,其次寫出所有小于此數的各位二進制權值,用要轉換的十進制數減去與它最近的二進制權值,如夠減則減去,并在相應位記以1;如不夠減則在相應位記以0并跳過此位;如此不斷重復,直到該數為0為止。降冪法1/15/202314河南師范大學計算機與信息技術學院十進制數轉換為非十進制數例1:N=117D,小于N的二進制權為:
64 32 16 8 4 2 1對應的二進制數是:
1 1 1 0 1 0 1計算過程如下:
117-64=53 (a6=1)
53-32=21 (a5=1)
21-16=5 (a4=1)
(a3=0)
5-4=1 (a2=1)
(a1=0)
1-1=0 (a0=1)1/15/202315河南師范大學計算機與信息技術學院十進制數轉換為非十進制數例2 N=0.8125D,小于此數的二進制權為:
0.5 0.25 0.125 0.0625對應的二進制數是:
1 1 0 1計算過程如下:
0.8125-0.5=0.3125 (b1=1)
0.3125-0.25=0.0625 (b2=1)
(b3=0)
0.0625-0.0625=0 (b4=1)
1/15/202316河南師范大學計算機與信息技術學院十進制數轉換為非十進制數整數部分:
把要轉換的十進制數的整數部分不斷地除以二進制的基數2,并記下余數,直到商為0為止。第一次取得的余數為轉換后整數部分的最低位。除法小數部分:
把要轉換的十進制數的小數部分不斷地乘以二進制的基數2,并記下乘積的整數部分,直到結果的小數部分為0,或達到所要求的精度為止。第一次取得的整數為轉換后小數部分的最高位。1/15/202317河南師范大學計算機與信息技術學院十進制數轉換為非十進制數例3:117D=1110101B,轉換過程:
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=0 (a6=1)1/15/202318河南師范大學計算機與信息技術學院十進制數轉換為非十進制數例4 0.8125D=0.1101B,轉換過程為:
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)1/15/202319河南師范大學計算機與信息技術學院二、八、十六進制數之間的轉換知識要點十六進制數和二進制數之間的轉換十六進制數和十進制數之間的轉換1/15/202320河南師范大學計算機與信息技術學院十六進制數的表示 字節(jié)是計算機中存儲信息的單位。計算機的字長一般都選為字節(jié)的整數倍,如16位、32位、64位等。一個字節(jié)由8位組成,它可以用兩個四位組(又稱半字節(jié))來表示,所以用十六進制數來表示二進制數是比較方便的。十六進制的基數是16,共有16個數碼,它們是
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A表示十進制的10,余類推。1/15/202321河南師范大學計算機與信息技術學院十六進制數和二進制數之間的轉換二進制數轉為十六進制數:
每四個二進制位對應一個十六進制位,因此只要把二進制數,以小數點為界,分別向左向右每4位為一組進行分組,直接用十六進制數來表示即可。十六進制數轉換為二進制數:
把十六進制數中的每一位用4位二進制數表示即可。1/15/202322河南師范大學計算機與信息技術學院十六進制數和二進制數之間的轉換例5
0011 0101 1011 1111對應的十六進制數是:
3 5 B F 即0011010110111111B=35BFH例6
A 1 9 C對應的二進制數是:
1010 0001 1001 1100即A19CH=1010000110011100B 1/15/202323河南師范大學計算機與信息技術學院十六進制數和十進制數之間的轉換anan-1…a0.b1b2…bm=an×rn+an-1*rn-1+…+a0*r0+b1*r-1+b2*r-2+…bm*r-m=對應的十進制數其中r為2、8或16。例7:
BF3CH=11×163+15×162+3×161+12×160=48956D十六進制數轉換為十進制數1/15/202324河南師范大學計算機與信息技術學院十六進制數和十進制數之間的轉換首先寫出要轉換的十進制數,其次寫出所有小于此數的各位十六進制權值,然后找出該數中包含多少個最接近它的權值的倍數,這一倍數即為對位的值,用原數減去此倍數與相應位權值的乘積得到一個差值,再用此差值去找低一位的權值的倍數,如此反復直到差值為0為止。降冪法十進制數轉換為十六進制數1/15/202325河南師范大學計算機與信息技術學院十六進制數和十進制數之間的轉換例8:N=48956D,小于N的二進制權為:
4096 256 16 1對應的十六進制數是:
B F 3 C 計算過程如下:
48956-11×4096=3900 (a3=11)
3900-15×256=60 (a2=15) 60-3×16=12 (a1=3) 12-12×1=0 (a0=12)
1/15/202326河南師范大學計算機與信息技術學院十六進制數和十進制數之間的轉換整數部分:
把要轉換的十進制數的整數部分不斷地除以十六進制的基數16,并記下余數,直到商為0為止。第一次取得的余數為轉換后整數部分的最低位。除法小數部分:
把要轉換的十進制數的小數部分不斷地乘以十六進制的基數16,并記下乘積的整數部分,直到結果的小數部分為0,或達到所要求的精度為止。第一次取得的整數為轉換后小數部分的最高位。1/15/202327河南師范大學計算機與信息技術學院十六進制數和十進制數之間的轉換例9:48956D=BF3CH,轉換過程:
48956/16=3059 (a0=12) 3059/16=191 (a1=3) 191/16=11 (a2=15) 11/16=0 (a3=11)
1/15/202328河南師范大學計算機與信息技術學院1.2.2數值數據編碼2反碼1原碼3補碼4無符號數5BCD碼1/15/202329河南師范大學計算機與信息技術學院1.2.2數值數據編碼計算機中的數是用二進制來表示的,數的符號也是用二進制表示的。數在計算機中的二進制表示形式稱為“機器數”。數的原值稱為“真值”,是計算機中表示的數的實際數值。機器數,一般用最高有效位來表示數的符號,正數用0表示,負數用1表示。見P4-P5,例1-8。常用的有原碼、反碼和補碼表示法。
1/15/202330河南師范大學計算機與信息技術學院原碼原碼與真值的區(qū)別僅僅是數的符號數字化。原碼表示中,最高位為符號位,其他位表示數的絕對值。見p5,例1-9。n為原碼表示的數的范圍為[-2n-1+1,2n-1-1]。8位原碼表示的數的范圍為[-127,127]。16為原碼表示的數的范圍為[-32767,32767]。1/15/202331河南師范大學計算機與信息技術學院反碼正數的反碼:與原碼相同;負數的反碼:等于其原碼(符號位除外)按位取反。見p5,例1-10。反碼表示數的范圍與原碼相同。1/15/202332河南師范大學計算機與信息技術學院補碼正數的補碼:與原碼相同;負數的補碼:等于其原碼(符號位除外)按位取反,末位加1。(或者說:等于其反碼末位加1。)見p5,例1-11。補碼表示能讓符號位一同參與數的運算,能將減法轉換為加法進行運算。將一個負數的補碼轉換成真值時,也需要一個“取反加1”的過程。1/15/202333河南師范大學計算機與信息技術學院補碼求補運算:對一個二進制數按位取反后在末位加1的運算。補碼表示的數具有以下特性:
求補求補[X]補
[-X]補
[X]補1/15/202334河南師范大學計算機與信息技術學院補碼例:
[117]補=0075H [-117]補=FF8BH現(xiàn)對[-117]補作求補運算:
[-117]補為 1111111110001011
按位求反后得 0000000001110100
末位加1后得 0000000001110101此數正是[117]補=0075H 1/15/202335河南師范大學計算機與信息技術學院補碼[X+Y]補=[X]補+[Y]補補碼的加法規(guī)則補碼的減法規(guī)則[X-Y]補=[X]補+[-Y]補1/15/202336河南師范大學計算機與信息技術學院補碼加法: 十進制二進制例1.15~1.18
25 00011001+ 32 +00100000 57 00111001 32 00100000+(-25) + 111001117 0000011125 00011001+(-32) +11100000-7 11111001-25 11100111+(-32) +11100000-57 11000111111/15/202337河南師范大學計算機與信息技術學院補碼減法: 十進制二進制例1.19~1.22
25 00011001- 32 +11100000 -7 11111001 32 00100000-(-25) + 0001100157 00111001-25 11100111-32 +11100000-57 11000111-25 11100111-(-32) +001000007 00000111111/15/202338河南師范大學計算機與信息技術學院補碼用補碼表示數時的符號擴展問題:
所謂符號擴展是指一個數從位數較少擴展到位數較多(如從8位擴展到16位,或從16位擴展到32位)時應該注意的問題。對于補碼表示的數,正數的符號擴展應該在前面補0,而負數的符號擴展則應該在前面補1。N位補碼表示數的范圍問題:(見p6,表1-2)即當N=8時,所表示的數值范圍為+127~-128;當N=16時,所表示的數值范圍為+32767~-32768。則N為補碼表示的數的范圍為-2N-1~+2N-1-1。
1/15/202339河南師范大學計算機與信息技術學院補碼在機器里,為了擴大表示數的范圍,可以用二個機器字(高位字和低位字)來表示一個機器數,這樣的數稱為雙字長或雙精度數。圖1.1雙字長數的表示雙字長數的表數范圍可擴大到:+231-1~-231;231約等于2.15×109。150150高位字低位字補碼值符號1/15/202340河南師范大學計算機與信息技術學院無符號數可以把最高有效位也作為數值處理的數據,稱為無符號整數。N位無符號數的表數范圍為0~2N-1。則N=8時的表數范圍為0~255;N=16時的表數范圍為0~65535;N=32時的表數范圍為0~232-1。在計算機中最常用的無符號整數是表示地址的數。
1/15/202341河南師范大學計算機與信息技術學院BCD碼使用4位二進制數表示1位十進制數,常稱為二進制編碼的十進制數。最常用的是8421碼(見p6,表1-3)。8421是指用于編碼的4位二進制各位的權值“8421”。見p6,例1-13。BCD碼有壓縮BCD碼和非壓縮BCD碼。前者用1個字節(jié)存放2個十進制數,每個十進制數字占4位。后者用1個字節(jié)存放1個十進制數字,十進制數字占低4位,高4位一般為0。
(見p7,例1-14)
1/15/202342河南師范大學計算機與信息技術學院1.2.3字符數據編碼字母和各種字符也必須按特定的規(guī)則用二進制編碼才能在計算機中表示。字符包括:字母:A、B、…Z,a、b、…z;數字:0、1、…、9;專用字符:+、-、*、/、、SP(space空格)、…;非打印字符:BEL(bell響鈴)、LF(linefeed換行)、CR(carriagereturn回車)、……1/15/202343河南師范大學計算機與信息技術學院1.2.3字符數據編碼80X86機最常用的一種編碼是美國信息交換標準代碼ASCII(AmericanStandardCodeforInformationInterchange)。見p7,表1-4。標準ASCII碼用七位二進制編碼,故有128個,如教材所示。微型機存儲單位為8位,表達ASCII碼時最高D7位通常為0;通信時D7為通常用作奇偶校驗位。在PC機中,有時還采用擴展ASCII碼,主要表達各種制表用的符號等。擴展ASCII碼最高位D7位為1,以與標準ASCII碼區(qū)別。1/15/202344河南師范大學計算機與信息技術學院1.2.4內存中的數據數據在計算機內部采用二進制存儲,具體采用何種方式,依賴于程序的執(zhí)行情況,可用二進制、BCD碼與字符方式。數據的存儲是以數據長度為單位,按字節(jié)順序存放,數據的低位放低字節(jié)地址,數據的高位放高字節(jié)地址。簡單說,“低對低,高對高”。如不特別說明,匯編語言程序設計中提到的數都是整數,常用字節(jié)(8位)、字(16位)、雙字(32位)表示。如實際數據的位數少,可進行擴展,一般是對最高有效位(可能是符號位)進行擴展,因此分為零擴展和符號擴展。1/15/202345河南師范大學計算機與信息技術學院1.3微型計算機結構微型計算機主要部件的特性布局及連接,是程序設計者必須了解的硬件資源及其資源部件。典型的微型計算機結構包括微處理器、存儲器、輸入/輸出三個主要部分,通過系統(tǒng)總線連接。1/15/202346河南師范大學計算機與信息技術學院1.3.18086微處理器8086微處理器:16位微處理器,采用16位數據總線,尋址空間為1M字節(jié),由指令執(zhí)行部件(EU)和總線接口部件(BIU)兩部分組成,如圖p8,1-1所示。
總線接口單元BIU(BusInterfaceUnit):執(zhí)行所有的總線操作,實現(xiàn)CPU與存儲器及外設之間的數據交換,主要由指令指針寄存器、指令隊列、段寄存器、地址加法器等組成。執(zhí)行單元EU(ExecutionUnit):控制和執(zhí)行指令,主要由算術邏輯運算部件ALU、EU控制部件、通用寄存器與標志寄存器組成。1/15/202347河南師范大學計算機與信息技術學院內部暫存器
IPESSSDSCS輸入/輸出控制電路外部總線執(zhí)行部分控制電路123456∑ALU標志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊列緩沖器執(zhí)行部件(EU)總線接口部件(BIU)16位20位16位8位1/15/202348河南師范大學計算機與信息技術學院1.3.2寄存器結構數據寄存器知識要點指針及變址寄存器段寄存器控制寄存器1/15/202349河南師范大學計算機與信息技術學院2.3.280X86寄存器組AHALBHBLCHCLDHDLSPBPDISIIPFLAGSCSDSESSSFSGSAXBXCXDXEAXEBXECXEDXESPEBPEDIESIEIPEFLAGS32位名稱16位名稱32位16位名稱累加器基址變址計數數據堆棧指針基址指針目的變址源變址指令指針標志代碼數據附加堆棧對于8086、8088或80286,陰影區(qū)域是不可用的。FS和GS寄存器無專用名稱。圖2.380X86的程序可見寄存器組1/15/202350河南師范大學計算機與信息技術學院1.數據寄存器8086/8088、80286所具有的寄存器AX(accumulator)稱為累加器,用于算數、邏輯運算以及與外設傳送信息(IN/OUT指令中)等。BX(base)稱為基址寄存器,常用做存放存儲器地址。CX(count)稱為計數器,常用來保存計數值,作為循環(huán)和串操作等指令中的隱含計數器。DX(data)稱為數據寄存器,常用來存放雙字長數據的高16位,或存放外設端口地址。1/15/202351河南師范大學計算機與信息技術學院2.指針及變址寄存器8086/8088、80286所具有的寄存器指針及變址寄存器包括SI(sourceindex)、DI(destinationindex)、BP(basepointer)、SP(stackpointer)四個16位寄存器,常用于存儲器尋址時提供地址。1/15/202352河南師范大學計算機與信息技術學院2.指針及變址寄存器8086/8088、80286所具有的寄存器SI是源變址寄存器,DI是目的變址寄存器;一般與DS聯(lián)用,用來確定數據段中某一存儲單元的地址;在串指令中,SI與DS聯(lián)用、DI與ES聯(lián)用,分別尋址數據段和附加段;在串指令中,SI與DI還具有自動增量或減量的功能。1/15/202353河南師范大學計算機與信息技術學院2.指針及變址寄存器8086/8088、80286所具有的寄存器SP為堆棧指針寄存器,BP為基址指針寄存器;二者均可以與SS聯(lián)用來確定堆棧段中的某一存儲單元的地址;SP用來指示棧頂的偏移地址,BP表示堆棧段中的基地址。堆棧(stack)是主存中一個特殊的區(qū)域,采用先進后出FILO(firstinlastout)或后進先出LIFO(lastinfirstout)的操作方式。1/15/202354河南師范大學計算機與信息技術學院3.段寄存器段寄存器也是一種專用寄存器;專用于存儲器尋址,用來直接或間接地存放段地址。80286以前的CPU包括:CS、DS、SS、ES;從80386起增加了兩個附加的數據段寄存器FS、GS。段寄存器是16位的1/15/202355河南師范大學計算機與信息技術學院代碼段(CodeSegment)代碼段用來存放程序的指令序列。一個程序必須有一個代碼段。代碼段寄存器CS存放代碼段的段地址;指令指針寄存器IP指示下條指令的偏移地址。處理器利用CS:IP取得下一條要執(zhí)行的指令。1/15/202356河南師范大學計算機與信息技術學院數據段(DataSegment)數據段存放運行程序所用的數據。一般程序都有一個或多個數據段。數據段寄存器DS存放數據段的段地址;各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址。處理器利用DS:EA存取數據段中的數據。1/15/202357河南師范大學計算機與信息技術學院堆棧段(StackSegment)堆棧段確定堆棧所在的主存區(qū)域。一般程序都需要設置堆棧段。堆棧段寄存器SS存放堆棧段的段地址;堆棧指針寄存器SP指示堆棧棧頂的偏移地址。處理器利用SS:SP操作堆棧頂的數據。1/15/202358河南師范大學計算機與信息技術學院附加段(ExtraSegment)附加段是附加的數據段,也用于數據的保存。當程序用到一個以上的數據段時,附加段是必不可少的。附加段寄存器ES存放附加段的段地址;各種主存尋址方式(有效地址EA)得到存儲器中操作數的偏移地址。處理器利用ES:EA存取附加段中的數據。串操作指令將附加段作為其目的操作數的存放區(qū)域。1/15/202359河南師范大學計算機與信息技術學院4.控制寄存器包括IP、FLAGS兩個16位寄存器。IP(instructionpointer)指令指針寄存器它用來指示代碼段中指令的偏移地址,它與代碼段寄存器CS聯(lián)用,以確定下一條指令的物理地址;處理器利用CS:IP取得下一條要執(zhí)行的指令,然后修改IP內容,使之指向下一條指令的存儲器地址;計算機就是通過CS:IP寄存器來控制指令序列的執(zhí)行流程的。8086/8088、80286所具有的寄存器1/15/202360河南師范大學計算機與信息技術學院4.控制寄存器FLAGS標志寄存器:(見p10,圖1-2)又稱程序狀態(tài)寄存器(programstatusword,PSW);用來存放條件碼標志、控制標志和系統(tǒng)標志。8086/8088、80286所具有的寄存器1/15/202361河南師范大學計算機與信息技術學院80X86的標志寄存器OFDFIFTFSFZFAFPFCF8086/8088802861514131211109876543210NTIOPLOFDFIFTFSFZFAFPFCF…VMRF同80286……ACVMRF同80286……IDVIPVIFACVMRF同80286…31……….2221201918171615…08038680486Pentium1/15/202362河南師范大學計算機與信息技術學院80X86的標志寄存器用來記錄程序中運行結果的狀態(tài)信息,它們是根據有關指令的運行結果由CPU自動設置的。
這些狀態(tài)信息往往作為后續(xù)條件轉移指令的轉移控制條件,所以稱為條件碼。它包括OF、SF、ZF、AF、PF和CF。條件碼標志(狀態(tài)標志)1/15/202363河南師范大學計算機與信息技術學院溢出標志OF(OverFlowFlag)在運算過程中,如操作數超出了機器能表示的范圍就是發(fā)生了溢出,則OF=1;否則OF=0。
例:
3AH+7CH=B6H,產生溢出:OF=1
AAH+7CH=(1)26H,沒有溢出:OF=01/15/202364河南師范大學計算機與信息技術學院符號標志SF(SignFlag)運算結果的最高有效位就是符號標志的狀態(tài)。運算結果最高位為1,則SF=1;否則SF=0。
例:
3AH+7CH=B6H,最高位D7=1:SF=1 84H+7CH=(1)00H,最高位D7=0:SF=01/15/202365河南師范大學計算機與信息技術學院零標志ZF(ZeroFlag)運算結果為0時,ZF=1,否則ZF=0。
例:
3AH+7CH=B6H,結果不是零:ZF=0 84H+7CH=(1)00H,結果是零:ZF=11/15/202366河南師范大學計算機與信息技術學院進位標志CF(CarryFlag)當運算結果的最高有效位有進位(加法)或借位(減法)時,CF=1;否則CF=0。
例:
3AH+7CH=B6H,沒有進位:CF=0 AAH+7CH=(1)26H,有進位:CF=1進位與溢出有什么區(qū)別?如何判斷溢出?如何運用進位與溢出?1/15/202367河南師范大學計算機與信息技術學院輔助進位標志AF(AuxiliaryCarryFlag)運算時D3位(低半字節(jié))有進位或借位時,AF=1;否則AF=0。
例:
3AH+7CH=B6H,D3有進位:AF=1該標志主要是由處理器內部使用,用于十進制算數運算指令中,用戶一般不必關心。1/15/202368河南師范大學計算機與信息技術學院奇偶標志PF(ParityFlag)當運算結果的最低字節(jié)中“1”的個數為0或偶數時,PF=1;否則PF=0。
例:
3AH+7CH=B6H=10110110B
結果中有5個1,是奇數:PF=0注意:PF標志僅反映最低8位中“1”的個數是偶或奇,即使是進行16位或32位數據操作時。1/15/202369河南師范大學計算機與信息技術學院進位與溢出的區(qū)別
CF表示的是無符號數運算結果是否超出范圍;即對于N位二進制無符號數來說,如果運算結果超出了0~2N-1這個范圍,則認為產生了進位。但運算結果仍然正確。
OF表示的是有符號數運算結果是否超出了范圍;即對于N位二進制有符號數來說,如果運算結果超出了-2N-1~2N-1-1這個范圍,則認為產生了溢出。運算結果已經不正確。注:處理器內部以補碼形式表示有符號數:N=8時,表示的無符號數的范圍是:0~255; 表示的有符號數的范圍是:-128~+127;N=16時,表示的無符號數的范圍是:0~65535; 表示的有符號數的范圍是:-32768~+32767。1/15/202370河南師范大學計算機與信息技術學院判斷溢出的方法如果兩個符號相同的數相加,而運算結果的符號與它們的符號相反,則產生溢出。如果兩個符號相反的數相減,而運算結果的符號與被減數的符號相反,則產生溢出。其他情況下,不會產生溢出。(舉例)1/15/202371河南師范大學計算機與信息技術學院如何運用進位與溢出處理器對兩個操作數進行運算時,按照無符號數求得結果,并相應設置進位標志CF;同時,根據是否超出有符號數的范圍設置溢出標志OF。應該利用哪個標志,則由程序員來決定。也就是說,如果將參加運算的操作數認為是無符號數,就應該關心進位;認為是有符號數,則要注意是否溢出。1/15/202372河南師范大學計算機與信息技術學院進位與溢出的對比例1:3AH+7CH=B6H
無符號數運算:58+124=182
范圍內,無進位,則CF=0
有符號數運算:58+124=182
范圍外,有溢出,則OF=1例2:AAH+7CH=(1)26H
無符號數運算:170+124=294
范圍外,有進位,則CF=1
有符號數運算:-86+124=28
范圍內,無溢出,則OF=01/15/202373河南師范大學計算機與信息技術學院進位與溢出的對比例3:0DH+79H=86H
無符號數:00001101B+01111001B=10000110B
無進位,CF=0
有符號數:兩個正數相加,結果為負數,溢出,OF=1例4:86H+F5H=7BH
無符號數:10000110B+11110101B=(1)01111011B
有進位,CF=1
有符號數:兩個負數相加,結果為正數,溢出,OF=11/15/202374河南師范大學計算機與信息技術學院進位與溢出的對比例5:06H-09H=FDH無符號數:00000110B-00001001B=(借位1)11111101B
有借位,CF=1有符號數:兩個符號相同的數相減,不會產生溢出,OF=0例6:80H-01H=7FH無符號數:10000000B-00000001B=01111111B
無借位,CF=0有符號數:兩個符號不同的數相減,結果的符號與被減數相反,溢出,OF=01/15/202375河南師范大學計算機與信息技術學院80X86的標志寄存器該標志用于串操作指令中,控制地址的變化方向。當DF=1時,每次串操作后使變址寄存器SI和DI的值自動減少,即串操作從高地址向低地址方向進行。當DF=0時,每次串操作后使變址寄存器SI和DI的值自動增加,即串操作從低地址向高地址方向進行??刂茦酥尽较驑酥綝F(DirectionFLag)方向標志可以用CLD指令復位(DF=0),STD指令置位(DF=1)。1/15/202376河南師范大學計算機與信息技術學院80X86的標志寄存器可以用于I/0、可屏蔽中斷、程序調試、任務切換和系統(tǒng)工作方式等的控制。下面簡單介紹某些位的情況。系統(tǒng)標志位陷阱標志TF中斷標志IFI/O特權級IOPL1/15/202377河南師范大學計算機與信息技術學院陷阱標志TF(TrapFlag)也常稱為單步標志。用于控制處理器是否進入單步操作方式。當TF=1時,處理器單步執(zhí)行指令,每條指令執(zhí)行完后產生編號為1的中斷,由系統(tǒng)控制計算機;當TF=0時,處理器正常工作。1/15/202378河南師范大學計算機與信息技術學院中斷標志IF(InterruptFlag)該標志用于控制外部可屏蔽中斷是否可以被處理器響應。當IF=1時,允許CPU響應可屏蔽中斷請求;當IF=0時,則禁止中斷。在調試程序DEBUG中提供了測試標志位的手段,它用符號表示某些標志位的值。1/15/202379河南師范大學計算機與信息技術學院標志位的符號表示標志名標志為1標志為0溢出OFOVNV方向DFDNUP中斷IFEIDI符號SFNGPL零位ZFZRNZ輔助AFACNA奇偶PFPEPO進位CFCYNC1/15/202380河南師范大學計算機與信息技術學院1.3.3內存組織計算機中存儲信息的單位(數據類型圖)
二進制位(bit):是計算機存儲信息的基本單位,一個位可存儲一位二進制數:0或1。字節(jié)(byte):8個二進制位組成一個字節(jié)。字(word):由兩個字節(jié)組成,即16位數據。雙字(doubleword):由兩個字組成,即4字節(jié)數據,共32位。4字:由8個字節(jié)組成,64位數據。1/15/202381河南師范大學計算機與信息技術學院數據類型高位雙字低位雙字N+7N+6N+5N+4N+3N+2N+1N
地址6332310高位字低位字N+3N+2N+1N
地址3116150高字節(jié)低字節(jié)N+1N
地址15870字雙字4字
N
地址
70字節(jié)最低位稱為最低有效位LSB(LeastSignificantBit),即D0位;最高位稱為最高有效位MSB(MostSignificantBit),對字節(jié)、字、雙字、4字分別指D7、D15、D31、D63。1/15/202382河南師范大學計算機與信息技術學院1.3.3內存組織機器字長8086/8088,80286的字長為16位;80386到PentiumII的字長為32位。1/15/202383河南師范大學計算機與信息技術學院1.內存地址存儲單元的地址存儲器里以字節(jié)為單位存儲信息。每一個字節(jié)單元被賦予一個惟一的存儲器地址,稱為物理地址。地址從0開始編號,順序地每次加1;機器里,地址是一個無符號二進制整數,書寫時常用十六進制數表示。1/15/202384河南師范大學計算機與信息技術學院1.內存組織存儲單元的內容一個存儲單元中存放的信息稱為該單元的內容。每個存儲單元中存放一個字節(jié)的內容。(如圖所示)在存儲器中如何存放一個字或雙字?1/15/202385河南師范大學計算機與信息技術學院多字節(jié)數據的存放多字節(jié)數據在存儲器中占連續(xù)的多個存儲單元:存放時,低字節(jié)存入低地址,高字節(jié)存入高地址;多字節(jié)數據的地址用其低地址表示。這種“低對低,高對高”的存儲形式,被稱為“小端方式”。如圖所示1/15/202386河南師范大學計算機與信息技術學院存儲單元的內容40H30H56H12H34H5614H5613H5612H0004H0003H0002H0001H0000H如果用X表示某存儲單元的地址,則X單元的內容可以表示為(X);假如X單元中存放著Y,而Y又是一個地址,則可用(Y)=((X))來表示Y單元的內容。如左圖中
(0003H)=5612H而
(5612H)=4030H則
((0003H))=4030H存儲單元的內容可以重復取出,直到有新的內容寫入。1/15/202387河南師范大學計算機與信息技術學院存儲單元的地址和內容如圖所示,在0002H地址的存儲器單元中存放的信息是34H,即2單元的內容為34H,表示為:
[0002H]=34H
或
(0002H)=34HCDHABH78H56H12H34H0008H0007H0006H0005H0004H0003H0002H0001H0000H2號“字”單元的內容為:[0002H]=1234H
或
(0002H)=1234H2號“雙字”單元的內容為:[0002H]=78561234H
或
(0002H)=78561234H同一個地址既可以看作字節(jié)單元的地址,又可以看作字單元、雙字單元或4字單元的地址,這要根據使用情況確定。1/15/202388河南師范大學計算機與信息技術學院2.段式存儲管理8086/8088的地址總線寬度為20位:8086CPU將1MB存儲器空間分成許多邏輯段:最大尋址空間為220=1MB;物理尋址范圍:00000H~FFFFFH;而它們的機器字長為16位。每個段最大限制為64KB;邏輯地址=段基地址:段內偏移地址;1/15/202389河南師范大學計算機與信息技術學院段基地址說明邏輯段在主存中的起始地址,簡稱段地址。段不能起始于任意地址,而必須從任一小段的首地址開始。段地址的低4位為0000B,這樣規(guī)定段地址只取段起始地址的高16位值。1/15/202390河南師范大學計算機與信息技術學院小段
16位二進制數可以表示216=64K個字節(jié)單元的地址,即它可以表示的地址范圍應該是0~65535,其地址編號的范圍用十六進制數表示為0000H~FFFFH。機器規(guī)定:從0地址開始,每16個字節(jié)為一小段。這里每一行就是一個小段。其中第一列就是每個小段的首地址,在十六進制表示的地址中,最低位為0。在1MB的地址空間中,共有64K(1MB/16B=220/24)個小段首地址。1/15/202391河南師范大學計算機與信息技術學院小段00000,00001,00002,…,00009,0000A,0000B,…,0000E,0000F,00010,00011,00012,…,00019,0001A,0001B,…,0001E,0001F,00020,00021,00022,…,00029,0002A,0002B,…,0002E,0002F,
…… ……FFFE0,F(xiàn)FFE1,F(xiàn)FFE2,…,F(xiàn)FFE9,F(xiàn)FFEA,F(xiàn)FFEB,…,F(xiàn)FFEE,F(xiàn)FFEF,F(xiàn)FFF0,F(xiàn)FFF1,F(xiàn)FFF2,…,F(xiàn)FFF9,F(xiàn)FFFA,F(xiàn)FFFB,…,F(xiàn)FFFE,F(xiàn)FFFF。 1/15/202392河南師范大學計算機與信息技術學院段內偏移地址說明主存單元距離段起始位置的偏移量,簡稱偏移地址。因為每個邏輯段不超過64KB,所以偏移地址可以用16位數據表示。1/15/202393河南師范大學計算機與信息技術學院3.邏輯地址與物理地址在1MB的存儲器里,每個存儲單元都有一個唯一的20位地址,稱為該存儲單元的物理地址。
CPU訪問存儲器時,必須先確定所要訪問的存儲單元的物理地址,才能訪問該單元。物理地址和邏輯地址的轉換1/15/202394河南師范大學計算機與信息技術學院物理地址和邏輯地址的轉換物理地址=邏輯地址中的段地址左移4位+偏移地址或物理地址=16×段地址+偏移地址例:邏輯地址:1460:0100 和 1380:0F0014600H+100H14700H13800H+F00H14700H物理地址:一個物理地址可以對應多個邏輯地址。1/15/202395河南師范大學計算機與信息技術學院段寄存器與邏輯段8086、80286有4個16位段寄存器每個段寄存器用來確定一個邏輯段的起始地址,每種邏輯段均有各自的用途。CS(代碼段)指明代碼段的起始地址SS(堆棧段)指明堆棧段的起始地址DS(數據段)指明數據段的起始地址ES(附加段)指明附加段的起始地址在80386及其后繼的80X86中,新增兩個段寄存器FS和GS,它們也是附加的數據段寄存器。1/15/202396河南師范大學計算機與信息技術學院各邏輯段的分配程序的指令序列必須安排在代碼段。程序使用的堆棧一定在堆棧段。程序中的數據默認是安排在數據段,也經常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數據的存放比較靈活,實際上可以存放在任何一種邏輯段中。默認的情況允許改變,需要使用段超越前綴指令:CS:、SS:、DS:、ES:、FS:、GS:。1/15/202397河南師范大學計算機與信息技術學院8086/8088、80286的段寄存器和相應存放偏移地址的寄存器之間的默認組合段偏移CSIPSSSP或BPDSBX、DI、SI或一個16位數ESDI(用于串指令)1/15/202398河南師范大學計算機與信息技術學院段分配方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- racemic-6-7-Dihydroxy-cannabichromene-生命科學試劑-MCE-9913
- 2-Isopropyl-5-methylanisole-生命科學試劑-MCE-4177
- 2025年度解除租賃合同簡易協(xié)議書(體育場館)
- 二零二五年度城市商業(yè)圈門市房租賃與商業(yè)資源整合合同
- 二零二五年度電子租房合同附租客租賃滿意度調查
- 2025年度員工離職補償及保密協(xié)議
- 二零二五年度社區(qū)車位使用權共有管理協(xié)議書
- 施工現(xiàn)場施工防火制度
- 教育機構電力供應的未來趨勢-分布式變電站
- 音樂學院師資隊伍的音樂教育與創(chuàng)新發(fā)展
- 2024中國婦科臨床實踐指南-卵巢癌
- 2024-2030年中國靶機行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024過敏性休克搶救指南(2024)課件干貨分享
- 醫(yī)療行業(yè)提高醫(yī)院服務質量的改進方案三篇
- JJG(交通) 192-2023 負壓篩析儀
- 七年級下冊第四單元第七章 人類活動對生物圈的影響作業(yè)設計
- 農行網點負責人述職報告范本
- 常見軍事訓練傷的康復流程
- 人教版小學數學一年級(上)口算題1000道
- 急診科管理手冊
- 售后工程師的績效考核與評估
評論
0/150
提交評論