2022年微機原理與接口技術(shù)知識點總結(jié)2_第1頁
2022年微機原理與接口技術(shù)知識點總結(jié)2_第2頁
2022年微機原理與接口技術(shù)知識點總結(jié)2_第3頁
2022年微機原理與接口技術(shù)知識點總結(jié)2_第4頁
2022年微機原理與接口技術(shù)知識點總結(jié)2_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理與接口技術(shù)復(fù)習(xí)參考資料復(fù)習(xí)資料說明:1、標(biāo)有紅色星號“”的內(nèi)容為重點內(nèi)容3、本資料末尾附有“ 微機原理與接口技術(shù)綜合練習(xí)題與答案錯誤修正”和“微機原理與接口技術(shù)綜合練習(xí)題與答案中不作要求的部分”,請注意查看。第一章概 述一、計算機中的數(shù)制1、無符號數(shù)的表示方法:(1)十進制計數(shù)的表示法特點:以十為底,逢十進一;共有 0-9 十個數(shù)字符號。(2)二進制計數(shù)表示方法:特點:以2 為底,逢2 進位;只有 0 和 1 兩個符號。(3)十六進制數(shù)的表示法:特點:以16 為底,逢16 進位;有 0-9 及 af(表示 1015 )共 16 個數(shù)字符號。2、各種數(shù)制之間的轉(zhuǎn)換(1)非十進制數(shù)到十進制

2、數(shù)的轉(zhuǎn)換按相應(yīng)進位計數(shù)制的權(quán)表達式展開,再按十進制求和。(見書本1.2.3 ,1.2.4 )(2)十進制數(shù)制轉(zhuǎn)換為二進制數(shù)制十進制 二進制的轉(zhuǎn)換:整數(shù)部分:除2 取余;小數(shù)部分:乘2 取整。十進制 十六進制的轉(zhuǎn)換:整數(shù)部分:除16 取余;小數(shù)部分:乘16 取整。以小數(shù)點為起點求得整數(shù)和小數(shù)的各個位。(3)二進制與十六進制數(shù)之間的轉(zhuǎn)換用 4 位二進制數(shù)表示1 位十六進制數(shù)3、無符號數(shù)二進制的運算(見教材p5)4、二進制數(shù)的邏輯運算特點:按位運算,無進借位( 1)與運算只有 a、b 變量皆為1 時,與運算的結(jié)果就是1 ( 2)或運算a、b 變量中,只要有一個為1,或運算的結(jié)果就是1 ( 3)非運算

3、( 4)異或運算a、b 兩個變量只要不同,異或運算的結(jié)果就是1 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 1 頁,共 20 頁 - - - - - - - - -二、計算機中的碼制 (重點)1、對于符號數(shù),機器數(shù)常用的表示方法有原碼、反碼和補碼三種。數(shù)x的原碼記作 x原,反碼記作 x反,補碼記作 x補。注意:對正數(shù),三種表示法均相同。它們的差別在于對負數(shù)的表示。(1)原碼定義:符號位: 0 表示正, 1 表示負;數(shù)值位:真值的絕對值。注意:數(shù) 0 的原碼不唯一(2)反碼定義:若 x0 ,則x反=x原若 x0 , 則x補= x反= x原若 x0

4、, 則x補= x反+1注意:機器字長為8 時,數(shù) 0的補碼唯一,同為000000002、8 位二進制的表示范圍:原碼: -127+127 反碼: -127+127 補碼: -128+127 3、特殊數(shù)10000000 該數(shù)在原碼中定義為:-0 在反碼中定義為:-127 在補碼中定義為:-128 對無符號數(shù):(10000000)= 128 三、信息的編碼1、 十進制數(shù)的二進制數(shù)編碼用 4 位二進制數(shù)表示一位十進制數(shù)。有兩種表示法:壓縮bcd 碼和非壓縮bcd 碼。(1)壓縮 bcd 碼的每一位用4 位二進制表示,00001001表示 09 ,一個字節(jié)表示兩位精品學(xué)習(xí)資料 可選擇p d f - -

