微機原理考點_第1頁
微機原理考點_第2頁
微機原理考點_第3頁
微機原理考點_第4頁
微機原理考點_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、.作業1.1簡述計算機和微型計算機經過了那些主要的發展階段? 計算機:第一代為電子管計算機時代; 第二代為晶體管計算機時代; 第三代為集成電路計算機時代; 第四代為大規模集成電路計算機時代;微型計算機:第一代為抵擋8位微處理器和微型計算機; 第二代為中擋8位微處理器和微型計算機; 第三代為16位微處理器和微型計算機; 第四代為32位微處理器和微型計算機; 第五代為64位微處理器和微型計算機;2.1簡述8086和80486CPU內部結構有哪些部件組成,并闡述它們結構上的 同。8086由執行單元EU和總線接口部件組成;80486由總線接口部件、指令預取部件、指令譯碼部件、控制和保護測試單 元部件、

2、整數執行部件、分段部件、分頁部件,以及浮點運算部件和高速緩 存(Cache管理部件。2.9簡述時鐘周期,總線周期和指令周期之間的關系。時鐘周期:微處理器執行指令的最小時間單位,又稱 T狀態。它通常與微機 的主頻有關;總線周期:CPU對存儲器或I/O端口完成一次讀/寫操作所需的時間; 指令周期:CPU執行下一條指令所需的時間。指令周期有若干個總線周期組 成,不同的指令執行的時間都不同。1.( 1)a.b.用兩種方法從44H端口輸入數據到AL ;IN AL, 44HMOV DX,44HIN AL,DX用兩種方法將56H輸出到98H端口。a. MOVAL, 56HOUT98H, ALb. MOVAL

3、, 56HMOVDX, 98HOUTDX, AL單元中。MOVCMP JCSUBMOV2.求AX ,BX中兩個無符號數之差的絕對值,并將結果存在當前數據段2800HDI, 2800HAX, BXDELAYAX, BXDI, AXHLTDELAY: SUB BX, AXMOV DI, BXHLT3.用邏輯指令完成下列操作:(1)將BL的最低2位置1,其他位不變;OR BL, 03H將DI的最高3位清0,其他位不變;AND DI, 1FFFH將CX的最低位和最高位取反,其他位不變;XOR CX, 8001H測試DX的最低2位是否為0,全為0則轉到DELAY出執行。TEST DX, 0003HJZ

4、DELAYDELAY: 4.設計一個延時子程序DELAY。DELAY P ROCPUSH CXP USH DIP USHFMOVAB0: MOVAB1: DECJNZLOOPPOPFPOPPOPRETDELAY END P(延時:5000H*6000H)ex, 6000HDI, 5000H DIAB1AB0DIex5.已知某外設端口 A地址為288H,端口 B為28AH,編程以A端口輸入數 據再從B端口輸出,程序一直運行,按任意鍵退出。CODE SEGMENTASSUME CS: CODE START: MOVINMOVOUTDX, 288H AL, DXDX, 28AHDX, ALMOV A

5、H, 01HINT 16HJE STARTMOV AH, 4CHINT 21HCODE ENDSEND START.實驗實驗二1.用匯編語言編寫一個計算“ 3+5”的加法程序,執行后顯示計算結果。code segmentassume cs:codestart:mov al,33hmovdl,35hadddl,alsubdl,30hmovah,02hint21hmovah,4chint21hcodeen dsendstart2.用匯編語言編寫一個求AX與 BX寄存器中兩個無符號數之差的絕對值,將 結果放在DX中。(文件名用自己的名字擴展名為.ASMdx,bxcode segmentstart:

6、cmp ax,bxjcdelaysubax,bxmovdx,axhltdelay: subbx,axmovassume cs:codehltcode endsendstart實驗三1.編寫一個加法程序,完成“1325+9839'要求用ASCII碼形式將加數與被加 數存放在數據區DATA1和DATA2中,并將相加的結果顯示出來。DATA SEGMENTDATA1 DB ' 5',DATA2 DB ' 9',2 ,'3','3' ,' 1''8' ,'9' ,'0'

7、;DATA ENDSSTACK SEGMENTP ARASTACK'STACKDB 64 DUPSTACK ENDSCODE SEGMENTASSUME CS:CODE, DS: DATA, SS: STACK ES DATALOP1 LODS DATA1START P ROC FARPUSH DSMOVAX, 00HP USHAXMOVAX, DATAMOVDS, AXMOVES, AX;初始化程序CLD;DF為0,為正向串MOVSI, OFFSET DATA1;取數據1352所在存儲單兀的偏移地址MOVDI, OFFSET DATA2;取數據9839所在存儲單元的偏移地址MOVCX

8、, 04H;計算次數-CXMOVAX, 00H;將暫存標志寄存器的內容的 AH寄存器清“ 0”SAHF;AH中的內容送標志寄存器ADC AL , DI;將操作數帶進位做加法AAA;ASCII碼運算的十進制加法調整LAHF;將標志寄存器的內容暫存在 AH寄存器OR AL, 30H;計算值拼成ASCII碼-ALSTOSB;存串操作,AL-DI , DI+1TDILOOP LOP1;循環結束否?未結束轉到LOP1AND AH, 01H;結束將最高位的進位標志AHOR AH, 30H;將最高位的進位拼成ASCII碼MOV DI, AH;并送到DATA2勺最后一個字節中;取串操作,SI T AL , S

9、I+1 T SIMOV AH, 02HMOV C, 05HLOP2 MOV DL, DIINT 21HDEC DILOOP LOP2RET;調用DOS斷的02h功能;顯示數據位-CX;將要顯示數據送DL中;調用DOS的 21H號中斷;顯示數據所在存儲單元地址減“ 1”;顯示完否?未顯示完轉到 LOP2;顯示完返回DOS犬態CODE ENDSEND START實驗四1.分類統計字數組ARRA沖正數、負數和零的個數,并分別存入內存字變量 POST NEGy和ZER衍,數組元素個數保存在數組的第一個字中。DATA SEGMENTARRAY DW 8;元素個數DW 0DW 0DW 0ENDS SEGM

10、ENTDW 230, -1437, 26, -31, 0, 3458, 0, 10P OSTNEGAZERODATACODEMOV CX, ARRAY ; JCXZ DONE ; LEA DI, ARRAY+2;AGAIN: CMP WORD P TRDI, 0 JG HIGH JE EQUAL INC BX JMP NEXTHIGH: INC AXJMP NEXTEQUAL: INC DX NEXT: INC DIINC DILOOP AGAINDONE: MOV PO ST, AX用CX來進行循環計數考慮數組的元素個數為0的情況用指針DI來訪問整個數組;與0做比較大于0,為正數等于0小于0

11、,為負數,負數個數增1正數個數增1的個數增1把各類的統計數保存到內存單元中ASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOVDS, AXXORAX, AX用AX作為正數的計數器XORBX, BX用BX作為負數的計數器XORDX, DXJ用DX作為零的計數器MOV MOV MOV INTNEGA, BXZERO, DX結束程序返回DOSAX, 4C00H 21HCODE ENDSEND START實驗五1.設計編寫一個程序,要求執行時顯示'DO you love me?Y/N'輸入 y(ASCII=79H)就停止執行,返回DOS犬態,按其它

12、鍵則重復顯示'DO you love me? Y/N'。data segme ntbuf db 'Do you love me?Y/N',0ah,0dh,'$'data endscode segme ntassume cs:code,ds:datastartmov ax,datamov ds,axmov dxQffset bufmov ah,9int 21hmov ah,1int 21hcmp al,'y'je exitcmp al,'Y'je exitmov dl,0ahmov ah,2int 21hmov dl

13、,0dhmov ah,2int 21hjmp startexit:mov ah,4chint 21hcode ends end start實驗六1.設計編寫一個程序,從鍵盤上輸入一串字符,計算每個字符出現的次數, 并在屏幕上顯示這個數字。DATA SEGMENTBUFFER DB 100DB ?DB 100 DUPCHARS DB 'IN PUT:$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN P ROC FARP USH DSSUB AX,AXP USH AXMOV AX,DATAMOV DS,AXSTART: MOV DX

14、QFFSET CHARSMOV AH,9INT 21HMOV DX,OFFSET BUFFERMOV AH,0AHINT 21HMOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HMOV SI,OFFSET BUFFERINC SIMOV AL,SIINC SIMOV DL,SIMOV DH,SIMOV DI,SIMOV CL,ALMOV CH,0MOV BL,1MOV BH,0DEC CLGO1: INC SICMP DL,SIJNE TO1INC BLTO1: LOOP GO1CALL OUT PUTMOV BL,1TO5: INC DIDE

15、C AL CMP AL,1JE TO3CMP DH,DIJE TO5MOV DL,DIMOV SI,DIMOV CL,ALMOV CH,0DEC CLGO2: INC SICMP SI,DLJNE TO2 INC BLMOV SI,DH TO2: LOOP GO2CALL OUTPUTMOV BL,1JMP TO5TO3: CMP DH,DIJE TO4MOV DL,DIMOV BL,1CALL OUTPUTTO4: RETMAIN END POUT PUT P ROCP USH AXP USH CXP USHFMOV AH,2INT 21HMOV DL,20HMOV AH,2INT 21HM

16、OV AL,BLMOV AH,0MOV CL,10DIV CLADD AH,30HADD AL,30HMOV CH,AHMOV DL,ALMOV AH,2 INT 21H MOV DL,CHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21H POPFPOP exPOP AXRETOUT PUT END PCODE ENDSEND MAIN實驗七1. 設計編寫一個程序,要求鍵盤輸入單字符,但不顯示,而是將該單字符的 ASCII碼加1后再顯示出來(即輸入A顯示B,輸入B則顯示C,),程序一直 運行,按ESC鍵則退出。c

17、ode segme ntassume cs:codestartmov ah,8int 21hcmp al,1Bh je exit add al,1 mov dl,almov ah,2h int 21hjmp start exit:mov ah,4Chint 21hcode endsend start三.平時聽課1.8086為16位微處理器,數據總線 坐位,地址總線20 位02.系統復位后,CPU從FFFF0H地址開始重新執行程序。3使 AX 清零:MOV AX,0; SUB AX,AX ; XOR AX,AX。4.設 DS=1000H,12000H=67H,12001H=45H ; MOV A

18、X,2000H則 AX=4567H。5.用兩條指令完成將標志的低8位中ZF(D6), CF(D0),設置為1,其他位變 為 0: AH : 01 0 0 1 則 AH 可為 01000001=41H;所以:MOV AH,41HSAHF6.比較DI, SI,女口 DIvSI轉delay執行,DI=SI轉AD1執行,DI>SI順序向下 執行。CMP DI,SIJC delayJZ AD1delay:HLTAD1 :HLT7. MOVSARMOVRCLAX, 8889HAX, 1貝U AX=C444H,CF=1;BX, 56HBX, 1 則 BX=00ADH,CF=0。8. 設32位數在DX

19、: AX中,實現32位數整個左移1位:SAL AX,1RCL DX,15000H5100H單元中去:9.用五條指令完成將當前數據段中3000H3100H單元的內容,對應的傳送到 當前附加段CX, 101HSI, 3000H DI,5000H MOVSBCLDMOVMOVMOVREP10將附加段中4000H5000H單元的內容全部清零:CLDMOV CX, 1001HMOV DI, 4000HMOVAL, 0HREPSTOSB或STDMOVDI, 5000HMOVAL, 0HMOVCX, 1001HREPSTOSB11設源串在1000H:2000H開始的100個字節單元中,要求將源串送到3000

20、H :1020H開始的目的串中:MOVAX, 1000HMOVDS, AXMOVSI, 2000HMOVAX, 3000HMOVES, AXMOVDI, 1020HCLDMOVCX, 64HREPMOVSB12. 比較兩個串,發現有不同的字符時則停止比較:CX, 100 SI, 2500H DI,1400H CMPSBCLDMOVMOVMOVREPE13. 按ESC鍵退出:CMP AL,JE EXIT1BHEXIT: MOVINTAH,4CH 21H14.按任意鍵退出:MOVINTJNEAH, 1H 21H EXITEXIT: MOV AH, 4CHINT 21H四.CPU各標志的含義標志10

21、溢出標志OFOVNV溢出非溢出方向標志DFDNUP遞減遞增中斷允許IFEIDI允許不允許符號標志SFNGPL負的正的零標志ZFZRNZ>-l-A零非零輔助進位AFACNA有進位無進位奇偶校檢PFPEPO偶數個計數個進位標志CFCYNC有進位無進位五.偽指令segment:assume end,DB, DW ,proc, PTR操作符1. 段定義:段名segment段名ends2. 段分配:assume段寄存器:段名,段寄存器:段名,3. 程序結束:4. 變量定義:5. 過程定義:end標號變量名DB/DW 表達式 或n DUP (操作數)過程名proc屬性RET過程名endp6. PTR

22、運算符(可用來修改變量或標號的類型屬性):類型PTR表達式 六.8086CPU的內部結構組成及各寄存器的用法1. 內部結構:執行單元EU和總線接口部件BIU2. 段寄存器用法:A. 通用數據寄存器:AX , BX , CX , DX ; AX作為累加器,BX作為基 址寄存器,CX作為計數寄存器,DX作為數據寄存器B. 指針及變址寄存器:SP, BP, SI,DI;通常用來存放存儲器單元的16位偏移地址;SP用來指示堆棧頂的偏移地址,稱為堆棧指針;BP用來存放堆棧中的一個數據區的“基址”的偏移量,稱為基址指針;SI,DI稱為變址寄存器,用來存放當前數據所在存儲單元的偏移地址,在 串操作指令中,S

23、I用來存放源操作數地址的偏移量,稱為源變址寄存 器,DI用來存放目標操作數地址的偏移量,稱為目標變址寄存器。C. 段寄存器:CS, DS, SS, ESD. 指令指針:IP: IP的內容總是指向BIU將要取的下一條指令代碼的16 位偏移地址E. 標志寄存器:FR: 16位只是用9位;其中6位為狀態標志位,用來反 映算術運算或邏輯運算結果的狀態;3位控制位,用來控制CPU的操 作。七8086CPU的讀寫操作的理解八.Debug命令D命令功能:顯示數據段中指定單元或單元塊的內容。E命令功能:修改內存單元內容命令A功能:進行程序段匯編命令U功能:從代碼段中指定的位置對機器代碼進行反匯編, 得到相應的

24、助記符形式的 指令。命令R功能:R命令就用來顯示所有寄存器內容,包括標志寄存器中的8個狀態標志位的狀態, 并在最后提示下一條將要執行的指令。RAXR后面跟上一個寄存器的名稱,這時R命令就用來顯示這個寄存器的內容并等待 修改。RF功能是顯示和修改標志位狀態。 命令G功能:運行程序命令T功能:單步執行程序 九.邏輯地址與物理地址理解與計算1. 邏輯地址:由段基址和偏移地址兩部分構成,它們的是無符號16位二進制數;邏輯地址是用戶進行程序設計師采用的地址2. 物理地址:CPU訪問內存是使用的地址:物理地址=段基址*16+偏移地址十.數值轉換1.H=D D=HH= BD= B卜一.負數的補碼表示的計算1. -B=B的反碼+1十二.1.2.3.4.各段寄存器的理解和用途CS:代碼

溫馨提示

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

最新文檔

評論

0/150

提交評論