微機原理與接口技術知識點總結重點習題_第1頁
微機原理與接口技術知識點總結重點習題_第2頁
微機原理與接口技術知識點總結重點習題_第3頁
微機原理與接口技術知識點總結重點習題_第4頁
微機原理與接口技術知識點總結重點習題_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理與接口技術復習參考資料教師:萬顯榮復習資料說明:1、標有紅色星號“%”的內(nèi)容為重點內(nèi)容3、本資料末尾附有“微機原理與接口技術綜合練習題與答案錯誤修正”和“微機原理與接口技術綜合練習題與答案中不作要求的部分”,請注意查看。第一章 概 述一、計算機中的數(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ù)制之間的轉換(1)非十進制數(shù)到十進制數(shù)的轉換 按相應進

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

3、或運算的結果就是1二、計算機中的碼制(重點%)1、對于符號數(shù),機器數(shù)常用的表示方法有原碼、反碼和補碼三種。數(shù)x的原碼記作x原,反碼記作x反,補碼記作x補。1、注意:對正數(shù),三種表示法均相同。它們的差別在于對負數(shù)的表示。(1)原碼定義:符號位:0表示正,1表示負;數(shù)值位:真值的絕對值。注意:數(shù)0的原碼不唯一 (2)反碼定義:若x0 ,則 x反=x原若x0, 則x補= x反= x原若x0, 則x補= x反+1注意:機器字長為8時,數(shù)0的補碼唯一,同為000000002、8位二進制的表示范圍:原碼:-127+127反碼:-127+127補碼:-128+1273、特殊數(shù)10000000l該數(shù)在原碼中定

4、義為: -0l在反碼中定義為: -127l在補碼中定義為: -128l對無符號數(shù):(10000000) = 128三、信息的編碼1、 十進制數(shù)的二進制數(shù)編碼用4位二進制數(shù)表示一位十進制數(shù)。有兩種表示法:壓縮bcd碼和非壓縮bcd碼。(1)壓縮bcd碼的每一位用4位二進制表示,00001001表示09,一個字節(jié)表示兩位十進制數(shù)。(2)非壓縮bcd碼用一個字節(jié)表示一位十進制數(shù),高4位總是0000,低4位的00001001表示092、 字符的編碼計算機采用7位二進制代碼對字符進行編碼(1)數(shù)字09的編碼是01100000111001,它們的高3位均是011,后4位正好與其對 應的二進制代碼(bcd碼

5、)相符。(2)英文字母az的ascii碼從1000001(41h)開始順序遞增,字母az的ascii碼從1100001(61h)開始順序遞增,這樣的排列對信息檢索十分有利。第二章 微機組成原理第一節(jié)、微機的結構1、計算機的經(jīng)典結構馮.諾依曼結構(1)計算機由運算器、控制器、輸入設備和輸出設備五大部分組成(運算器和控制器又稱為cpu)(2)數(shù)據(jù)和程序以二進制代碼形式不加區(qū)分地存放在存儲器總,存放位置由地址指定,數(shù)制為二進制。(3)控制器是根據(jù)存放在存儲器中的指令序列來操作的,并由一個程序計數(shù)器控制指令的執(zhí)行。3、 系統(tǒng)總線的分類(1)數(shù)據(jù)總線(data bus),它決定了處理器的字長。(2)地址

6、總線(address bus),它決定系統(tǒng)所能直接訪問的存儲器空間的容量。(3)控制總線(control bus)第二節(jié)、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、寄存器結構(重點%)8086微處理器包含有13個16位的寄存器和9位標志位。4個通用寄存器(ax,bx

7、,cx,dx)4個段寄存器(cs,ds,ss,es)4個指針和變址寄存器(sp,bp,si,di)指令指針(ip)1)、通用寄存器(1)8086含4個16位數(shù)據(jù)寄存器,它們又可分為8個8位寄存器,即:lax ah,allbxbh,bllcxch,clldxdh,dl常用來存放參與運算的操作數(shù)或運算結果(2)數(shù)據(jù)寄存器特有的習慣用法lax:累加器。多用于存放中間運算結果。所有i/o指令必須都通過ax與接口傳送信息;lbx:基址寄存器。在間接尋址中用于存放基地址;lcx:計數(shù)寄存器。用于在循環(huán)或串操作指令中存放循環(huán)次數(shù)或重復次數(shù);ldx:數(shù)據(jù)寄存器。在32位乘除法運算時,存放高16位數(shù);在間接尋址