5、 - - - - - - - - - - - - 第 2 頁,共 20 頁 - - - - - - - - -十進制數(shù)。(2) 非壓縮 bcd 碼用一個字節(jié)表示一位十進制數(shù),高 4 位總是 0000, 低 4 位的 00001001表示 09 2、 字符的編碼計算機采用7 位二進制代碼對字符進行編碼(1) 數(shù)字 09 的編碼是 01100000111001 , 它們的高 3 位均是 011, 后 4 位正好與其對應(yīng)的二進制代碼(bcd 碼)相符。(2)英文字母az 的 ascii 碼從 1000001 (41h )開始順序遞增,字母az 的 ascii 碼從 1100001 (61h )開始順

6、序遞增,這樣的排列對信息檢索十分有利。第二章微機組成原理第一節(jié)、微機的結(jié)構(gòu)1、計算機的經(jīng)典結(jié)構(gòu)馮. 諾依曼結(jié)構(gòu)(1)計算機由運算器、控制器、輸入設(shè)備和輸出設(shè)備五大部分組成(運算器和控制器又稱為 cpu )(2)數(shù)據(jù)和程序以二進制代碼形式不加區(qū)分地存放在存儲器總,存放位置由地址指定,數(shù)制為二進制。(3)控制器是根據(jù)存放在存儲器中的指令序列來操作的,并由一個程序計數(shù)器控制指令的執(zhí)行。3、 系統(tǒng)總線的分類(1)數(shù)據(jù)總線(data bus ) ,它決定了處理器的字長。(2)地址總線(address bus ), 它決定系統(tǒng)所能直接訪問的存儲器空間的容量。(3)控制總線(control bus)第二節(jié)、

7、 8086微處理器1、8086 是一種單片微處理芯片,其內(nèi)部數(shù)據(jù)總線的寬度是16 位,外部數(shù)據(jù)總線寬度也是16 位,片內(nèi)包含有控制計算機所有功能的各種電路。8086 地址總線的寬度為20 位,有 1mb (220)尋址空間。2、 8086cpu 由總線接口部件biu 和執(zhí)行部件eu 組成。 biu 和 eu 的操作是異步的,為8086 取指令和執(zhí)行指令的并行操作體統(tǒng)硬件支持。3、 8086 處理器的啟動4、寄存器結(jié)構(gòu)(重點)8086 微處理器包含有13 個 16 位的寄存器和9 位標(biāo)志位。4 個通用寄存器(ax ,bx, cx,dx )4 個段寄存器(cs ,ds, ss,es)4 個指針和變

8、址寄存器(sp,bp,si,di)指令指針( ip)1) 、通用寄存器(1)8086 含 4 個 16 位數(shù)據(jù)寄存器,它們又可分為8 個 8 位寄存器,即:ax ah ,al 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 3 頁,共 20 頁 - - - - - - - - -bxbh ,bl cxch ,cl dxdh ,dl 常用來存放參與運算的操作數(shù)或運算結(jié)果(2)數(shù)據(jù)寄存器特有的習(xí)慣用法ax:累加器。多用于存放中間運算結(jié)果。所有i/o 指令必須都通過ax 與接口傳送信息;bx:基址寄存器。在間接尋址中用于存放基地址;cx :計數(shù)寄存器。用于

9、在循環(huán)或串操作指令中存放循環(huán)次數(shù)或重復(fù)次數(shù);dx :數(shù)據(jù)寄存器。在32 位乘除法運算時,存放高16 位數(shù);在間接尋址的i/o 指令中存放 i/o 端口地址。2) 、指針和變址寄存器sp:堆棧指針寄存器,其內(nèi)容為棧頂?shù)钠频刂罚籦p:基址指針寄存器,常用于在訪問內(nèi)存時存放內(nèi)存單元的偏移地址。si:源變址寄存器di:目標(biāo)變址寄存器變址寄存器常用于指令的間接尋址或變址尋址。3) 、段寄存器cs:代碼段寄存器,代碼段用于存放指令代碼ds:數(shù)據(jù)段寄存器es:附加段寄存器,數(shù)據(jù)段和附加段用來存放操作數(shù)ss:堆棧段寄存器,堆棧段用于存放返回地址,保存寄存器內(nèi)容,傳遞參數(shù)4) 、指令指針(ip)16 位指令指

