




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《微機系統與接口》習題課
——第1-3章要點小結一、數制與編碼補碼是計算機所采用的數值存儲格式,以后應用時我們約定帶符號數均默認為補碼。補碼使得加減法運算簡單了(帶符號數的加減法一致性——加法時直接進行兩數相加,減法時用減數變補碼與被減數相加)。可以說補碼是使計算機工作“方便了”,使人理解起來“麻煩了”。帶符號數:原碼和反碼是人為定義,補碼是機器特性!例題習題一.2當下列各二進制分別代表原碼、反碼和補碼時,其等效的十進制數值為多少?11111111代表原碼時,-127;代表反碼時,原碼是10000000,0;代表補碼時,原碼是10000001,-1(-128~+127)例題習題一.3已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,試計算下列各式。(字長8位)解:由已知可得x2=-20,y2=-33,則得x2+y2/8=-20-4,[x2+y2/8]補=[-24]補=E8H反映在指令系統中MUL(無符號乘法指令)以及IMUL(帶符號乘法指令)比較指令:適用于無符號數的JA、JB等條件轉移指令與適用于帶符號數的JG、JL等條件轉移指令。例題設AL,BL都是帶符號數,要求當AL≦BL時轉至NEXT處,在CMPAL,BL指令后應選用正確的條件轉移指令是()A.JBEB.JNGC.JNAD.JNLE答案:B有符號數的大小判斷二、對標志位的認識與理解容易出錯的是(補碼的)算數運算后對CF﹑OF的判斷;對CF的判別:只要在單步操作后看最高位是否有借位與進位即可,不用考慮最高位是否被指定為符號位。CF=1表示無符號數運算溢出OF=1表示有符號數運算溢出對OF的判別:課本中對于OF的判別依據為:當算術運算結果超出了帶符號數的范圍時,即溢出。“正溢出”“負溢出”01011010B(+90)+01101011B(+107)
11000101 B(-59)二進制補碼真值10010010B(-110)+10100100B(-92)
00110110B(+54)二進制補碼真值正數相加的結果為負負數相加的結果為正
簡單判別方法:雙高位判別法首先引進兩個附加的判別符號,即CS:表征最高位(符號位)的進位情況。如有進位,則CS=1;否則,CS=0。CP:表征次高位(數值部分最高位)的進位情況。如有進位,則CP=1;否則,CP=0。當CS⊕CP=1
,必定發生溢出。(異或)其中CSCP為“01”,稱其為“正溢出”;當CSCP為“10”,稱其為“負溢出”。01010101B(+85)補+00111100B(+60)補
10010001 B91H真-17顯然CS=0,CP=1,則為“正溢出”10101011B(-85)補+11000100B(-60)補
01101111B6FH真111顯然CS=1,CP=0,則為“負溢出”提示:一個正數與負數相加,結果肯定不溢出例題習題1.4三、匯編指令匯編語言有三種基本語句:指令語句、偽指令語句、宏指令語句。指令語句=操作指令+操作數(可隱含)匯編器如何找到操作數——尋址方式:(1)在數據存儲器中,指令中如何提供操作數或操作數地址的方式。(2)在程序存儲器中,程序轉移時需提供轉移地址,這也稱為尋址。習題二.1.(7)PUSH[1234H],源操作數尋址方式:直接尋址;無目標操作數例題下面指令中,源操作數的尋址方式為直接尋址的指令是()A.ADDAX,WORDPTR[BX+SI]B.ADDAX,DATA1C.INCCXD.MOVBX,8FFFH答案:B解釋:A為基址加變址;B中DATA1為一變量,作為存儲器操作數;C為寄存器尋址;D為立即數尋址。
例題要點:理解各段與寄存器的概念,正確使用尋址方式。例:(1)直接、間接、立即三種尋址方式的執行速度由快至慢依次為:(2)下列指令中操作數在代碼段中的是A.MOVAL,25H B.ADDAL,BHC.CMPAX,[BP] D.INCDS:[BP]立即、直接、間接A要點1:寄存器不能隨便使用基址與基址(或變址與變址)不能組合在一起尋址。
MOVBX,[BP+SI](正)
MOVAX,[BX][BP](錯)2)出現[AX]、[CX]、[DX]、[SP](都錯)
MOV[IP],AX(錯)MOVAX,IP
(錯)
存儲器間不能直接進行操作。(MOV[2000H],[BX];CMP[BX],[SI])段寄存器不能直接進行立即數賦值(MOVDS,0100H),段寄存器之間不能直接進行操作(MOVCS,DS),段寄存器不能進行加減法操作(ADDDS,AX),另外CS不能作為目標操作數。(PUSHCS(正),POPCS(錯))要點2:操作數類型要明確MOVAX,BLMOVAL,BX反匯編查看:警告:操作數類型不匹配警告就是非法!例題下面的指令中,不合法的是()A.MULBXB.MUL[BX]C.MOVAL,02HD.MOVAL,[BX]答案:B解釋:因為MUL指令可以進行字節或字操作,而B中并未向編譯器指明操作數的類型,使得操作不能確定,這時可以利用偽指令BYTEPTR或WORDPTR向編譯器傳遞操作數類型。例題2.3指出下列傳送類指令中,哪些是非法指令(1)MOVDS,0100H
(2)MOVBP,AL (3)MOVBX,AL(4)XCHGAH,AL (5)OUT21H,AL (6)OUT310H,AL(7)MOV[BP+DI],AX (8)MOV[BX+CX],2130H(9)ANDAX,BL (10)ADDAL,[BX+DX+10H](11)MOVCS:[2000H],AX(12)POPCS非法指令:(1),(2),(3),(6),(8),(9),(10)例題補充注意下列指令都是非法的(1) CMP CF,1 ;symbolnotdefined(2) MOV AX,CF(3) MOV DATA1[SI],DATA2[DI](4)MOV DATA1,DATA2(5) SBB [AX],[BX](6)CMP 39,AL要點3:串操作指令注意“先期的準備工作”:①對相應的尋址寄存器進行(DS:SI、ES:DI)設置,注意段超越的問題。②根據自己的程序決定對存儲區的操作方向,即對DF的設置。③若要進行重復操作時,一定要設置CX。④若要進行ZF的判別,注意判別條件的設置。
例題假設ES段中有一個字符‘12FG3LM5C’,其名為ARRAY,下面的程序段① CLD ② LEADI,ES:ARRAY③ MOVAL,’G’④ MOVCX,9⑤ REPNESCASB⑥ HLT執行后,CX的值是()。A.7B.6C.5D.4解釋:這是在字符串中尋找第一個出現的指定字符的操作,我們將關鍵的循環串操作的具體的執行步驟表述如下:⑴先做終止判斷:如果CX=0或ZF=1則退出,否則往下執行:(2)執行其后的串操作,比較AL與(ES:DI),改變ZF(3)DF=0表示按地址增方向,修正DI(4)CX-1送入CX(5)回到⑴REPNESCASB要點4:控制轉移指令JMP指令分類情況:按段內還是段間以及直接還是間接。可分為五類相當于間接修改寄器CS、IP的內容段內跳轉:當前IP寄存器加上偏移量段間跳轉:CS:IP=新地址要點4:控制轉移指令①段內直接短轉移:JMPSHORTlabel8位相對位移量,與下一條指令的地址差-128~127。②段內直接近轉移:JMPNEARPTRlabel16位相對位移量。范圍-32768~32767。若已知下一條指令到所跳轉地址的相對位移量–128~+127,則可用標號SHORT可以不定義SHORTNEXT:…JMPNEXT必須定義SHORTJMPSHORTNEXT
…NEXT:…③段內間接轉移:16位相對位移量JMPreg或JMPmemMOVBX,1000HJMPBXJMPWORDPTR[BX+20H]④段間直接轉移:32位相對位移量(CS:IP)JMPFARPTRlabel,⑤段間間接轉移:32位相對位移量(CS:IP),JMPmemMOVSI,0100HJMPDWORDPTR[SI]
不能是寄存器26課程中的例題DP1DDPRC1,PRC2CODESEGMENT ;設CS為8B00H
PRC1PROCFAR ;8B00:1000:PRC1ENDPPRC2PROCFAR ;8B00:2C20:PRC2ENDP
00,10,00,8B,20,2C,00,8B;DP1開始的內容=?00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)……8B00:1000HMYDATAENDS……;DP1的段基8A00H,DP1的偏移量0034H27課程中的例題JMPDWORDPTRDP1
;=JMPFAR[0034H]JMPFARPTRDP1
;=JMPDS:0034HJMPFARPTRDP1+4;=JMPDS:0038H目標地址=8B00H:1000H00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)……8B00:1000H……要點4:控制轉移指令所有條件轉移指令(JE/JZ/JC/JA/JB…)、循環控制指令(LOOP)的操作數都是一個短標號,即位移量在-128~127的范圍內。
注意:在編制大的循環程序時要注意跳轉范圍的限制問題,否則會出現以下的編譯問題。因此要求在編制程序時要做到短小精悍,簡潔易讀提示:條件轉移指令往往與邏輯指令,移位指令,CMP等指令相配合。習題3.2若WORD1及WORD2均為字變量,ADDITION為標號,請說明下列指令的錯誤之處:(1)JMPADDITION[DI] (2)JNZWORD2 (3)JMPFARADDITION(1)標號無類型(short/near)(2)Jcc后面只跟代碼標號,限短跳轉(-128~+127)(3)缺PTR例題已知指令JMPSHORTNEXT1在程序中的偏移地址為001EH(注,這是該指令第1字節所在的地址),指令的機器碼為0EB03H(其中0EBH為操作碼,03H為操作數),執行該指令后程序跳轉到的指令偏移地址是什么?答案:0023H JMPSHORTNEXT1 MOVBX,2NEXT1: MOVAX,1跳轉偏移量指得是JMP指令的下一條指令到轉移去的指令之間的偏移量如果該JMP指令的機器碼是0EBE7H⑴可以得知跳轉偏移量為0E7H⑵指令JMPSHORTNEXT1是占有2個字節的機器碼,那么下一條指令偏移地址為001EH+0002H=0020H。⑶JMP轉移去的偏移地址是JMP的下一條指令偏移地址加上跳轉偏移量:可以發現跳轉偏移量(0E7H)是一個負值,因此可以得知是跳到程序前端,(減法運算[補碼化],實際相當于0020H-0019H=0007H)
解釋:指令JMPSHORTNEXT1操作碼(0EBH)偏移地址:001EH操作數(0E7H)……+001FH0020H0007H過程調用指令在運用時強調實現模塊化的編程。調用指令(CALL)與返回指令(RET)實現程序模塊良好的銜接。分類情況:仍然按段內/段間以及直接/間接。例:已知當前一條近過程過程調用指令CALLnear_proc所在的偏移地址為1000H,當前SP=2000H,那么執行完該CALL指令后,堆棧段中(1FFEH)=?答案:03H指令:3個字節解釋:⑴首先從已知可知該指令是一段內直接調用過程,指令碼是占用3個字節的機器碼。⑵執行CALL指令后,系統會將斷點地址,即CALL指令的下一條指令的偏移地址(即1003H)壓入堆棧。⑶壓入堆棧的過程:堆棧指針減2(SP=SP-2),本題原SP=2000H,更新后為SP=1FFEH,而壓入的內容(1003H)根據高地址占用高字節,低地址占用低字節的原則,可知(1FFFH)=10H,(1FFEH)=03H。解釋:執行指令前執行指令后03H10HIP=1003HSP=1FFEH四、匯編語言指令系統要點1:理解操作數,注意區分變量/表達式常量寄存器存儲器操作數:具有段屬性、偏移量屬性和類屬性。標號:在代碼段中。變量:存放數據的存儲單元的名字,在數據段或堆棧段中。表達式:(由運
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術培訓學校課程研發工作總結范文
- 污水管網工程施工分階段計劃
- 快遞分揀中心夏季防暑降溫措施指南他
- 滿分之路:分離定律中特殊遺傳現象分析(含解析)
- 房地產開發施工風險管理措施
- 教師科研與師德師風心得體會
- 2025年小學語文線上教師成長計劃
- 九年級數學實踐活動教學計劃
- 四年級上冊數學教研組校園文化建設計劃
- 城市交通綜合體2025年工作總結及規劃計劃
- 酒店前臺服務禮儀與服務意識培訓
- 人工智能輔助專利審查的倫理問題與技術監管
- 四川富潤教科投資集團有限公司招聘筆試題庫2025
- 標本采集錯誤警示教育
- AI+Agent與Agentic+AI的原理和應用洞察與未來展望
- 2024年杭州蕭山區衛健系統事業單位招聘考試真題
- 2025年人教版小學四年級下冊數學期末提升測試試題(含答案和解析)
- 2025年高等自學教育考試馬克思主義基本原理概論全真模擬試卷及答案(共四套)
- 事故隱患內部報告獎勵制度
- 【艾青詩選】批注
- 2024年湖北高中學業水平合格性考試物理試卷真題(含答案詳解)
評論
0/150
提交評論