8、的i/o指令中存放i/o端口地址。2)、指針和變址寄存器lsp:堆棧指針寄存器,其內(nèi)容為棧頂?shù)钠频刂?;lbp:基址指針寄存器,常用于在訪問內(nèi)存時存放內(nèi)存單元的偏移地址。lsi:源變址寄存器ldi:目標變址寄存器變址寄存器常用于指令的間接尋址或變址尋址。3)、段寄存器cs:代碼段寄存器,代碼段用于存放指令代碼ds:數(shù)據(jù)段寄存器 es:附加段寄存器,數(shù)據(jù)段和附加段用來存放操作數(shù)ss:堆棧段寄存器,堆棧段用于存放返回地址,保存寄存器內(nèi)容,傳遞參數(shù)4)、指令指針(ip)16位指令指針寄存器,其內(nèi)容為下一條要執(zhí)行的指令的偏移地址。5)、標志寄存器(1)狀態(tài)標志:l進位標志位(cf):運算結果的最高位有

9、進位或有借位,則cf=1l輔助進位標志位(af):運算結果的低四位有進位或借位,則af=1l溢出標志位(of):運算結果有溢出,則of=1l零標志位(zf):反映指令的執(zhí)行是否產(chǎn)生一個為零的結果l符號標志位(sf):指出該指令的執(zhí)行是否產(chǎn)生一個負的結果l奇偶標志位(pf):表示指令運算結果的低8位“1”個數(shù)是否為偶數(shù)(2)控制標志位l中斷允許標志位(if):表示cpu是否能夠響應外部可屏蔽中斷請求l跟蹤標志(tf):cpu單步執(zhí)行5、8086的引腳及其功能(重點掌握以下引腳)lad15ad0:雙向三態(tài)的地址總線,輸入/輸出信號lintr:可屏蔽中斷請求輸入信號,高電平有效??赏ㄟ^設置if的值來

10、控制。lnmi:非屏蔽中斷輸入信號。不能用軟件進行屏蔽。lreset:復位輸入信號,高電平有效。復位的初始狀態(tài)見p21lmn/mx:最小最大模式輸入控制信號。第三章 8086指令系統(tǒng)說明:8086指令系統(tǒng)這章為重點章節(jié),對下面列出的指令都要求掌握。第一節(jié) 8086尋址方式一、數(shù)據(jù)尋址方式(重點%)1、立即尋址 操作數(shù)(為一常數(shù))直接由指令給出 (此操作數(shù)稱為立即數(shù))立即尋址只能用于源操作數(shù)例:mov ax, 1c8fhmov byte ptr2a00h, 8fh錯誤例: mov 2a00h,ax ; 錯誤!指令操作例:mov ax,3102h; ax3102h執(zhí)行后,(ah) = 31h,(a

11、l) = 02h2、寄存器尋址(1)操作數(shù)放在某個寄存器中(2)源操作數(shù)與目的操作數(shù)字長要相同(3)寄存器尋址與段地址無關例: mov ax, bx mov 3f00h, ax mov cl, al 錯誤例: mov ax,bl ; 字長不同 mov es:ax,dx ; 寄存器與段無關3、直接尋址(1)指令中直接給出操作數(shù)的16位偏移地址 偏移地址也稱為有效地址(ea, effective address)(2)默認的段寄存器為ds,但也可以顯式地指定其他段寄存器稱為段超越前綴(3)偏移地址也可用符號地址來表示,如addr、var例: mov ax ,2a00h mov dx ,es:2a0