10、針寄存器,其內(nèi)容為下一條要執(zhí)行的指令的偏移地址。5) 、標(biāo)志寄存器(1)狀態(tài)標(biāo)志:進位標(biāo)志位(cf) :運算結(jié)果的最高位有進位或有借位,則cf=1 輔助進位標(biāo)志位(af) :運算結(jié)果的低四位有進位或借位,則af=1 溢出標(biāo)志位(of ) :運算結(jié)果有溢出,則of=1 零標(biāo)志位( zf) :反映指令的執(zhí)行是否產(chǎn)生一個為零的結(jié)果符號標(biāo)志位(sf) :指出該指令的執(zhí)行是否產(chǎn)生一個負的結(jié)果奇偶標(biāo)志位(pf) :表示指令運算結(jié)果的低8 位“1”個數(shù)是否為偶數(shù)(2)控制標(biāo)志位中斷允許標(biāo)志位(if) :表示 cpu 是否能夠響應(yīng)外部可屏蔽中斷請求跟蹤標(biāo)志( tf) :cpu 單步執(zhí)行5、8086 的引腳及其

11、功能(重點掌握以下引腳)ad15ad0 :雙向三態(tài)的地址總線,輸入/輸出信號intr :可屏蔽中斷請求輸入信號,高電平有效。可通過設(shè)置if 的值來控制。nmi :非屏蔽中斷輸入信號。不能用軟件進行屏蔽。reset :復(fù)位輸入信號,高電平有效。復(fù)位的初始狀態(tài)見p21 mn/mx :最小最大模式輸入控制信號。第三章8086 指令系統(tǒng)精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 4 頁,共 20 頁 - - - - - - - - -說明: 8086 指令系統(tǒng)這章為重點章節(jié),對下面列出的指令都要求掌握。第一節(jié) 8086尋址方式一、數(shù)據(jù)尋址方式(重點)1、

12、立即尋址操作數(shù) ( 為一常數(shù) )直接由指令給出 (此操作數(shù)稱為立即數(shù)) 立即尋址只能用于源操作數(shù)例:mov ax, 1c8fh mov byte ptr2a00h, 8fh 錯誤例: mov 2a00h,ax ; 錯誤!指令操作例: mov ax ,3102h; ax3102h 執(zhí)行后, (ah) = 31h , (al) = 02h 2、寄存器尋址(1)操作數(shù)放在某個寄存器中(2)源操作數(shù)與目的操作數(shù)字長要相同(3)寄存器尋址與段地址無關(guān)例: mov ax, bx mov 3f00h, ax mov cl, al 錯誤例: mov ax,bl ; 字長不同 mov es:ax,dx ; 寄存

13、器與段無關(guān)3、直接尋址(1)指令中直接給出操作數(shù)的16 位偏移地址偏移地址也稱為有效地址(ea, effective address) (2)默認的段寄存器為ds ,但也可以顯式地指定其他段寄存器稱為段超越前綴(3)偏移地址也可用符號地址來表示,如addr 、var 例:mov ax ,2a00h mov dx ,es:2a00h mov si,table_ptr 4、間接尋址操作數(shù)的偏移地址(有效地址ea)放在寄存器中只有 si、di 、bx 和 bp 可作間址寄存器例:mov ax,bxmov cl,cs:di 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - -

14、 - - 第 5 頁,共 20 頁 - - - - - - - - -錯誤例:mov ax, dx mov cl, ax 5、寄存器相對尋址ea= 間址寄存器的內(nèi)容加上一個8/16 位的位移量例:mov ax, bx+8mov cx, tablesi mov ax, bp; 默認段寄存器為ss 指令操作例:mov ax ,databx 若(ds)=6000h, (bx)=1000h, data=2a00h, (63a00h)=66h, (63a01h)=55h 則物理地址= 60000h + 1000h + 2a00h = 63a00h 指令執(zhí)行后: (ax )=5566h 6、基址變址尋址若

15、操作數(shù)的偏移地址:由基址寄存器(bx 或 bp)給出基址尋址方式由變址寄存器(si 或 di) 給出變址尋址方式由一個基址寄存器的內(nèi)容和一個變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱為基址 -變址尋址。ea= ( bx)+(si)或( di ) ;ea= ( bp)+(si)或( di)同一組內(nèi)的寄存器不能同時出現(xiàn)。注意:除了有段跨越前綴的情況外,當(dāng)基址寄存器為bx 時,操作數(shù)應(yīng)該存放在數(shù)據(jù)段ds中,當(dāng)基址寄存器為bp 時,操作數(shù)應(yīng)放在堆棧段ss中。例:mov ax, bx si mov ax, bx+si mov ax, ds: bp di 錯誤例:mov ax, bx bp mov a

