




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 解決微型機領域中數的不同表示方法解決微型機領域中數的不同表示方法一常用計數制一常用計數制 1. 1. 十進制數:編程時使用(十進制數:編程時使用(D D) 2. 2. 二進制數:計算機內部信息存儲,運算,二進制數:計算機內部信息存儲,運算, 輸入輸入/ / 輸出都是二進制數(輸出都是二進制數(B B) 1.1 1.1 計算機中的數制計算機中的數制3.3.十六進制數十六進制數(H):人們最常用的是人們最常用的是十進制十進制,計算機中為了物理實,計算機中為了物理實現的方便,采用的是現的方便,采用的是二進制,二進制,為了書寫閱讀方為了書寫閱讀方便,又常常采用便,又常常采用十六進制數十六進制數來表示
2、二進制數。來表示二進制數。進位制 二進制 八進制 十進制 十六進制規則 逢二進一 逢八進一 逢十進一 逢十六進一基數 R=2 R=8 R=10 R=16數碼 0,1 0,1,2.,7 0,1,2.,9 0,1,2,.9, A,B,C,D,E,F 權 2i 8i 10i 16i 形式表示 B Q D H計算機中常用的各種進位計數制計算機中常用的各種進位計數制在數位上在數位上, ,每個數位被賦予一定的位值。例如每個數位被賦予一定的位值。例如: : 在十進制數中在十進制數中, ,個、十、百、千個、十、百、千各位的權分各位的權分別為別為10100 0 , 10, 101 1 , 10, 102 2 ,
3、 10, 103 3 位二進制位二進制數數 等值的一位等值的一位 十六進制數十六進制數 位二進制數位二進制數 等值的一位等值的一位 十六進制數十六進制數000000000 0100010008 8000100011 1100110019 9001000102 210101010A A001100113 310111011B B010001004 411001100C C010101015 511011101D D011001106 611101110E E011101117 711111111F F十六進制數十六進制數 與二進制的關系:與二進制的關系:每每4位二進制數用位二進制數用1位十六進制
4、數來表示位十六進制數來表示二進制與十六進制運算二進制與十六進制運算1 0 11 1 101101 1 0 11 0 1 00 0 1 1( 3 9 )( 3 9 )1616( 7 A )( 7 A )1616( B 3 )( B 3 )1616( 4 5 )( 4 5 )1616( 2 6 )( 2 6 )1616( 1 F )( 1 F )1616二數制轉換二數制轉換 二、八、十六進制數 十進制數 算法: : 每位的代碼和該位的權值相乘,再求累加和 如:()(?) 解:解: 123122 021 120121122 = 8 4 0 1 0.5 0.25 = (13.75 ) 10如:如: (
5、29A F)16 = ( ? )10解解: 21639162 10161 15160 = 8192 2304 160 15 = (10671)10. . 二進制數二進制數十六進制數十六進制數 算法:算法:四位二進制數為一組,每組用等值的十六進制代換四位二進制數為一組,每組用等值的十六進制代換 如:如:(101011.11)(101011.11)(10,1011.1100)(10,1011.1100)2=(2B.C)=(2B.C)16163 3十六進制數十六進制數二進制數二進制數算法:算法:一位十六進制數用等值的四位二進制數代換一位十六進制數用等值的四位二進制數代換如如: : (17E.58)
6、(17E.58)1616(0001,0111,1110.0101,1000)0001,0111,1110.0101,1000)2 24 . 4 . 十進制數十進制數二進制數二進制數 十進制整數十進制整數二進制數二進制數 算法:算法:除取整,直到商為零為止除取整,直到商為零為止 ,倒排,倒排 1 11.余220.余211.余20所以,所以,(11)(11)1010=(1011)=(1011)2 251.余 2 十進制數純小數十進制數純小數二進制數二進制數 算法算法: :乘乘2 2取整取整, ,直到乘積的小數部分為直到乘積的小數部分為0 0時止,順排時止,順排 (0.8125) (0.8125)1
7、010=(0.1101)=(0.1101)2 20. 8125 1 . 625 22 1. 250 2 1. 020. 5十進制帶小數十進制帶小數 二進制數二進制數 算法:算法:整數、純小數分別計算整數、純小數分別計算, ,再合并再合并 (11.8125)(11.8125)1010=(1011.1101)=(1011.1101)2 2 1.21.2計算機中數據的編碼計算機中數據的編碼一十進制數的二進制編碼一十進制數的二進制編碼BCDBCD碼碼二字符的編碼二字符的編碼ASCIIASCII碼碼三有符號數的編碼(碼制)三有符號數的編碼(碼制)原反補碼原反補碼解決不同信息在計算機中的具體表示解決不同信
8、息在計算機中的具體表示 一十進制數的二進制編碼一十進制數的二進制編碼BCD碼碼 采用采用二進制數二進制數對每一位對每一位十進制數字十進制數字進行編碼所得到的數進行編碼所得到的數叫做叫做BCD碼。碼。 BCD碼有多種形式,最常用的是碼有多種形式,最常用的是8421BCD碼,它是用碼,它是用4位二進制數位二進制數對一個十進制數進行編碼,這對一個十進制數進行編碼,這4位二進制碼位二進制碼的值就是被編碼的一位十進制數的值。的值就是被編碼的一位十進制數的值。4 401000100010001003 300110011001100112 200100010001000101 100010001000100
9、010 00000000000000000等值的一位十進制數等值的一位十進制數 等值的一位等值的一位BCDBCD碼數碼數 四位二進制數四位二進制數 01010101010101015 501100110011001106 601110111011101117 710001000100010008 810011001100110019 910101010非法非法BCDBCD碼碼1011101111001100110111011110111011111111 BCDBCD碼在計算機中的存儲分為緊湊型和非緊湊碼在計算機中的存儲分為緊湊型和非緊湊型兩種:型兩種:緊湊型緊湊型BCDBCD碼:碼: (37
10、37)D D = 0011 = 0011,0111B0111B非緊湊型非緊湊型BCDBCD碼:碼: (3737)D D = 0000 = 0000,0011B0011B 0000 0000,0111B0111B 二字符的編碼二字符的編碼ASCII碼碼 計算機常用的輸入輸出設備(鍵盤、顯示器、打印機)處計算機常用的輸入輸出設備(鍵盤、顯示器、打印機)處理的數都是字符。理的數都是字符。 有:有:英文的大小寫字母,英文的大小寫字母,數字符號數字符號(0,1,9)以及其他)以及其他常用符號常用符號(如:(如:%、+等)。等)。 采用美國標準信息交換碼(采用美國標準信息交換碼(ASCII)對字符進行編碼
11、。)對字符進行編碼。 使用使用七位二進制編碼七位二進制編碼來表示一個字符。該編碼方案中共有來表示一個字符。該編碼方案中共有128個字符(個字符(27=128)。)。ASCIIASCII字符編碼高 位 低 位 000 001 010 011 100 101 110 1110000 NUL DLE SP 0 0 P p0001 SOH DC1 ! 1 1 A A Q a q0010 STX DC2 “ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN &
12、 6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LFLF SUB * : J Z j z 1011 VT ESC + ; K k 1100 FF FS , N n 1111 SI US / ? O _ o DEL如:鍵入如:鍵入“”,實際寫入鍵盤存儲區的是,實際寫入鍵盤存儲區的是31H31H 即即 00110001B00110001B鍵入鍵入“A A”, 實際寫入鍵盤存儲區的是實際寫入鍵盤存儲區的是41H41H 即即 01000001B01000001B又如:欲顯示又如:
13、欲顯示“0 0”,應把,應把 30H30H 即即 00110000B00110000B 顯示存儲區顯示存儲區 欲顯示欲顯示“F F ”,應把,應把 46H46H 即即 01000110B01000110B 顯示存儲區顯示存儲區 輸入輸入/ / 輸出用字符輸出用字符要求牢記以下要求牢記以下1818個字符的個字符的ASCASC碼碼:0 09 9的的ASCASC碼為碼為 30H 30H 39H39HA AF F的的ASCASC碼為碼為 41H 41H 46H46H回車符回車符的的ASCASC碼為碼為 0DH0DH換行符換行符的的ASCASC碼為碼為 0AH0AH1000010110000101 三三
14、. . 碼制碼制 解決在微型機領域中如何表示有符號數解決在微型機領域中如何表示有符號數(一)(一) 真值和機器數的概念真值和機器數的概念計算機只能識別計算機只能識別0和和1組成的數或代碼,所以有符號數的組成的數或代碼,所以有符號數的符號也只能用符號也只能用0和和1來表示來表示 1 1真值真值:一個數的數值:一個數的數值 用用“”表示正數,用表示正數,用“”表示負數表示負數 把符號數值化,用把符號數值化,用0 0表示表示“+”+”,用,用1 1表示表示“-”-”,這,這 樣,連同符號位在一起作為一個數,稱為機器數。樣,連同符號位在一起作為一個數,稱為機器數。 正數正數 負數負數 0 0 XXXX
15、XXXXXXXXXX 1 1 XXXXXXXXXXXXXX2 2機器數機器數:在計算機中如何表示正負:在計算機中如何表示正負? ?由于數值部分的表示方法不同,有符號數可有三種表示由于數值部分的表示方法不同,有符號數可有三種表示方法(即機器數有三種形式),分別叫做:方法(即機器數有三種形式),分別叫做: 原碼、原碼、 反碼、反碼、 補碼補碼3 3字長字長:包括符號位在內,一個二進制數占有的位數:包括符號位在內,一個二進制數占有的位數 1. 原碼:原碼: 最高位為符號位最高位為符號位,數值位部分就是該數的絕對值數值位部分就是該數的絕對值。 例如:例如:假設某機器的字長為假設某機器的字長為8位,則:
16、位,則:+23(17H)的原碼機器數為:的原碼機器數為:- 23(-17H)的原碼機器數為:的原碼機器數為: 其中最高位是符號位,后其中最高位是符號位,后7位是數值位。位是數值位。0001011110010111 2. 反碼:反碼: 把把最高位規定為符號位最高位規定為符號位,數值部分對正數是其絕對值,數值部分對正數是其絕對值,對于對于負數則是其絕對值按位取反負數則是其絕對值按位取反(即(即1變變0,0變變1)。)。例如:例如:+23的反碼機器數為的反碼機器數為 - 23的反碼機器數為的反碼機器數為 數字數字0的反碼有的反碼有2種表示:種表示: (+0)10=(00000000)2 (- 0)1
17、0=(11111111)20001011111101000 3. 補碼:補碼: 對于對于正數的補碼同原碼、反碼正數的補碼同原碼、反碼,負數的數值位部分為其,負數的數值位部分為其絕絕對值按位取反后末位加對值按位取反后末位加1所得。所得。 例如例如:+23的反碼為的反碼為 -23的反碼為的反碼為 - 23的補碼為的補碼為000101111110100011101001小結:小結: 機器數比真值數多一個符號位。機器數比真值數多一個符號位。 正數的原、反、補碼與真值數相同。正數的原、反、補碼與真值數相同。 負數原碼的數值部分與真值相同;負數反碼的數值部分負數原碼的數值部分與真值相同;負數反碼的數值部分
18、為真值數按位取反為真值數按位取反; ;負數補碼的數值部分為真值數按位取反負數補碼的數值部分為真值數按位取反末位加末位加1 1。 沒有負零的補碼,或者說負零的補碼與正零的補碼相同。沒有負零的補碼,或者說負零的補碼與正零的補碼相同。 補碼機器數的數值范圍補碼機器數的數值范圍 設機器數字長設機器數字長=n=n位位, ,用來表示整數用來表示整數, ,則則n n位補碼數位補碼數, ,其真值范其真值范 圍為圍為: : -2-2n-1 n-1 +2+2n-1 n-1 - 1- 1由于補碼表示的機器數更適合運算,為此,計算機系統中由于補碼表示的機器數更適合運算,為此,計算機系統中 負數一律用補碼表示。負數一律
19、用補碼表示。設:設:8 8位補碼數為位補碼數為 1000,00001000,0000 0111,11110111,1111 則:十進制真值數為則:十進制真值數為 - - 128 128 +127+127設:設:1616位補碼數為位補碼數為 1000,0000,0000,00001000,0000,0000,00000111,1111,1111,11110111,1111,1111,1111則:十進制真值數為則:十進制真值數為 -32768 -32768 +32767+32767 (2 2)設)設XX補補 =(96)=(96)1616, ,則則x =( ? )x =( ? )1010 解解: :
20、 x x補補 =(96)=(96)16 16 = = ( 10010110 10010110 )2 則則 x = -x = -(11010101101010)2 2 =(-106)=(-106)1010 (1 1)設)設x =(-120)x =(-120)1010, ,則則xx補補 =( ? )=( ? )1616 解:解:x =(-120)x =(-120)10 10 =(-1111000)=(-1111000)2 2 則則 xx補補 =(1000,1000)=(1000,1000)2 2 =(88) =(88)1616 真值與機器數的轉換真值與機器數的轉換( (設字長設字長n=8) n=8
21、) (二)整數補碼的運算(二)整數補碼的運算 關于關于“模模”的概念的概念 一個計量器的最大容量稱為該計量器的一個計量器的最大容量稱為該計量器的“模模”四位計數器能存四位計數器能存0000000011111111共十六個數共十六個數, , 模模2 24 4八位計數器能存八位計數器能存0000,00000000,00001111,11111111,1111共共256256個數,個數, 模模 2 28 8 十六位計數器能存十六位計數器能存0000,0000,0000,00000000,0000,0000,00001111,1111,1111,11111111,1111,1111,1111共共655
22、3665536個數,個數, 模模 2 21616 2 2 四位的加法器四位的加法器(由四個全加器組成)模(由四個全加器組成)模 2 24 41616011一位全加器有一位全加器有3 3個輸入端個輸入端( (加數加數, ,被加數被加數, ,低位向本位的進位低位向本位的進位) ) 2 2個輸出端個輸出端( (本位和本位和, ,本位向高位的進位本位向高位的進位) )0 在上述加法器上進行在上述加法器上進行: 7+6=13,: 7+6=13,進位為進位為0 0 8+8=0, 8+8=0,進位為進位為1 1 進位為進位為“1 1”,其值為,其值為1616,就是四位加法器的,就是四位加法器的“模模”, 它
23、被運算器它被運算器“丟失丟失”了。了。 0 01 11 11 11 11 10 00 01 11 11 10 0 3.3.整數補碼的加減運算整數補碼的加減運算 補補補補補補補補補補 補補 條件:條件:(1)(1) 符號位參加運算符號位參加運算 (2)(2) 以以2 2n n為模(為字長)為模(為字長) (3)(3) 當真值滿足下列條件時,結果是正確的,否則結當真值滿足下列條件時,結果是正確的,否則結果錯誤果錯誤 2 2n-1 n-1 x, y, x+y ,x x, y, x+y ,xy +2y +127 +127, 2 21515-1,-2-1,255 有溢出有溢出16位無符號數運算位無符號數
24、運算, 結果結果65535 有溢出有溢出32位無符號數運算位無符號數運算, 結果結果 232_1 有溢出有溢出8位有符號數運算位有符號數運算, -128結果結果127 有溢出有溢出16位有符號數運算位有符號數運算, -32768結果結果32767 有溢出有溢出32位有符號數運算位有符號數運算, -231結果結果 231_1 有溢出有溢出2. CPU如何判斷溢出如何判斷溢出 由于溢出和操作數的性質有關由于溢出和操作數的性質有關,而操作數的性質是由而操作數的性質是由 程序員定義的。程序員定義的。CPU只能默認一種選擇只能默認一種選擇,即即CPU一律一律 默認操作數是有符號補碼數默認操作數是有符號補
25、碼數,并以此來設置溢出標志。并以此來設置溢出標志。 3.3.程序員如何判斷溢出程序員如何判斷溢出H 有符號數運算有符號數運算, ,判判O O標志標志,O,O標志為標志為1,1,有溢出有溢出H 無符號數加無符號數加/ /減減, ,判判C C標志標志,C,C標志為標志為1,1,有溢出有溢出例例: :下列指令執行后下列指令執行后 AL=?AL=? A.C.O.P.S.Z A.C.O.P.S.Z 為何值為何值? ? MOV AL ,0C8H ADD AL ,0C8H AL=90H, AL=90H,如果如果C8HC8H為無符號數為無符號數( (值值=200),=200),則有溢出。則有溢出。 如果如果C
26、8HC8H為有符號數為有符號數( (值值=-56),=-56),則無溢出。則無溢出。 這這6 6個標志中個標志中,C.O.P.S.Z,C.O.P.S.Z可為程序的轉移提供測試條件。可為程序的轉移提供測試條件。000010011000 100 110 01 0 0 1 1 0C=1S=1P=1 O=0Z=01A=1 源程序中的語句類型源程序中的語句類型 一個完整的源程序應包含一個完整的源程序應包含2 2類語句類語句: : 符號指令、匯編偽指令符號指令、匯編偽指令( (偽語句偽語句) )標號名、變量名、段名、過程名標號名、變量名、段名、過程名命名規則命名規則: :以字母開頭以字母開頭, ,后跟字后
27、跟字母、數字母、數字長度長度3131個字符個字符H符號指令符號指令: :經匯編后經匯編后, ,其目標指令通知其目標指令通知CPUCPU進行什么操作進行什么操作H偽偽 指指 令令: :是非機器指令,是在匯編期間進行操作的。是非機器指令,是在匯編期間進行操作的。 為匯編程序為匯編程序, ,鏈接程序提供匯編鏈接信息鏈接程序提供匯編鏈接信息 符號名符號名 偽指令偽指令偽指令偽指令 標號標號 : 符號指令符號指令符號指令符號指令此處無冒號此處無冒號 4.4 4.4 常用偽指令及運算符常用偽指令及運算符1.1.字節字義偽指令 變量名 DB DB 一串用逗號間隔的單字節數 說明說明: :v DB DB De
28、fine Byte Define Byte 的縮寫的縮寫, ,“定義字節定義字節”。v ? ? 隨機數隨機數, Dup , Dup Duplicate(Duplicate(重復重復) )v 3 Dup(?) 3 Dup(?) 代表代表3 3個用逗號間隔的隨機數個用逗號間隔的隨機數v 5 Dup (A) 5 Dup (A) 代表代表5 5個用逗號間隔的個用逗號間隔的A A的的ASCASC碼碼如如: : N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLO N2 DB ?,?,? ;與下條等價與下條等價 N2 DB 3 DUP(?)匯編后匯編
29、后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:功能功能: :H通知匯編程序把通知匯編程序把DBDB后跟的單字后跟的單字 節數節數, ,依次存入從變量依次存入從變量(如如N1)N1) 開始的單元開始的單元, ,負數用補碼表示負數用補碼表示, , 單引號中的字符翻譯成單引號中的字符翻譯成ASCASC碼。碼。 如如: : N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;與下條等價與下條等價N2 DB 3 DUP(?)如如:
30、: N1 DB 12H,64,-1,3*3 DB 01010101B, A , B DB 0A6H, HELLON2 DB ?,?,? ;與下條等價與下條等價N2 DB 3 DUP(?)功能功能: :H H用用DBDB定義的這些內存單元定義的這些內存單元(N1(N1 N1+12,N1+12, N2 N2 N2+2)N2+2)的屬性均為的屬性均為“字節型字節型”。匯編后匯編后12 H40 HFF H09 H55 H41 H42 HA6 H48 H45 H4C H4C H4F HX X X XX XN1:N2:N1+12:N2+2:2.2.字定義偽指令字定義偽指令 變量名變量名 DWDW 一串用逗
31、號間隔的雙字節數一串用逗號間隔的雙字節數如如: :WNUM DW 1234H,12, AB, C DW ?,? DW 2 DUP(?)說明說明: : H H DW DW Define Word Define Word “字定義字定義” H H ? ? 雙字節隨機數雙字節隨機數 H H 單引號中只能是一個或兩個字符單引號中只能是一個或兩個字符 功能功能: : H H通知匯編程序把通知匯編程序把DWDW后跟的雙字節數后跟的雙字節數, , 依次存入從變量名開始的單元依次存入從變量名開始的單元, ,每一個數每一個數 占占2 2個字節個字節, ,低位字節低位字節低址單元低址單元, , 高位字節高位字節相
32、鄰的高址單元。相鄰的高址單元。功能功能: :H H用用DWDW定義的這些單元的屬性都是定義的這些單元的屬性都是“字型字型”, , 如上例如上例, WNUM , WNUM WNUM+11WNUM+11這這1212個單元的個單元的 屬性都是屬性都是“字型字型”。 匯編后匯編后WNUM:34 H 12 H 0CH0 042 H41 H43 H0 0X X X X X XX XWNUM+11:功能功能: :H H通知匯編程序把通知匯編程序把DDDD后跟的數存入變量名開始的單元后跟的數存入變量名開始的單元, , 每一個數占每一個數占4 4個字節個字節, ,低位字節低位字節低址單元低址單元, ,高位字高位
33、字 節節高址單元。高址單元。 H H用用DDDD定義的這些單元的屬性都是定義的這些單元的屬性都是“雙字型雙字型”, ,上例上例 DNUM DNUM DNUM+3DNUM+3單元單元, ,這些單元都是雙字型單元。這些單元都是雙字型單元。3. 3. 雙字定義偽指令雙字定義偽指令 變量名變量名 DDDD 一串用逗號間隔的一串用逗號間隔的4 4字節數字節數 如如: : DNUM DD 12345678H 匯編后匯編后DNUM: 34H78H 56 H 12H5. 5. 等值偽指令等值偽指令 符號常數符號常數 EQUEQU 表達式表達式 如如: : NUM EQU 33 功能功能: : 定義符號常數定義
34、符號常數NUMNUM的值為的值為33 33 6. 6. 等號偽指令等號偽指令 符號常數符號常數= =表達式表達式 如如: : NUM = 33 功能功能: :定義符號常數定義符號常數NUMNUM的值為的值為33 33 4. 4. 多字節定義偽指令多字節定義偽指令 變量名變量名 DFDF 一串用逗號間隔的一串用逗號間隔的6 6字節數字節數 變量名變量名 DQDQ 一串用逗號間隔的一串用逗號間隔的8 8字節數字節數 變量名變量名 DTDT 一串用逗號間隔的一串用逗號間隔的1010字節數字節數功能功能: : 通知匯編程序為通知匯編程序為DF/DQ/DTDF/DQ/DT后跟的每一個數,分配后跟的每一個
35、數,分配 6/8/106/8/10個單元。個單元。 三三. . 常用運算符常用運算符 1. 1. 算術運算符算術運算符: +, -, : +, -, * *, / , / 2. 2. 關系運算符關系運算符: : EQ( EQ(等于等于), NE(), NE(不等于不等于), GT(), GT(大于大于),LT(),LT(小于小于),), GE( GE(大于或等于大于或等于) )例如例如: : NUM EQU 33 MOV AL, NUM;該指令與下條指令等價該指令與下條指令等價 MOV AL , 33區別區別: :H H用用EQUEQU定義的符號常數定義的符號常數, ,其值在后繼語句中不能更改
36、其值在后繼語句中不能更改H H用用“= =”定義的符號常數定義的符號常數, ,其值在后繼語句中可以重新定義其值在后繼語句中可以重新定義 應用應用: : H H$ $運算符緊跟在運算符緊跟在 DBDB、DWDW、DDDD偽指令之后偽指令之后, ,統計字符統計字符 串的長度。串的長度。 例如數據段有例如數據段有: : BUF DB THE QUICK BROWN FOX ;字符串長度字符串長度19 LLL EQU $-BUF 匯編后匯編后 符號常數符號常數LLLLLL的值即為的值即為19193. $3. $運算符運算符 H H匯編程序對源程序是逐行匯編的匯編程序對源程序是逐行匯編的,$,$運算符可
37、以返回運算符可以返回 匯編計數器的當前值。匯編計數器的當前值。如如: : MOV AX, SEG DATA MOV DS, AX設設“DATADATA”是數據段的段名是數據段的段名, ,上述兩條指令算出數據段上述兩條指令算出數據段的段基址的段基址, ,先賦給先賦給AX,AX,再轉賦再轉賦DSDS。 5.OFFSET5.OFFSET運算符運算符 H H格式:格式:OFFSET OFFSET 變量名或標號名變量名或標號名 H H功能:算出某個變量或標號名所在單元的偏移地址(有效功能:算出某個變量或標號名所在單元的偏移地址(有效地址)。地址)。4. SEG4. SEG運算符運算符 H H格式格式:
38、SEG : SEG 段名或變量名或標號名段名或變量名或標號名 H H功能功能: : 計算某一邏輯段的段基址計算某一邏輯段的段基址 設以設以“DATADATA”為段名的數據段中,存在為段名的數據段中,存在 BUF DB 12 ,34 ,56代碼段:代碼段: MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET BUF MOV AL,BX ;AL=12以下兩條指令等價的:以下兩條指令等價的: MOV BX,OFFSET BUF LEA BX,BUF6. PTRPTR運算符運算符 格式格式: : 類型說明符類型說明符 PTR PTR 地址表達式地址表達式 功能功能: : 在
39、在本條指令本條指令中中臨時修改臨時修改地址表達式的屬性地址表達式的屬性 內存單元內存單元5 5種尋址方式種尋址方式子程序的名稱子程序的名稱 BYTE BYTE(字節)(字節) WORDWORD(字)(字) DWORDDWORD(雙字)(雙字) FARFAR(遠)(遠) NEARNEAR(近)(近)舉例:設數據段有:舉例:設數據段有: BUF DB 11,22,33,44 WBUF DW ?,?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 代碼段:代碼段: MOV AX,BUF MOV AL,BUF MOV AX,WORD
40、PTR BUF ; AH=22,AL=11 MOV BUF,12H MOV BUF,1234H MOV WORD PTR BUF,1234H ;BUF單元為單元為34H,BUF+1單元為單元為12H 匯編后匯編后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:舉例:設數據段有:舉例:設數據段有: BUF DB 11,22,33,44 WBUF DW ?,?,? XX DB 0FFH,0 YY DB 0FFH,0FFH,0,0 ZZ DB 0FFH,0FFH,0FFH,0 MOV BX,OFFSET XX MOV SI,OFFSET YY MOV DI,O
41、FFSET ZZ MOV BX,12H MOV BYTE PTR BX,12H ;XX單元為單元為12H MOV WORD PTR BX,12H ;XX單元為單元為12H, XX+1單元為單元為0 匯編后匯編后BUF:11 223344XXXXXXXXFFH 0 FFHFFHXX:WBUF:YY:4.5 804864.5 80486基本集指令基本集指令分分6 6類,為講授方便,用類,為講授方便,用N 代表立即數,代表立即數,N8、N16、N32代表代表8、16、32位立即數位立即數R 代表寄存器操作數,代表寄存器操作數,R8、R16、R32代表代表8、16、32位位寄存器操作數寄存器操作數M
42、代表內存操作數,代表內存操作數,M8、M16、M32代表代表8、16、32位位內存操作數內存操作數S 代表段寄存器代表段寄存器第一類、第一類、 傳送類傳送類本類指令執行后,不影響狀態標志本類指令執行后,不影響狀態標志MOV 目目 , 源源 R / M , N R / M / S , R ; 目標不允許是目標不允許是CS R / M , S R / S , M ; 目標不允許是目標不允許是CS功能:功能:源源目,源不變,不影響目,源不變,不影響6種標志種標志 為了深入理解數值定義偽指令、學習為了深入理解數值定義偽指令、學習PTRPTR運算符的使用運算符的使用, ,請仔細請仔細 閱讀以下例題。閱讀
43、以下例題。 【例例】閱讀以下程序閱讀以下程序, ,寫出指令執行后的目標操作數。寫出指令執行后的目標操作數。 注意事項:注意事項: 1. 立即數不能直接送段寄存器立即數不能直接送段寄存器 MOV DS, 3000H 2. 目標操作數不允許用立即數方式目標操作數不允許用立即數方式 MOV 2000H, AL 3. 不允許在兩個存儲單元間傳送數據不允許在兩個存儲單元間傳送數據 MOV2000H,3000H 4. 不允許在兩個段寄存器之間傳送數據不允許在兩個段寄存器之間傳送數據 MOV DS, ES 5. 源、目屬性要一致源、目屬性要一致 代碼段代碼段: MOV DS,SEG 數據段段基址數據段段基址
44、 ;對對DS初始化初始化 MOV BL,BNUM ;BL=? 所以,所以,BL=12H數據段經過匯編之后,數據段經過匯編之后,設數據段設數據段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H BNUM:12H34H56H78H90H 代碼段代碼段: MOV DS,SEG 數據段段基址數據段段基址 MOV BX,WNUM+2 ;BX=?數據段經過匯編之后,數據段經過匯編之后,WNUM:22H11H44H33H66H55H所以,所以,BX=334
45、4H設數據段設數據段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代碼段代碼段: MOV DS,SEG 數據段段基址數據段段基址 MOV BX, WORD PTR BNUM+1 ;BX=? 所以,所以,BX=5634HBNUM:12H34H56H78H90H數據段經過匯編之后數據段經過匯編之后,設數據段設數據段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 1357
46、2468H,87654321HFNUM DF 112233445566H 代碼段代碼段: MOV DS,SEG 數據段段基址數據段段基址 MOV BX, WORD PTR DNUM 3 ;BX=?數據段經過匯編之后,數據段經過匯編之后,所以,所以,BX=2113HDNUM:68H24H57H13H21H43H65H87H設數據段設數據段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H 代碼段代碼段: MOV DS,SEG 數據段段基址數據段段
47、基址 MOV SI, OFFSET BNUM MOV BX, SI+1 ;BX=? 所以,所以,BX=5634HBNUM:12H34H56H78H90H數據段經過匯編之后,數據段經過匯編之后,設數據段設數據段:BNUM DB 12H,34H,56H,78H,90HWNUM DW 1122H,3344H,5566HDNUM DD 13572468H,87654321HFNUM DF 112233445566H (16位通用寄存器) (內存操作數) 該指令常用來設置一個16位的寄存器作為地址指針; 該指令的執行效果與 MOV 目標操作數 , OFFSET 內存操作數 相同。DS=1000h1010
48、0h00020020 0100h BX BUF例:例: LEA BX, BUF 執行后執行后 BX=100H MOV BX,OFFSET BUF 堆棧按照的原則組織的一段內存區域。8088中規定堆棧設 置在堆棧段(SS段)內,堆棧指針SP的初值決定了堆棧的大小。 SP始終指向堆棧的頂部,即始終指向最后推入堆棧的信息所在 的單元。 00000SS:0000SS:SP堆堆棧棧段段棧頂:棧區的低地址棧頂:棧區的低地址棧底:棧區的高地址棧底:棧區的高地址堆棧段寄存器堆棧段寄存器SS:存放堆棧段段基址:存放堆棧段段基址堆棧指針堆棧指針ESP(SP):存放棧頂單元的偏移地址:存放棧頂單元的偏移地址 SS、
49、ESP(SP)初值,由程序員賦值或初值,由程序員賦值或DOS系統自動賦值系統自動賦值數據進棧過程(以數據進棧過程(以16位操作數進棧為例)位操作數進棧為例)雙字節操作數雙字節操作數高字節高字節低字節低字節SPX X HX X H高高8位位SS:SP 11 2 H3 4 H堆棧區堆棧區SP 2SP數據進棧過程(以數據進棧過程(以16位操作數進棧為例)位操作數進棧為例)X X HX X H 1 2 HSP高高8位位SS:SP 13 4 H低低8位位SS:SP 21 2 H雙字節操作數雙字節操作數高字節高字節低字節低字節堆棧區堆棧區SP 2SP數據進棧過程(以數據進棧過程(以16位操作數進棧為例)位
50、操作數進棧為例)高高8位位SS:SP 1X X HX X H 1 2 H低低8位位SS:SP 2 3 4 HSP3 4 H1 2 H雙字節操作數雙字節操作數高字節高字節低字節低字節堆棧區堆棧區SP 2SPSP高字節高字節低字節低字節堆棧區堆棧區X X HX X H 1 2 H 3 4 HSP數據出棧過程(以數據出棧過程(以16位操作數出棧為例)位操作數出棧為例)SS:SP目標目標(目標寄存器,目標單元目標寄存器,目標單元)低低8位位7 8 H 5 6 H16位目標寄存器位目標寄存器數據出棧過程(以數據出棧過程(以16位操作數出棧為例)位操作數出棧為例)SS:SP目標目標(目標寄存器,目標單元目
51、標寄存器,目標單元)低低8位位高字節高字節低字節低字節堆棧區堆棧區X X HX X H3 4 HSPSS:SP+1目標高目標高8位位1 2 H3 4 H 5 6 H16位目標寄存器位目標寄存器高字節高字節低字節低字節堆棧區堆棧區X X HX X H 1 2 H 3 4 H3 4 H 1 2 H SP+2SP數據出棧過程(以數據出棧過程(以16位操作數出棧為例)位操作數出棧為例)SS:SP目標目標(目標寄存器,目標單元目標寄存器,目標單元)低低8位位SS:SP+1目標高目標高8位位SP16位目標寄存器位目標寄存器高字節高字節低字節低字節堆棧區堆棧區X X HX X H 1 2 H 3 4 H3
52、4 H 1 2 H SP+2SP數據出棧過程(以數據出棧過程(以16位操作數出棧為例)位操作數出棧為例)SS:SP目標目標(目標寄存器,目標單元目標寄存器,目標單元)低低8位位SS:SP+1目標高目標高8位位SP16位目標寄存器位目標寄存器 80X86的堆棧是向低地址方向延伸的,棧頂是的堆棧是向低地址方向延伸的,棧頂是“浮動浮動”的的 注:一次進棧、出棧的數據至少是注:一次進棧、出棧的數據至少是2字節字節進棧指令進棧指令PUSH 源操作數源操作數 N16 / N32 S / R16 / R32 / M16 / M32如:如:PUSH WORD PTR BXPUSH DWORD PTR SI+5
53、說明:非直接尋址的內存操作數,必須用說明:非直接尋址的內存操作數,必須用PTR說明屬性說明屬性 POP 目標操作數目標操作數 R16 / R32 / M16 / M32 S(CS非法)非法)如:如: PUSH AXPOP BX ;BX=AX說明:說明:非直接尋址的內存操作數,必須用非直接尋址的內存操作數,必須用PTR說明屬性說明屬性加法指令加法指令加法(字、字節)加法(字、字節)帶進位加法指令帶進位加法指令帶進位加法帶進位加法(字、字節字、字節)加加 1 指令指令加加 1(字、字節)(字、字節)減法指令減法指令減法(字、字節)減法(字、字節)帶借位減法指令帶借位減法指令帶借位減法帶借位減法(字
54、、字節字、字節)減減 1 指令指令減減 1(字、字節)(字、字節)比較指令比較指令比較(字、字節)比較(字、字節)求補指令求補指令求補碼求補碼無符號數乘法無符號數乘法不帶符號數乘法不帶符號數乘法(字字,字節字節)帶符號數乘法帶符號數乘法帶符號數乘法帶符號數乘法(字字,字節字節)無符號數除法無符號數除法不帶符號數除法不帶符號數除法(字字,字節字節)帶符號數乘法帶符號數乘法帶符號數除法帶符號數除法(字字,字節字節)符號擴展指令符號擴展指令擴展擴展AL中的符號中的符號不影響不影響符號擴展指令符號擴展指令擴展擴展AX中的符號中的符號不影響不影響 源操作數:通用寄存器、存儲器、立即數 目的操作數:通用寄
55、存器、存儲器 執行的操作: 注:該指令影響標志位 DST+SRC O S Z A P C0 0 1 0 0 1 0 0 0 源操作數:通用寄存器、存儲器、立即數 目的操作數:通用寄存器、存儲器 執行的操作: 注:該指令影響標志位 DST+SRC+C O S Z A P C 0 0 1 0 0 1 0 0 0 操作數:通用寄存器、存儲器 (不能是段寄存器或立即數) 執行的操作: 注:該指令影響標志位 例: INC BX INC byte ptr SI OPRD + 1 O S Z A P 0 0 1 0 0 1 0 0 0 源操作數:通用寄存器、存儲器、立即數 目的操作數:通用寄存器、存儲器 執
56、行的操作: 注:該指令影響標志位 DST - SRC O S Z A P C0 0 1 0 0 1 0 0 0 源操作數:通用寄存器、存儲器、立即數 目的操作數:通用寄存器、存儲器 執行的操作: 注:該指令影響標志位 DSTSRC-C O S Z A P C0 0 1 0 0 1 0 0 0 操作數:通用寄存器、存儲器 (不能是段寄存器或立即數) 執行的操作: 注:該指令影響標志位 例: DEC BX DEC word ptrSI OPRD - 1 O S Z A P 0 0 1 0 0 1 0 0 0 操作數:通用寄存器、存儲器 執行的操作:求補指令,將操作數按位取反后加1,再送回操作數。
57、注:該指令影響標志位 OPRD O S Z A P C 0 0 1 0 0 1 0 0 0 源操作數:通用寄存器、存儲器、立即數 目的操作數:通用寄存器、存儲器 執行的操作: 注:該指令影響標志位 DST - SRC O S Z A P C0 0 1 0 0 1 0 0 0 無符號數乘法 源操作數:通用寄存器、存儲器(不能是立即數) 目的操作數:EDX, EAX (隱含) 執行的操作:字節操作 (AH,AL) (AL) (SRC) 字操作 (DX,AX) (AX) (SRC) 雙字操作 (EDX,EAX) (EAX) (SRC) 注:該指令影響標志位 AL SRC O C0 0 1 0 0 1
58、 0 0 0 有符號數乘法 源操作數:通用寄存器、存儲器(不能是立即數) 目的操作數:EDX, EAX (隱含) 執行的操作:字節操作 (AH,AL) (AL) (SRC) 字操作 (DX,AX) (AX) (SRC) 雙字操作 (EDX,EAX) (EAX) (SRC) 注:該指令影響標志位 AL SRC O C0 0 1 0 0 1 0 0 0 無符號數除法有符號數除法 源操作數:通用寄存器、存儲器 (不能是立即數) 目的操作數:EDX, EAX (隱含) 執行的操作:字節操作 (AL) (AX) / (SRC) 商 (AH) (AX) / (SRC) 余數 字操作 (AX) (DX,AX
59、) / (SRC) 商 (DX) (DX,AX) / (SRC) 余數 雙字操作 (EAX) (EDX,EAX) / (SRC) 商 (DEX) (EDX,EAX) / (SRC) 余數 注:該指令對各標志位均無定義 。 前面提到的所有運算指令都是二進制數的運算指令,怎樣得到十進制的運算結果呢?8088提供了一套十進制調整指令。 BCD碼 用二進制編碼的十進制數。 組合 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 未組合 UUUU0000 UUUU0001 UUUU0010 UUUU1001 0 1
60、 2 9 組合組合/未組合未組合BCD碼數(即壓縮碼數(即壓縮/未壓縮未壓縮BCD碼數)碼數)00001001000010018位位十位十位個位個位組組合合BCD碼碼0000000010018位位未未組組合合BCD碼碼 BCD碼數的加減運算碼數的加減運算BCD碼數是用碼數是用4位二進數代表位二進數代表1位十進數位十進數其運算法則應是:其運算法則應是:“逢十進一,減一當十逢十進一,減一當十”假設:假設:N1=7=(0000 , 0111)BCD N2=6=(0000 , 0110)BCD則:則:N1+N2=07+06=13即結果應當等于即結果應當等于(0001 , 0011)BCD 如何實現如何
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年木樟紙行業市場現狀供需分析及投資評估規劃分析研究報告
- 企業并購與重組策略試題及答案
- 2025-2030年智能開關產業市場發展分析及發展趨勢與投資研究報告
- 水利水電工程新材料發展動態試題及答案
- 2025-2030年寵物衣服產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年基金行業發展分析及投資戰略研究報告
- 2025-2030年地效飛行器市場市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年國內美白產品行業市場發展分析及競爭策略與投資發展研究報告
- 2025-2030年國內潤滑油行業市場發展現狀及發展前景與投資機會研究報告
- 2025-2030年醫療美容產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 【廣安】2025上半年四川廣安理工學院籌建處第一次招聘非事業編制專任教師15人筆試歷年典型考題及考點剖析附帶答案詳解
- 2025醫院護理面試題庫及答案
- 2025新疆西北興業城投集團有限公司崗位招聘(12人)筆試參考題庫附帶答案詳解
- 餐廳供餐協議書范本
- 期中素養測評卷(試題)2024-2025學年五年級下冊科學教科版
- 供水公司筆試試題及答案
- 2024年寶雞市城投資產管理有限公司招聘真題
- 上海市華師大二附中2025屆高三第三次測評英語試卷含解析
- 安徽省糧油經貿有限公司招聘筆試真題2024
- 大棚改造施工合同協議
- 2025年廣東省廣州市荔灣區中考一模道德與法治試卷(含答案)
評論
0/150
提交評論