12、0hmov si,table_ptr4、間接尋址l 操作數(shù)的偏移地址(有效地址ea)放在寄存器中l(wèi) 只有si、di、bx和bp可作間址寄存器l 例: mov ax,bx mov cl,cs:di 錯誤例 : mov ax, dx mov cl, ax5、寄存器相對尋址lea=間址寄存器的內(nèi)容加上一個8/16位的位移量l 例: mov ax, bx+8 mov cx, tablesi mov ax, bp; 默認段寄存器為ssl 指令操作例:mov ax,databx 若(ds)=6000h, (bx)=1000h, data=2a00h, (63a00h)=66h, (63a01h)=55h

13、則物理地址 = 60000h + 1000h + 2a00h = 63a00h指令執(zhí)行后:(ax)=5566h6、基址變址尋址l 若操作數(shù)的偏移地址:由基址寄存器(bx或bp)給出 基址尋址方式由變址寄存器(si或di)給出 變址尋址方式由一個基址寄存器的內(nèi)容和一個變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱為基址-變址尋址。ea=(bx)+(si)或(di);ea=(bp)+(si)或(di)同一組內(nèi)的寄存器不能同時出現(xiàn)。注意:除了有段跨越前綴的情況外,當基址寄存器為bx時,操作數(shù)應該存放在數(shù)據(jù)段ds中,當基址寄存器為bp時,操作數(shù)應放在堆棧段ss中。例: mov ax, bx si mo

14、v ax, bx+si mov ax, ds: bp di錯誤例: mov ax, bx bp mov ax, di si指令操作例:mov ax,bxsi假定:(ds)=8000h, (bx)=2000h, si=1000h則物理地址 = 80000h + 2000h + 1000h = 83000h指令執(zhí)行后: (al)=83000h(ah)=83001h7、相對基址變址尋址l 在基址-變址尋址的基礎上再加上一個相對位移量ea=(bx)+(si)或(di)+8位或16位位移量;ea=(bp)+(si)或(di)+8位或16位位移量指令操作例:mov ax,datadibx若(ds)=800

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

16、(重點%)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 ;段寄存器送存儲單元/寄存器mov指令的使用規(guī)則ip不能作目的寄存器不允許memme

17、m不允許segregsegreg立即數(shù)不允許作為目的操作數(shù)不允許segreg立即數(shù)源操作數(shù)與目的操作數(shù)類型要一致當源操作數(shù)為單字節(jié)的立即數(shù),而目的操作數(shù)為間址、變址、基址+變址的內(nèi)存數(shù)時,必須用ptr說明數(shù)據(jù)類型。如:mov bx,12h 是錯誤的。(2)、堆棧指令什么是堆棧?按“后進先出(lifo)”方式工作的存儲區(qū)域。堆棧以字為單位進行壓入彈出操作。規(guī)定由ss指示堆棧段的段基址,堆棧指針sp始終指向堆棧的頂部,sp的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。 壓棧指令pushpush src ; src為16位操作數(shù)例:pushax;將ax內(nèi)容壓棧執(zhí)行操作:(sp)-1高字節(jié)ah(

18、sp)-2低字節(jié)al(sp)(sp)- 2注意進棧方向是高地址向低地址發(fā)展。 彈出指令poppopdest 例:pop bx;將棧頂內(nèi)容彈至bx執(zhí)行操作:(bl)(sp)(bh)(sp)+1(sp)(sp)+2堆棧指令在使用時需注意的幾點: 堆棧操作總是按字進行 不能從棧頂彈出一個字給cs 堆棧指針為ss:sp,sp永遠指向棧頂sp自動進行增減量(-2,+2)(3)、交換指令xchg格式:xchg reg,mem/reg功能:交換兩操作數(shù)的內(nèi)容。要求:兩操作數(shù)中必須有一個在寄存器中;操作數(shù)不能為段寄存器和立即數(shù);源和目地操作數(shù)類型要一致。舉例: xchgax,bxxchg2000,cl(4)查