16、x, di si 指令操作例: mov ax ,bxsi假定: (ds)=8000h, (bx)=2000h, si=1000h 則物理地址= 80000h + 2000h + 1000h = 83000h 指令執(zhí)行后 : (al)=83000h (ah)=83001h 7、相對基址變址尋址在基址 -變址尋址的基礎(chǔ)上再加上一個相對位移量ea= ( bx)+(si)或( di )+8 位或 16 位位移量;ea= ( bp)+(si)或( di) +8 位或 16 位位移量指令操作例 :mov ax,datadibx 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - -

17、 - - 第 6 頁,共 20 頁 - - - - - - - - -若(ds)=8000h, (bx)=2000h, (di)=1000h, data=200h 則指令執(zhí)行后 (ah)=83021h, (al)=83020h 寄存器間接、寄存器相對、基址變址、相對基址變址四種尋址方式的比較:尋址方式指令操作數(shù)形式寄存器間接只有一個寄存器(bx/bp/si/di之一)寄存器相對一個寄存器加上位移量基址 變址兩個不同類別的寄存器相對基址 -變址兩個不同類別的寄存器加上位移量二、地址尋址方式(了解有4 類,能判斷)簡要判斷依據(jù)(指令中間的單詞):段內(nèi)直接short,near 段內(nèi)間接word 段間

18、直接far 段間間接dword 第二節(jié)8086指令系統(tǒng)一、數(shù)據(jù)傳送指令(重點)1、通用傳送指令(1) mov dest ,src; destsrc 傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8 位還是 16 位。具體來說可實現(xiàn):mov mem/reg1,mem/reg2 指令中兩操作數(shù)中至少有一個為寄存器 mov reg,data ;立即數(shù)送寄存器 mov mem,data ;立即數(shù)送存儲單元 mov acc,mem ;存儲單元送累加器 mov mem,acc ;累加器送存儲單元 mov segreg,mem/reg ;存儲單元 /寄存器送段寄存器 mov mem/reg,segreg ;段

19、寄存器送存儲單元/寄存器mov 指令的使用規(guī)則ip 不能作目的寄存器不允許mem mem 不允許segregsegreg 立即數(shù)不允許作為目的操作數(shù)不允許segreg立即數(shù)源操作數(shù)與目的操作數(shù)類型要一致當(dāng)源操作數(shù)為單字節(jié)的立即數(shù),而目的操作數(shù)為間址、變址、基址+變址的內(nèi)存數(shù)時,必須用 ptr 說明數(shù)據(jù)類型。如:mov bx ,12h 是錯誤的。精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 7 頁,共 20 頁 - - - - - - - - -(2) 、堆棧指令什么是堆棧?按 “ 后進先出 (lifo) ” 方式工作的存儲區(qū)域。堆棧以字為單位進行壓

20、入彈出操作。規(guī)定由 ss指示堆棧段的段基址,堆棧指針sp 始終指向堆棧的頂部,sp 的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。壓棧指令 push push src ; src 為 16 位操作數(shù)例: push ax ;將 ax 內(nèi)容壓棧執(zhí)行操作:( sp)-1高字節(jié)ah (sp)-2低字節(jié)al (sp)( sp)- 2 注意進棧方向是高地址向低地址發(fā)展。 彈出指令 pop pop dest 例: pop bx ;將棧頂內(nèi)容彈至bx 執(zhí)行操作:(bl)( sp)(bh)( sp)+1 (sp)( sp)+2 堆棧指令在使用時需注意的幾點:堆棧操作總是按字進行不能從棧頂彈出一個字給cs

21、堆棧指針為ss:sp,sp永遠指向棧頂sp 自動進行增減量(-2,+2)(3) 、交換指令xchg 格式: xchg reg,mem/reg 功能:交換兩操作數(shù)的內(nèi)容。要求:兩操作數(shù)中必須有一個在寄存器中;操作數(shù)不能為段寄存器和立即數(shù);源和目地操作數(shù)類型要一致。舉例:xchg ax,bx xchg 2000 ,cl (4)查表指令xlat 執(zhí)行的操作:al (bx)+(al) 又叫查表轉(zhuǎn)換指令,它可根據(jù)表項序號查出表中對應(yīng)代碼的內(nèi)容。執(zhí)行時先將表的首地址(偏移地址)送到bx 中,表項序號存于al 中。精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 8

22、 頁,共 20 頁 - - - - - - - - -2、輸入輸出指令只限于用累加器al 或 ax 來傳送信息。功能 : (累加器 ) i/o 端口(1)輸入指令in 格式 : in acc,port ;port 端口號 0255h in acc,dx ;dx 表示的端口范圍達64k 例 :in al ,80h ;(al) (80h 端口 ) in al ,dx ;(al) (dx) (2) 輸出指令out 格式: out port,acc out dx,acc 例: out 68h ,ax ;(69h,68h)( ax )out dx ,al ;(dx) (al) 在使用間接尋址的in/ou

23、t 指令時,要事先用傳送指令把i/o 端口號設(shè)置到dx 寄存器如:mov dx ,220h in al ,dx; 將 220h 端口內(nèi)容讀入al 3、目標(biāo)地址傳送指令(1)lea 傳送偏移地址格式: lea reg,mem ; 將指定內(nèi)存單元的偏移地址送到指定寄存器要求:1)源操作數(shù) 必須是一個 存儲器操作數(shù);2)目的操作數(shù)必須是一個16 位的通用寄存器。例: lea bx, si+10h 設(shè): (si)=1000h 則執(zhí)行該指令后, (bx) =1010h 注意以下二條指令差別:lea bx ,buffer mov bx ,buffer 前者表示將符號地址為buffer 的存儲單元的偏移地址

24、取到bx 中;后者表示將buffer 存儲單元中的內(nèi)容取到bx 中。下面兩條指令等效:lea bx ,buffer mov bx, offset buffer 其中 offset buffer表示存儲器單元buffer 的偏移地址。二者都可用于取存儲器單元的偏移地址,但lea 指令可以取動態(tài)的地址,offset 只能取精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 9 頁,共 20 頁 - - - - - - - - -靜態(tài)的地址。二、算術(shù)運算指令1、 加法指令(1) 不帶進位的加法指令add 格式:add acc,data add mem/reg,

25、data add mem/reg1,mem/reg2 實例:add al ,30h add si,bx+20h add cx ,si add di ,200h ?add 指令對 6 個狀態(tài)標(biāo)志均產(chǎn)生影響。例:已知 (bx)=d75fh 指令add bx,8046h 執(zhí)行后,狀態(tài)標(biāo)志各是多少?d75fh = 1110 0111 0101 1111 8046h = 1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101結(jié)果: c=1, z=0, p=0, a=1, o=1, s=0 判斷溢出與進位(重點)從硬件的角度: 默認參與運算的操作數(shù)都是有符號數(shù),

26、當(dāng)兩數(shù)的符號位相同,而和的結(jié)果相異時有溢出,則of=1,否則 of=0 (2)帶進位的加法adc adc 指令在形式上和功能上與add 類似,只是相加時還要包括進位標(biāo)志cf 的內(nèi)容,例如:adc al , 68h ; al (al)+68h+(cf) adc ax , cx ;ax (ax)+(cx)+(cf) adc bx, di ;bx (bx)+di+1di+(cf) (3)加 1指令 inc 格式: inc reg/mem 功能:類似于c 語言中的 +操作:對指定的操作數(shù)加1 例:inc al inc si inc byte ptrbx+4 注:本指令不影響cf標(biāo)志。(4)非壓縮bcd

27、 碼加法調(diào)整指令aaa aaa 指令的操作:精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 10 頁,共 20 頁 - - - - - - - - -如果 al 的低 4 位 9或 af=1 ,則: al (al)+6,(ah) (ah)+1,af 1 al 高 4 位清零 cfaf 否則 al 高 4 位清零(5)壓縮 bcd 碼加法調(diào)整指令daa 兩個壓縮bcd 碼相加結(jié)果在al 中,通過daa 調(diào)整得到一個正確的壓縮bcd 碼. 指令操作 (調(diào)整方法 ):若 al 的低 4 位 9 或 af=1 則(al) (al)+6 ,af 1 若 al