19、表指令xlat執(zhí)行的操作:al(bx)+(al)又叫查表轉換指令,它可根據(jù)表項序號查出表中對應代碼的內(nèi)容。執(zhí)行時先將表的首地址(偏移地址)送到bx中,表項序號存于al中。2、輸入輸出指令只限于用累加器al或ax來傳送信息。功能: (累加器)i/o端口(1) 輸入指令in格式:in acc,port ;port端口號0255hin acc,dx ;dx表示的端口范圍達64k例:in al,80h ;(al)(80h端口)in al,dx ;(al)(dx)(2) 輸出指令out格式:out port,accout dx,acc例:out 68h,ax ;(69h,68h)(ax)out dx,a

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

21、址取到 bx中;后者表示將buffer存儲單元中的內(nèi)容取到 bx中。下面兩條指令等效:lea bx,buffermov bx, offset buffer其中offset buffer表示存儲器單元buffer的偏移地址。二者都可用于取存儲器單元的偏移地址,但lea指令可以取動態(tài)的地址,offset只能取靜態(tài)的地址。二、算術運算指令1、 加法指令(1) 不帶進位的加法指令add格式: add acc,dataadd mem/reg,dataadd mem/reg1,mem/reg2實例:add al,30hadd si,bx+20hadd cx,siadd di,200hadd指令對6個狀態(tài)標

22、志均產(chǎn)生影響。例:已知(bx)=d75fh指令 add bx,8046h 執(zhí)行后,狀態(tài)標志各是多少?d75fh = 1110 0111 0101 11118046h = 1000 0000 0100 01101 1 11 11 0110 0111 1010 0101結果:c=1, z=0, p=0, a=1, o=1, s=0判斷溢出與進位(重點%)從硬件的角度:默認參與運算的操作數(shù)都是有符號數(shù),當兩數(shù)的符號位相同,而和的結果相異時有溢出,則of=1,否則of=0(2) 帶進位的加法adcadc指令在形式上和功能上與add類似,只是相加時還要包括進位標志cf的內(nèi)容,例如:adc al,68h

23、; 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 alinc siinc byte ptrbx+4注:本指令不影響cf標志。(4)非壓縮bcd碼加法調整指令aaaaaa指令的操作:如果al的低4位9或af=1,則: al(al)+6,(ah)(ah)+1,af1 al高4位清零 cfaf否則al高4位清零(5)壓縮bcd碼加法調整指令daal兩個壓縮bcd碼相加結果在al中,通過daa調整

24、得到一個正確的壓縮bcd碼.l指令操作(調整方法):若al的低4位9或af=1則(al)(al)+6,af1若al的高4位9或cf=1則(al)(al)+60h,cf1l除of外,daa指令影響所有其它標志。ldaa指令應緊跟在add或adc指令之后。2、 減法指令(1)不考慮借位的減法指令sub格式: sub dest, src操作: dest(dest)-(src)注:1.源和目的操作數(shù)不能同時為存儲器操作數(shù)2.立即數(shù)不能作為目的操作數(shù)指令例子:sub al,60hsub bx+20h,dxsub ax,cx(2)考慮借位的減法指令sbbsbb指令主要用于多字節(jié)的減法。格式: sbb de

25、st, src操作: dest(dest)-(src)-(cf)指令例子:sbb ax,cxsbb word ptrsi,2080hsbb si,dx(3)減1指令dec作用類似于c語言中的”操作符。格式:dec opr操作:opr(opr)-1指令例子:dec cldec byte ptrdi+2dec si (4)求補指令neg格式: neg opr操作: opr 0-(opr)對一個操作數(shù)取補碼相當于用0減去此操作數(shù),故利用neg指令可得到負數(shù)的絕對值。例:若(al)=0fch,則執(zhí)行 neg al后,(al)=04h,cf=1(5)比較指令cmp格式: cmp dest, src操作:

26、 (dest)-(src)cmp也是執(zhí)行兩個操作數(shù)相減,但結果不送目標操作數(shù),其結果只反映在標志位上。指令例子:cmp al,0ahcmp cx,sicmp di,bx+03(6)非壓縮bcd碼減法調整指令aas對al中由兩個非壓縮的bcd碼相減的結果進行調整。調整操作為:若al的低4位9或af=1,則: al(al)-6,ah(ah)-1,af1 al的高4位清零 cfaf否則:al的高4位清零(7)壓縮bcd碼減法調整指令das對al中由兩個壓縮bcd碼相減的結果進行調整。調整操作為:若al的低4位9或af=1,則:al(al)-6, 且af1若al的高4位9或cf=1,則:al(al)-

27、60h,且cf1das對of無定義,但影響其余標志位。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)指令例子: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

28、word ptrsi;(dx,ax)(ax)(si+1si)注意:mul/imul指令中 al(ax)為隱含的乘數(shù)寄存器; ax(dx,ax)為隱含的乘積寄存器; src不能為立即數(shù); 除cf和of外,對其它標志位無定義。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)

29、 (dx, ax) / (src) 的余數(shù)指令例子:div cldiv word ptrbx(2)有符號數(shù)除法指令idiv格式: idiv src操作與div類似。商及余數(shù)均為有符號數(shù),且余數(shù)符號總是與被除數(shù)符號相同。注意: 對于div/idiv指令ax(dx,ax)為隱含的被除數(shù)寄存器。al(ax)為隱含的商寄存器。ah(dx)為隱含的余數(shù)寄存器。src不能為立即數(shù)。對所有條件標志位均無定關于除法操作中的字長擴展問題除法運算要求被除數(shù)字長是除數(shù)字長的兩倍,若不滿足則需對被除數(shù)進行擴展,否則產(chǎn)生錯誤。對于無符號數(shù)除法擴展,只需將ah或dx清零即可。對有符號數(shù)而言,則是符號位的擴展??墒褂们懊娼?/p>

30、紹過的符號擴展指令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碼變成相應十進制數(shù)的ascii碼。or al, 30h(3)邏輯非not對操作數(shù)進行按位邏輯”非”操作。格式:not mem/reg例:not cxnot byte ptrdi(4)邏輯異或x

31、or對兩個操作數(shù)按位進行”異或”操作。格式:xor dest, src用途:對reg清零(自身異或)把reg/mem的某幾位變反(與1異或)例1:把ax寄存器清零。mov ax,0xor ax,axand ax,0sub ax,ax(5)測試指令test操作與and指令類似,但不將”與”的結果送回,只影響標志位。test指令常用于位測試,與條件轉移指令一起用。例:測試al的內(nèi)容是否為負數(shù)。 test al,80h ;檢查al中d7=1? jnz minus ;是1(負數(shù)),轉minus ;否則為正數(shù)2、移位指令(1)非循環(huán)移位指令(重點%) 算術左移指令 sal(shift arithmeti

32、c left) 算術右移指令 sar(shift arithmetic right) 邏輯左移指令 shl(shift left) 邏輯右移指令 shr(shift right)這4條指令的格式相同,以sal為例:cl ;移位位數(shù)大于1時sal mem/reg1 ;移位位數(shù)等于1時算術移位把操作數(shù)看做有符號數(shù); 邏輯移位把操作數(shù)看做無符號數(shù)。移位位數(shù)放在cl寄存器中,如果只移1位,也 可以直接寫在指令中。例如: mov cl,4 shr al,cl ;al中的內(nèi)容右移4位影響c,p,s,z,o標志。結果未溢出時: 左移1位操作數(shù)*2右移1位操作數(shù)/2例:把al中的數(shù)x乘10因為10=8+2=2

33、3+21,所以可用移位實現(xiàn)乘10操作。程序如下:mov cl,3sal al,1 ; 2xmov ah,al sal al,1 ; 4xsal al,1 ; 8xadd al,ah ; 8x+2x = 10x四、控制轉移指令1、 轉移指令(1)無條件轉移指令jmp 格式:jmp label本指令無條件轉移到指定的目標地址,以執(zhí)行從該地址開始的程序段。(2)條件轉移指令(補充內(nèi)容)(重點%) 根據(jù)單個標志位設置的條件轉移指令jb/jc ;低于,或cf=1,則轉移jnb/jnc/jae ;高于或等于,或cf=0,則轉移jp/jpe ;奇偶標志pf=1(偶),則轉移jnp/jpo ;奇偶標志pf=0

34、(奇),則轉移jz/je ;結果為零(zf=1),則轉移jnz/jne ;結果不為零(zf=0),則轉移js ;sf=1,則轉移jns ;sf=0,則轉移jo ;of=1,則轉移jno ;of=0,則轉移根據(jù)組合條件設置的條件轉移指令這類指令主要用來判斷兩個數(shù)的大小。判斷無符號數(shù)的大小lja 高于則轉移 條件為: cf=0zf=0,即abljna/jbe 低于或等于則轉移條件為: cf=1zf=1,即abljb ab則轉移ljnb ab則轉移判斷有符號數(shù)的大小ljg ;大于則轉移(ab) 條件為: (sfof=0)zf=0ljge;大于或等于則轉移(ab)條件為: (sfof=0)zf=1lj