28、的高 4 位 9 或 cf=1 則(al) (al)+60h ,cf1 除 of 外, daa 指令影響所有其它標(biāo)志。daa指令應(yīng)緊跟在add或adc指令之后。2、 減法指令(1)不考慮借位的減法指令sub 格式: sub dest, src 操作: dest (dest)-(src) 注:1. 源和目的操作數(shù)不能同時為存儲器操作數(shù)2. 立即數(shù)不能作為目的操作數(shù)指令例子:sub al,60h sub bx+20h ,dx sub ax,cx (2)考慮借位的減法指令sbb sbb指令主要用于多字節(jié)的減法。格式: sbb dest, src 操作: dest (dest)-(src)-(cf)

29、指令例子:sbb ax,cx sbb word ptrsi,2080h sbb si,dx (3)減 1指令 dec 作用類似于c語言中的”操作符。格式: dec opr 操作: opr (opr)-1 指令例子:dec cl dec byte ptrdi+2 dec si 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 11 頁,共 20 頁 - - - - - - - - -(4)求補指令neg 格式:neg opr 操作:opr 0-(opr) 對一個操作數(shù)取補碼相當(dāng)于用0 減去此操作數(shù),故利用neg 指令可得到負數(shù)的絕對值。例:若 (al)=

30、0fch ,則執(zhí)行neg al 后,(al)=04h ,cf=1 (5)比較指令cmp 格式:cmp dest, src 操作:(dest)-(src) cmp 也是執(zhí)行兩個操作數(shù)相減,但結(jié)果不送目標(biāo)操作數(shù),其結(jié)果只反映在標(biāo)志位上。指令例子:cmp al ,0ah cmp cx ,si cmp di ,bx+03 (6)非壓縮bcd 碼減法調(diào)整指令aas 對 al中由兩個非壓縮的bcd碼相減的結(jié)果進行調(diào)整。調(diào)整操作為:若 al的低 4 位 9 或 af=1,則: al (al)-6,ah (ah)-1,af 1 al 的高 4 位清零 cf af 否則: al的高 4 位清零(7)壓縮 bcd

31、碼減法調(diào)整指令das 對 al中由兩個壓縮bcd碼相減的結(jié)果進行調(diào)整。調(diào)整操作為:若 al的低 4 位 9 或 af=1,則:al(al)-6, 且 af1 若 al的高 4 位 9 或 cf=1,則:al(al)-60h ,且 cf1 das對 of無定義 , 但影響其余標(biāo)志位。das指令要求跟在減法指令之后。3、 乘法指令進行乘法時: 8 位*8 位 16 位乘積16 位*16 位 32 位乘積(1) 無符號數(shù)的乘法指令mul(mem/reg) 格式: mul src 操作:字節(jié)操作數(shù)(ax)(al) (src) 字操作數(shù)(dx, ax) (ax) (src) 指令例子:精品學(xué)習(xí)資料 可選

32、擇p d f - - - - - - - - - - - - - - 第 12 頁,共 20 頁 - - - - - - - - -mul bl ; (al) ( bl), 乘積在 ax中mul cx ; (ax) ( cx), 乘積在 dx,ax中mul byte ptrbx (2)有符號數(shù)乘法指令imul 格式與 mul 指令類似,只是要求兩操作數(shù)均為有符號數(shù) 。指令例子:imul bl ;(ax) (al) (bl) imul word ptrsi ;(dx,ax) (ax) (si+1si) 注意: mul/imul指令中 al(ax) 為隱含的乘數(shù)寄存器; ax(dx,ax) 為隱含

33、的乘積寄存器; src 不能為立即數(shù); 除 cf和 of外,對其它標(biāo)志位無定義。4、除法指令進行除法時: 16 位/8 位 8 位商32 位/16 位 16 位商對被除數(shù)、商及余數(shù)存放有如下規(guī)定:被除數(shù)商余數(shù)字節(jié)除法ax al ah 字除法dx:ax ax dx (1)無符號數(shù)除法指令div 格式: div src 操作:字節(jié)操作(al) (ax) / (src) 的商(ah)(ax) / (src) 的余數(shù)字操作(ax) (dx, ax) / (src) 的商(dx) (dx, ax) / (src) 的余數(shù)指令例子:div cl div word ptrbx (2)有符號數(shù)除法指令idiv