35、le;小于或等于則轉移(ab) 條件為: (sfof=1)zf=1ljl;小于則轉移(ab條件為: (sfof=1)zf=02、循環(huán)控制指令l用在循環(huán)程序中以確定是否要繼續(xù)循環(huán)。l循環(huán)次數(shù)通常置于cx中。l轉移的目標應在距離本指令-128+127的范圍之內(nèi)。l循環(huán)控制指令不影響標志位。(1)loop格式:loop label操作:(cx)-1cx; 若(cx)0,則轉至label處執(zhí)行; 否則退出循環(huán),執(zhí)行l(wèi)oop后面的指令。 loop指令與下面的指令段等價: dec cx jnz label3、過程調用指令(1)調用指令call一般格式:call sub ;sub為子程序的入口4、中斷指令(

36、1)int n 執(zhí)行類型n的中斷服務程序,n=0255五、處理器控制指令1、標志位操作(1)cf設置指令 clc 0cf stc 1cf cmc cf變反(2)df設置指令 cld 0df (串操作的指針移動方向從低到高)std 1df (串操作的指針移動方向從高到低)(3)if設置指令 cli 0if (禁止intr中斷) sti 1if (開放intr中斷) 2、 hlt(halt)執(zhí)行hlt指令后,cpu進入暫停狀態(tài)。第四章 8086匯編語言程序設計第一節(jié) 偽指令(重點%)cpu指令與偽指令之間的區(qū)別:(1)cpu指令是給cpu的命令,在運行時由cpu執(zhí)行,每條指令對應cpu的一種特定的

37、操作。而偽指令是給匯編程序的命令,在匯編過程中由匯編程序進行處理。(2)匯編以后,每條cpu指令產(chǎn)生一一對應的目標代碼;而偽指令則不產(chǎn)生與之相應的目標代碼。1、數(shù)據(jù)定義偽指令(1)數(shù)據(jù)定義偽指令的一般格式為:l變量名 偽指令 操作數(shù),操作數(shù) db 用來定義字節(jié)(byte)dw 用來定義字(word)dd 用來定義雙字(dword)(2)操作數(shù)的類型可以是:常數(shù)或常數(shù)表達式l例如: data_byte db 10,5,10h data_word dw 100h,100,-4 data_dw dd 2*30,0fffbh可以為字符串(定義字符串最好使用db)l例如:char1 db ab 可以為變

38、量可以為?號操作符例如:x db 5,?,6?號只是為了給變量保留相應的存儲單元,而不賦予變量某個確定的初值。重復次數(shù):n dup(初值,初值)l例如:zero db 2 dup(3,5)xyz db 2 dup(0,2 dup(1,3),5)在偽操作的操作數(shù)字段中若使用$,則表示的是地址計數(shù)器的當前值。2、補充內(nèi)容:(1)類型 ptr 地址表達式例如:mov byte ptr bx,12hinc byte ptr bx注意:單操作數(shù)指令,當操作數(shù)為基址、變址、基+變的時候必須定義3、符號定義偽指令(1)equ格式:名字 equ 表達式equ偽指令將表達式的值賦予一個名字,以后可用這個名字來代

39、替上述表達式。例:constant equ 100new_port equ port_val+1(2) =(等號)與equ類似,但允許重新定義例:emp=7;值為7emp=emp+1;值為8(3)labellabel偽指令的用途是定義標號或變量的類型格式:名字 label 類型變量的類型可以是byte,word,dword。標號的類型可以是near或far4、段定義偽指令與段有關的偽指令有: segment、ends、assume、org(1)段定義偽指令的格式如下:段名 segment 定位類型 組合類型 類別 段名 endssegment和ends 這兩個偽指令總是成對出現(xiàn),二者前面的段名

40、一致。二者之間的刪節(jié)部分,對數(shù)據(jù)段、附加段及堆棧段,一般是符號、變量定義等偽指令。對于代碼段則是指令及偽指令。此外,還必須明確段和段寄存器的關系,這可由assume語句來實現(xiàn)。(2)assume格式:assume 段寄存器名:段名,段寄存器名:段名,assume偽指令告訴匯編程序,將某一個段寄存器設置為某一個邏輯段址,即明確指出源程序中邏輯段與物理段之間的關系。(3)org偽指令org規(guī)定了段內(nèi)的起始地址或偏移地址,其格式為: org 表達式的值即為段內(nèi)的起始地址或偏移地址,從此地址起連續(xù)存放程序或數(shù)據(jù)。5、匯編程序的一般結構(重點%)(記?。ヾata segmentdata endscode

41、 segmentassume cs:code,ds:databgn: mov ax ,data mov ds,ax . mov ah,4ch int 21hcode endsend bgn第三節(jié) 程序設計1、 順序程序的設計(略)2、 分支程序的設計典型例題:1 x0y = 0 x=0-1 x0l程序為:mov al ,xcmp al,0jge bigmov y,-1jmp exitbig:je equlmov y,1jmp exit本章知識要點數(shù)制二進制數(shù)(b)八進制數(shù)(q)十六進制數(shù)(h)十進制數(shù)(d)b)碼制帶符號數(shù)編碼奇偶校驗碼字符編碼原碼反碼補碼奇校驗碼偶校驗碼ascii碼bcd碼數(shù)

42、字編碼規(guī)則字母編碼規(guī)則壓縮bcd碼非壓縮bcd碼計算機系統(tǒng)組成計算機系統(tǒng)組成硬件主機外部設備中央處理器(cpu)半導體存儲器控制器運算器romram輸入設備輸出設備軟件系統(tǒng)軟件應用軟件操作系統(tǒng):如dos、windows、unix、linux等其他系統(tǒng)軟件用戶應用軟件其他應用軟件各種計算機語言處理軟件:如匯編、解釋、編譯等軟件equl:mov y,0exit:.3、 循環(huán)程序見講義。l用計數(shù)控制循環(huán)第一章 計算機基礎知識本章的主要內(nèi)容為不同進位計數(shù)制計數(shù)方法、不同進位制數(shù)之間相互轉換的方法、數(shù)和字符在計算機中的表示方法、簡單的算術運算以及計算機系統(tǒng)的組成。下邊將本章的知識點作了歸類,圖1為本章的

43、知識要點圖,圖1.2為計算機系統(tǒng)組成的示意圖。第二章 8086微處理器本章要從應用角度上理解8086cpu的內(nèi)部組成、編程結構、引腳信號功能、最小工作模式的系統(tǒng)配置、8086的存儲器組織、基本時序等概念。下面這一章知識的結構圖。本章知識要點intel 8086微處理器時鐘發(fā)生器(8284)地址鎖存器(74ls373、8282)存儲器組織存儲器邏輯分段存儲器分體三總線(db、ab、cb)時序時鐘周期(t狀態(tài))基本讀總線周期系統(tǒng)配置(最小模式)8086cpu數(shù)據(jù)收發(fā)器(8286、74ls245)邏輯地址物理地址奇地址存儲體(bhe)偶地址存儲體(a0)總線周期指令周期基本寫總線周期復位操作時序中斷

44、響應時序寄存器的復位值執(zhí)行單元eu(ax、bx、cx、dx、sp、bp、si、di、標志寄存器)內(nèi)部組成總線接口單元biu(cs、ds、ss、es、ip)地址/數(shù)據(jù)控制負責地址bhe/s7、ale引腳功能(最小模式)地址/狀態(tài)數(shù)據(jù)允許和收發(fā) den、dt/r負責讀寫rd、wr、m/io負責中斷intr、nmi、inta負責總線hold、hlda協(xié)調clk、ready、test模式選擇mn/mx=5v第三章 8086的指令系統(tǒng)本章重點是8086cpu指令的尋址方式,每條指令的格式、功能及標志的影響;同時還涉及到存儲器單元的物理地址計算、標志位填寫和堆棧操作。下圖為本章知識結構圖。立即數(shù)尋址、寄存

45、器尋址、存儲器尋址.操作數(shù)尋址方式本章知識要點邏輯地址、物理地址指令功能指令格式對標志位影響填寫標志位堆棧操作(入棧、出棧)堆棧指針(sp)堆棧結構(后進先出)直接尋址立即數(shù)尋址寄存器間接尋址寄存器尋址寄存器相對尋址存儲器尋址尋址方式基址變址尋址串操作尋址相對基址變址尋址i/o端口尋址隱含尋址指令功能數(shù)據(jù)傳送類(通用數(shù)據(jù)傳送指令、堆棧指令、交換指令、i/o傳送指令、換碼指令、有效地址傳送指令、標志寄存器傳送指令)算術運算類指令(加法指令,減法指令, 乘法指令,除法指令,bcd碼調整指令)邏輯類指令(邏輯運算指令、邏輯移位操作指令)串操作類指令(串傳送、比較、掃描、串存和取指令)控制轉移類指令(

46、條件和無條件轉移、子程序調用和返回指令、子程序調用和返回、中斷)、)處理器控制類指令其他應用軟件用戶應用軟件應用軟件第四章 匯編語言程序設計本章主要內(nèi)容是匯編語言類別、偽指令語句格式和作用、基本程序結構、調用程序和被調用程序之間數(shù)據(jù)傳遞途徑以及匯編源程序上機調試過程。本章重點是閱讀程序和編寫程序。下邊是本章的知識結構圖。匯編語言語句類別程序基本結構順序結構本章知識要點實指令語句分支結構循環(huán)結構過程(子程序)偽指令語句宏指令語句參數(shù)傳遞途徑寄存器約定存儲器約定堆棧傳遞程序開發(fā)步驟:編 輯匯 編鏈 接調試運行符號定義偽指令 equ、=偽指令語句數(shù)據(jù)定義偽指令 db、dw、dd段定義偽指令 segmentends過程定義偽指令 proc、endp段指派偽指令 assume程序定位偽指令 org匯編結束偽指令 end其他偽指令.第五章 半導體存儲器半導體存儲器是用半導體器件作為存儲介質的存儲器。本章討論半導體存儲器芯片的類型、存儲原理、引腳功能、如何與cpu(或系統(tǒng)總線)連接等問題。本章知識結構圖如下。只存放二進制數(shù)存放程序和數(shù)據(jù)sramramdram存儲器作用本章知識要點掩模rom半導體存儲器芯片分類promrom線譯碼部分譯碼與系統(tǒng)連接地址分配、片選邏輯、控制選擇全

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論