34、 格式:idiv src 操作與 div 類似。商及余數(shù)均為有符號數(shù),且余數(shù)符號總是與被除數(shù)符號相同。注意 : 對于 div/idiv指令ax(dx,ax)為隱含的被除數(shù)寄存器。al(ax) 為隱含的商寄存器。ah(dx) 為隱含的余數(shù)寄存器。src 不能為立即數(shù)。對所有條件標(biāo)志位均無定精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 13 頁,共 20 頁 - - - - - - - - -關(guān)于除法操作中的字長擴展問題?除法運算要求被除數(shù)字長是除數(shù)字長的兩倍,若不滿足則需 對被除數(shù)進行擴展,否則產(chǎn)生錯誤。?對于無符號數(shù)除法擴展,只需將ah 或 dx

35、清零即可。?對有符號數(shù)而言,則是符號位的擴展??墒褂们懊娼榻B過的符號擴展指令cbw 和 cwd 三、邏輯運算和移位指令1、邏輯運算指令(1)邏輯與and 對兩個操作數(shù)進行按位邏輯“與”操作。格式: and dest, src 用途:保留操作數(shù)的某幾位,清零其他位。例 1:保留 al中低 4 位,高 4 位清 0。and al,0fh (2)邏輯或or 對兩個操作數(shù)進行按位邏輯” 或” 操作。格式: or dest, src 用途:對操作數(shù)的某幾位置1;對兩操作數(shù)進行組合。例 1:把 al 中的非壓縮bcd 碼變成相應(yīng)十進制數(shù)的ascii 碼。or al, 30h (3)邏輯非not 對操作數(shù)進

36、行按位邏輯” 非” 操作。格式: not mem/reg 例: not cx not byte ptrdi (4)邏輯異或xor 對兩個操作數(shù)按位進行”異或”操作。格式: xor dest, src 用途:對reg 清零 (自身異或 ) 把 reg/mem 的某幾位變反 ( 與1異或 ) 例 1:把 ax寄存器清零。mov ax,0 xor ax,ax and ax,0 sub ax,ax(5)測試指令test 精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 14 頁,共 20 頁 - - - - - - - - -操作與 and 指令類似 ,但不將

37、 ” 與” 的結(jié)果送回 ,只影響標(biāo)志位。test 指令常用于位測試,與條件轉(zhuǎn)移指令一起用。例:測試 al 的內(nèi)容是否為負數(shù)。test al,80h ;檢查 al 中 d7=1?jnz minus ;是 1(負數(shù) ),轉(zhuǎn) minus ;否則為正數(shù)2、移位指令(1)非循環(huán)移位指令(重點)算術(shù)左移指令sal(shift arithmetic left) 算術(shù)右移指令sar(shift arithmetic right) 邏輯左移指令shl(shift left) 邏輯右移指令shr(shift right) 這 4 條指令的格式相同,以 sal 為例:cl ;移位位數(shù)大于1時sal mem/reg

38、1;移位位數(shù)等于1 時? 算術(shù)移位 把操作數(shù)看做有符號數(shù);邏輯移位 把操作數(shù)看做無符號數(shù)。? 移位位數(shù)放在cl 寄存器中,如果只移1 位,也可以直接寫在指令中。例如:mov cl,4 shr al,cl ;al 中的內(nèi)容右移4 位? 影響 c,p,s,z,o 標(biāo)志。? 結(jié)果未溢出時:左移 1 位操作數(shù) *2 右移 1 位操作數(shù) /2例:把 al 中的數(shù) x 乘 10因為 10=8+2=23+21,所以可用移位實現(xiàn)乘10 操作。程序如下:mov cl,3 sal al,1 ; 2xmov ah,al sal al,1 ; 4xsal al,1 ; 8xadd al,ah ; 8x+2x = 10

39、 x四、控制轉(zhuǎn)移指令1、 轉(zhuǎn)移指令(1)無條件轉(zhuǎn)移指令jmp 格式: jmp label 本指令無條件轉(zhuǎn)移到指定的目標(biāo)地址,以執(zhí)行從該地址開始的程序段。精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 15 頁,共 20 頁 - - - - - - - - -(2)條件轉(zhuǎn)移指令(補充內(nèi)容)(重點) 根據(jù)單個標(biāo)志位設(shè)置的條件轉(zhuǎn)移指令jb/jc ;低于 ,或 cf=1,則轉(zhuǎn)移jnb/jnc/jae ;高于或等于,或 cf=0,則轉(zhuǎn)移jp/jpe ;奇偶標(biāo)志pf=1(偶),則轉(zhuǎn)移jnp/jpo ;奇偶標(biāo)志pf=0(奇 ),則轉(zhuǎn)移jz/je ;結(jié)果為零 (zf

40、=1), 則轉(zhuǎn)移jnz/jne ;結(jié)果不為零 (zf=0), 則轉(zhuǎn)移js ;sf=1,則轉(zhuǎn)移jns ;sf=0,則轉(zhuǎn)移jo ; of=1,則轉(zhuǎn)移jno ; of=0,則轉(zhuǎn)移根據(jù)組合條件設(shè)置的條件轉(zhuǎn)移指令這類指令主要用來判斷兩個數(shù)的大小。判斷無符號數(shù)的大小ja 高于則轉(zhuǎn)移條件為 : cf=0zf=0 ,即 ab jna/jbe 低于或等于則轉(zhuǎn)移條件為 : cf=1 zf=1,即 ab jb ab 則轉(zhuǎn)移jnb ab 則轉(zhuǎn)移判斷有符號數(shù)的大小jg ;大于則轉(zhuǎn)移 (a b)條件為 : (sf of=0)zf=0 jge;大于或等于則轉(zhuǎn)移(a b) 條件為 : (sf of=0)zf=1jle;小于或

41、等于則轉(zhuǎn)移(a b) 條件為 : (sfof=1) zf=1 jl;小于則轉(zhuǎn)移(a b條件為 : (sf of=1)zf=0 2、循環(huán)控制指令用在循環(huán)程序中以確定是否要繼續(xù)循環(huán)。循環(huán)次數(shù)通常置于cx 中。轉(zhuǎn)移的目標(biāo)應(yīng)在距離本指令-128+127 的范圍之內(nèi)。循環(huán)控制指令不影響標(biāo)志位。(1)loop格式: loop label操作: (cx)-1 cx ;若(cx) 0,則轉(zhuǎn)至 label 處執(zhí)行 ;精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 16 頁,共 20 頁 - - - - - - - - -否則退出循環(huán) ,執(zhí)行 loop 后面的指令。lo

42、op 指令與下面的指令段等價:dec cx jnz label 3、過程調(diào)用指令(1)調(diào)用指令call 一般格式: call sub;sub 為子程序的入口4、中斷指令(1)int n 執(zhí)行類型 n 的中斷服務(wù)程序,n=0 255五、處理器控制指令1、標(biāo)志位操作(1)cf 設(shè)置指令clc0cfstc1cfcmccf 變反(2)df 設(shè)置指令cld0df (串操作的指針移動方向從低到高)std1df (串操作的指針移動方向從高到低) (3)if 設(shè)置指令cli0if (禁止 intr 中斷 )sti1 if (開放 intr 中斷 ) 2、 hlt( halt)執(zhí)行 hlt 指令后, cpu 進

43、入暫停狀態(tài)。第四章8086匯編語言程序設(shè)計第一節(jié)偽指令(重點)cpu 指令與偽指令之間的區(qū)別:(1)cpu 指令是給cpu 的命令,在運行時由cpu 執(zhí)行,每條指令對應(yīng)cpu 的一種特定的操作。而偽指令是給匯編程序的命令,在匯編過程中由匯編程序進行處理。(2)匯編以后, 每條 cpu 指令產(chǎn)生一一對應(yīng)的目標(biāo)代碼;而偽指令則不產(chǎn)生與之相應(yīng)的目標(biāo)代碼。1、數(shù)據(jù)定義偽指令(1)數(shù)據(jù)定義偽指令的一般格式為:變量名 偽指令操作數(shù) ,操作數(shù) db 用來定義字節(jié)(byte )dw 用來定義字(word )dd 用來定義雙字(dword )(2)操作數(shù)的類型可以是:常數(shù)或常數(shù)表達式精品學(xué)習(xí)資料 可選擇p d f - - - - - - - - - - - - - - 第 17 頁,共 20 頁 - - - - - - - - -例如:data_byte db 10,5,10hdata_word dw 100h,100,-4 data_dw dd 2*30,0fffbh 可以為字符串(定義字符串最好使用db )例如: ch

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論