第一篇:微機原理指令小結
8086CPU指令小結
所有指令:
(1)立即數不能作為目的操作數。
(2)不能在2個存儲單元之間直接進行操作(串操作除外)。
(3)MOV指令和堆棧指令是惟一能對段寄存器進行操作的指令。(4)源和目的操作數的數據類型必須匹配,都是8位,或都是16位。(5)CS、IP不能直接作為操作數。(6)指令中至少要有一項明確說明傳送的是字節還是字,如果沒有,可通過PTR進行設置。
一、傳送指令
(1)6種指令:通用傳送指令、堆棧操作指令、交換操作指令、I/O操作指令、目的地址傳送指令和標志傳送指令。
(2)對標志位的影響:除標志傳送(SAHF、POPF)外,均不影響標志位。(3)操作數表示方法:立即數——data,存儲器單元地址——mem,寄存器——reg,段寄存器——segreg。
1.通用傳送指令:完成數據傳送
(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作數OPRD1]← [源操作數OPRD2](2)源OPRD2: data、mem、reg、segreg。(3)目的OPRD1: mem、reg、segreg。
(4)通用傳送指令MOV和堆棧指令是唯一允許以段寄存器(代碼段寄存器CS和指令指針IP除外,即CS、IP不能作為直接操作數)作為操作數的指令,不允許通過MOV指令直接以立即數方式給段寄存器賦值,不允許直接在兩個段寄存器之間直接進行傳送。
(5)8位/16位操作。
2.堆棧操作指令:將數據壓入/彈出堆棧(1)指令格式:
入棧:PUSH OPRD;先修改堆棧指針SP-2,然后將數據壓入堆棧。
;SP =SP-1,[SP]=操作數高8位; SP =SP-1,[SP]= 操作數低8位。出棧:POP OPRD; 先將數據彈出堆棧,然后修改堆棧指針SP+2。
;(操作數低8位)←[SP],SP =SP+1;(操作數高8位)←[SP],SP =SP+1。(2)操作數:mem、reg、segreg。操作數不能是立即數data。(3)僅能進行字運算(16位操作)。
(4)堆棧存取原則為后進先出,只有一個入/出口SS:SP,SP始終指向棧頂,SP是自動修改的,SP在初始化中需要設置。
(5)PUSH、POP指令必須成對使用。
3.交換操作指令:XCHG——數據交換;XLAT——完成一個字節的換碼轉換(1)指令格式:
交換操作指令: XCHG OPRD1,OPRD2;[OPRD1]←→ [OPRD2] 累加器換碼指令(表轉換指令、查表指令):XLAT;(AL)←((DS)×16+(BX)+(AL))(2)XCHG:段寄存器和立即數不能作為一個操作數,8位/16位操作。
(3)XLAT:表首地址在BX中,AL的內容作為某一項到表首的偏移量(256字節的 1 表的下標),轉換后的結果存放在AL中。
4.I/O操作指令:累加器(AX/AL)與I/O端口之間的數據傳送(1)指令格式:
輸入指令:IN AL/ AX,PORT;(AL/ AX)← [PORT]
IN AL/ AX,DX
;(AL/ AX)← [DX]
輸出指令:OUT PORT,AL/ AX ;[PORT]←(AL/ AX)
OUT DX,AL/ AX
;[DX]←(AL/ AX)
(2)當端口地址≤ 255時,使用PORT(8位端口直接地址);當端口地址≥255時,必須用DX(16位端口直接地址)作橋梁。DX作端口尋址最多可尋找64K個端口。
(3)PORT為直接尋址,8位/16位操作。5.目的地址傳送指令
(1)取有效地址指令:LEA OPRD1,OPRD2
或: LEA reg,[add] ;(reg)← add,add為有效地址
把存儲器的有效地址EA(源操作數的地址偏移量)送入一個寄存器reg;常用于將一個16位的通用寄存器作為地址指針。傳送的是有效地址EA。(2)將雙地址指針裝入DS和另一個寄存器指令LDS指令:
LDS OPRD1,OPRD2
或: LDS
reg,[add] ;(reg)←(add+1)(add),(DS)←(add+3)(add +2)(3)將雙地址指針裝入ES和另一個寄存器指令LES指令:
LES OPRD1,OPRD2
或: LES
reg,[add] ;(reg)←(add+1)(add),(ES)←(add+3)(add +2)
① 從源操作數指定的存儲單元中取出4字節的地址指針(包括2字節的段地址和2字節的偏移量)傳送到DS/ES和reg。指定將段地址送入DS/ES,偏移量部分送入一個16位的指針寄存器或變址寄存器。
② 源操作數mem,目的操作數必須是一個16位的通用寄存器。③ 傳送的是存儲單元的內容,而不是存儲器的有效地址EA。6.標志傳送指令
(1)讀標志指令:LAHF;(AH)←(FR)0~7
功能:將標志寄存器中的SF、ZF、AF、PF和CF(即低8位)傳送至AH寄存器的指定位,空位沒有定義。
(2)存標志指令:SAHF;(FR)0~7 ←(AH)
功能:將寄存器AH的指定位,送至標志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根據AH的內容,影響上述標志位,對OF、DF、IF和TF無影響。
(3)標志入棧指令:PUSHF;將FR入棧。(SP)←(SP)-2,((SP)+1,(SP))←(FR)功能:將標志寄存器FR壓入堆棧頂部,同時修改堆棧指針,不影響標志位。(4)標志彈出棧指令:POPF;將棧頂的內容彈出到FR中。
;(FR)←((SP)+1,(SP)),(SP)←(SP)+ 2
功能:堆棧頂部的一個字,傳送到標志寄存器FR,同時修改堆棧指針,影響標志位。
二、算術運算指令
(1)9種指令:加法指令、減法指令、增量//減量指令、求補指令、比較指令、乘法指令、除法指令、字節字/轉換為字擴展指令和十進制調整指令。
(2)對標志位的影響:
① 加、減、比較指令(CMP)、取補指令(NEG)指令均影響6個標志位CF、OF、PF、SF、ZF和AF。
② 乘法指令影響CF和OF標志;除法指令所有標志位都不確定,無意義。
③ 增量//減量指令影響除進位標志CF以外的5個標志位AF、OF、PF、SF和ZF。④ 字節字/轉換為字擴展指令不影響標志位。
⑤ 加法的ASCII調整指令AAA,十進制調整指令 DAA影響除溢出標志OF以外5個標志: CF、PF、SF、ZF和AF;OF沒有意義。
⑥ 減法的ASCII調整指令 AAS、十進制調整指令 DAS影響 2個標志:CF和AF;其余標志沒有意義。
⑦ 乘法的ASCII調整指令AAM、除法的ASCII調整指令AAD 根據AL寄存器的結果影響SF、ZF和PF。
1.加法指令(Addition):完成加法操作。(1)格式:ADD/ ADC
OPRD1,OPRD2 ;(OPRD1)←(OPRD1)+(OPRD2)(2)源: data、mem、reg;目的:reg,mem。(3)ADC指令主要用于多字節運算中。(4)8位/16位操作。
2.減法指令(Subtraction):完成減法操作。(1)格式:SUB/ SBB OPRD1,OPRD2;(OPRD1)←(OPRD1)-(OPRD2)(2)規定同加法指令。
3.增量(加1)/減量(減1)指令INC/ DEC:完成+1/-1操作。(1)格式:INC/ DEC OPRD;(OPRD)←(OPRD)±1
(2)功能:主要用于在循環程序中修改地址指針和循環次數等。(3)操作數:reg、mem。
4.求補指令NEG:完成補碼操作。(1)格式:NEG OPRD(2)操作數:reg、:mem。
5.比較指令CMP:完成減法操作,結果不回送,反映在標志位上。(1)格式:CMP OPRD1,OPRD2;(OPRD1)-(OPRD2)
(2)功能:主要用于比較兩個數之間的關系。在比較指令之后,根據標志即可判斷兩者之間的關系。減法操作,結果不回送目的操作數。
(3)兩數關系的判斷標志 ① A=B 用 ZF=1 判斷;
② 兩個無符號數的大小用CF判斷。CF=1,AB。
③ 兩個符號數的大小用SF⊕OF判斷。SF⊕OF=1,AB。
JG/JNLE(大于,SF⊕OF=0且 ZF=0)JL/JNGE(小于,SF⊕OF=1且 ZF=0)6.乘法指令MUL/ IMUL:完成無符號乘法/帶符號(整數)乘法操作。(1)格式:MUL/ IMUL OPRD ;8位:(AX)←(AL)╳(OPRD)
;16位:(DX)(AX)←(AX)╳(OPRD)
(2)源操作數:reg、mem,由指令給出。(3)目的操作數:默認在AL/AX中。
(4)帶符號數乘法指令IMUL當結果的高半部分不是結果的低半部分的符號擴展時,標志位CF和OF將置位。
(6)可完成字節與字節乘法、字與字乘法操作。7.除法指令DIV/ IDIV:完成無符號除法/帶符號(整數)除法操作。
(1)格式:DIV/ IDIV OPRD; 8位:(AL)←(AX)/(OPRD)……(AH)(余數)
;16位:(AX)←(DX)(AX)/(OPRD)……(DX)(余數)(2)源/目的操作數規定同乘法指令。
(3)對于符號數,當被除數不夠位數時,需要對高8/16位進行擴展符號擴展。
8.字節字/轉換為字擴展指令CBW/CWD:將AL/AX寄存器的最高位擴展到AH/DX。(1)格式:CBW/CWD(2)功能:將AL/AX寄存器的最高位擴展到AH/DX,AL.7(AX.15)=0,則AH(DX)=0;AL.7(AX.15)= 1,則AH=0FFH(DX=0FFFFH)。
9.十進制調整指令
(1)壓縮BCD碼:每個字節表示兩位BCD數;
非壓縮BCD碼:用一個字節表示一位BCD數,在這字節的高四位用0填充。
(2)每條十進制調整指令在使用時都與相應的算術運算指令配合,并自動對相應的算術運算指令結果進行相應的十進制調整。
(3)格式:
① DAA:壓縮的BCD碼加法調整
② DAS:壓縮的BCD碼減法調整 ③ AAA:非壓縮的BCD碼加法調整 ④ AAS:非壓縮的BCD碼減法調整 ⑤ AAM:乘法后的BCD碼調整
⑥ AAD:除法前的BCD碼調整
三、邏輯運算和移位指令
1.邏輯運算指令
(1)5種指令:邏輯與、或、非、異或和測試指令。(2)指令格式
① 邏輯與指令AND OPRD1,OPRD2;(OPRD1)←(OPRD1)∧(OPRD2)
② 邏輯或指令OR OPRD1,OPRD2;
(OPRD1)←(OPRD1)∨(OPRD2)
③ 邏輯非指令 NOT OPRD;
(OPRD)←(/OPRD)④ 邏輯異或指令XOR OPRD1,OPRD2;(OPRD1)←(OPRD1)⊕(OPRD2)⑤ 測試指令TEST OPRD1,OPRD2 ;
(OPRD1)∧(OPRD2),結果不回送。(3)操作數范圍
源操作數為reg、mem、data;目的操作數為reg、mem(NOT指令只有一個操作數)。單操作數指令NOT的操作數不能為立即數。雙操作數邏輯指令中,必須有一個操作數為寄存器尋址方式,且目的操作數不能為立即數。
(4)功能:實現相應的邏輯功能。
① 與指令可實現屏蔽(復位)數據的某些位(使一個字或字節中的某些位清0,而其余位不變),提取某些位或拆字。
② 或指令可實現置位數據的某些位(使一個字或字節中的某些位置1,而其余位不變),拼字。
③ 非指令常用于使某個數取反,或取反后+1而得補碼。
④ 異或指令可實現某個寄存器清0,或使目的操作數的某些位取反(使一個字或字節中的某些位取反,而其余位不變)。
⑤ 測試指令通常用于測試。目的操作數的某些位是1還是0,用ZF標志判斷。
4(5)對標志位的影響
① 邏輯與、或、異或和測試指令影響ZF,PF,SF標志;CF=0,OF=0;AF無意義。② 邏輯非指令不影響標志位。2.移位指令
(1)4組8種指令:算術移位SA,邏輯移位SH,循環移位RO,帶進位位的循環移位RC。右移R,左移L。
(2)指令格式:操作碼 OPRD,M M =1時,只移1位; M>1時,可將指令格式中的CNT改為CL寄存器,并在移位指令前將移位次數預先送入CL寄存器中。
(3)功能:將OPRD的內容移位M次。算術移位適用于帶符號數的×2,÷2。邏輯移位適用于無符號數的×2,÷2。
(4)操作數范圍: reg、mem。
(5)對標志位的影響:
① 算術/邏輯移位指令影響CF、SF、ZF、PF標志,在移1位時,影響OF標志。不影響AF標志。
② 循環移位指令只影響CF、OF標志,不影響其他標志位。
CF MSB LSB 0 SHL/SAL算術/邏輯左移 CF 0 CF MSB LSB SHR邏輯右移 MSB LSB SAR算術右移
CF MSB LSB ROL循環左移 CF MSB LSB ROR循環右移 CF MSB LSB RCL通過進位的循環左移 CF MSB LSB RCR通過進位的循環右移
四、串操作類指令
(1)5種指令:串傳送MOVS,串比較CMPS,串搜索SCAS,存串STOS,取串LODS。(2)指令格式:操作碼
DST,SRC MOVSB(字節)/MOVSW(字)
① 串傳送MOVS DST,SRC;[(ES:DST)]←[(DS:SRC)]
MOVSB;
[(ES:DI)]←[(DS:SI)],SI=SI±1,DI=DI±1
MOVSW;
[(ES:DI)]←[(DS:SI)],[(ES:DI+1)]←[(DS:SI+1)],SI=SI±2,DI=DI±2
② 串比較CMPS DST,SRC;
[(ES:DI)]-[(DS:SI)];SI=SI±1,DI=DI±1
③ 串搜索SCAS DST;
AL← [(ES:DI)]];DI=DI±1 ④ 存串STOS DST;
[(ES:DI)] ← AL;DI=DI±1 ⑤ 取串LODS SRC;
AL ←[(DS:SI)];SI=SI±1 字操作與字節操作類似,AL——AX。(3)功能
根據方向標志DF及所傳送數據的類型(字節/字)對SI及DI進行修改,在指令重復前綴REP的控制下實現。
① 串傳送:把數據段中由SI間接尋址的一個字節/字傳送到附加段中由DI間接尋址的一個字節/字單元中。
② 串比較:把數據段中由SI間接尋址的一個字節/字與附加段中由DI間接尋址的一個字節/字進行比較操作,使比較的結果影響標志位。可在兩個數據串中尋找第一個不相等的字節/字,或者第一個相等的字節/字。
③ 串搜索:用指令指定的關鍵字節/字(分別存放在AL/AX中),與附加段中由DI間接尋址的字節串中的一個字節進行比較操作,使比較的結果影響標志位。可在指定的數據串中搜索第一個與關鍵字節匹配(或者不匹配)的字節。
④ 存串:把指令中指定的字節(或字)串(存放在AL/AX中)傳送到附加段中由DI間接尋址的字節內存單元中。可連續將AL(或AX)的內容存入到附加段中的一段內存區域中去,該指令不影標志位。
⑤ 取串:從串中取指令實現從指定的字節(或字)串中讀出信息的操作。(4)規定
① 串操作類指令是唯一的一組源和目的操作數均在存儲單元的指令。源串在數據段,目的串在附加段。各指令所使用的默認寄存器是:源串地址DS:SI;目的串地址ES:DI;字串長度CX;存取或搜索的默認值
AL
② 串操作時,地址的修改由方向標志確定。
CLD;DF=0,SI/DI地址作自動增量(自動+1)修改; STD;DF=1,SI/DI地址作自動減量(自動-1)修改。
③ 任何一個串操作指令均可在指令前面加上一個重復操作作為前綴,于是就重復執行,直至CX、ZF滿足要求為止。
④ 重復指令前綴
REP;①若(CX)=0,則退出; ② CX=CX-1;③執行后續指令;④重復①----③
REPE/REPZ;①若(CX)=0或ZF=0,則退出;②CX=CX-1;③執行后續指令;④重復①----③ REPNE/REPNZ;①若(CX)=0或ZF=1,則退出;②CX=CX-1;③執行后續指令;④重復①----③
五、控制轉移類指令——改變指令執行順序的指令
(1)6種指令:無條件轉移指令、子程序調用和返回指令、條件轉移指令、循環控制指令、中斷指令、處理器控制命令。
(2)概念
①直接轉移:轉移的目的地址(標號)直接出現在指令碼中。
②間接轉移:轉移的目的地址間接存儲于某一個寄存器或某一個內存變量中。
③段內轉移/調用:轉移的目的地址和本條指令在同一代碼段中,轉移時只改變IP,不改變CS。程序轉向的有效地址EA等于當前IP的內容加上8/16位位移量。可分為:
段內近轉移NEAR ——16位位移量,適用于無條件轉移指令和條件轉移指令,轉移范圍為-32768----+32768。
段內短轉移SHORT ——8位位移量,適用于條件轉移指令,轉移范圍為-128----+127。
④段間轉移/調用(遠轉移FAR):轉移的目的地址和本條指令不在同一代碼段中,轉移時同時改變CS和IP內容,即程序轉移到另一個代碼段。
1.無條件轉移指令
JMP [轉移方式]OPRD;轉移到OPRD所指向的存儲器單元處執行程序(1)段內直接短轉移指令JMP SHORT OPRD;(IP)←(IP)+ OPRD
(2)段內直接近轉移指令JMP
NEAR PTR
OPRD;(IP)←(IP)+ OPRD(3)段內間接轉移指令JMP WORD PTR
OPRD;(IP)← [EA](4)段間直接(遠)轉移指令JMP FAR PTR OPRD;(IP)←OPRD的段內偏移地址,(CS)←OPRD所在的段地址。OPRD為直接尋址方式。
(5)段間間接轉移指令JMP DWORD PTR OPRD;(IP)← [EA],(CS)← [EA+2] 2.條件轉移指令
指令助記符
目的地址
(1)標志條件轉移指令助記符:J/JN+標志(C, P, S, S, O);
(2)比較條件轉移指令助記符:J/JN+比較符(A高于, B低于, E等于, G大于, L小于)(3)無符號數比較:測試標志位為CF、ZF,分高于A、等于E、低于B等3種情況:ZF=1,等于;CF=0,大于。
(4)符號數比較:測試標志位為ZF、OF和SF,分大于G、等于E、小于L等3種情況:ZF=1,等于;SF⊕OF =0,大于。
3.子程序調用和返回指令(1)子程序(過程)調用指令
CALL 子程序名 DST ①段內調用: CALL NEAR PTR OPRD ;(SP)←(SP)-2,((SP)-2)((SP)-1)←(IP),(IP)←子程序DST的地址(即:IP+16位位移)
②段間調用:CALL FAR PTR OPRD ;(SP)←(SP)-2,((SP)-2)((SP)-1)=(CS),(SP)←(SP)-2,((SP)-2)((SP)-1)=(IP),(IP)=[EA],(CS)=[EA+2](2)子程序返回指令
RET;段內返回(IP)←((SP)+1,SP),(SP)←
(SP)+ 2
;段間返回(IP)←((SP)+1,SP),(SP)←
(SP)+ 2
(CS)←((SP)+1,SP),(SP)←
(SP)+ 2 4.循環控制指令
對CX或標志位ZF進行測試,確定是否循環。(1)LOOP OPRD(短標號);(CX)←(CX)-1,若CX≠ 0,則循環,否則順序執行。
(2)LOOPNZ/LOOPNE OPRD;(CX)←(CX)-1,若CX≠0和ZF=0,則循環,否則順序執行。(3)LOOPZ/LOOPE OPRD;(CX)←(CX)-1,若CX≠0 和ZF=1,則循環,否則順序執行。(4)JCXZ OPRD;(CX)←(CX)-1,若CX=0,則循環,否則順序執行。5.中斷指令(1)INT n;(SP)←(SP)-2,((SP)-2)((SP)-1)←(FR),FR入棧
;(SP)←(SP)-2,((SP)-2)((SP)-1)←(CS),CS入棧 ;(SP)←(SP)-2,((SP)-2)((SP)-1)←(IP),IP入棧 ;(IP)←(n×4),(CS)←(n×4+2),n——中斷類型號
(2)INTO;同INT 4,算術運算溢出中斷指令
(3)中斷返回指令IRET;(IP)←((SP)+1 ,(SP)),(SP)←(SP)+2,IP出棧
;(CS)←((SP)+1 ,(SP)),(SP)←(SP)+2,CS出棧
;(FR)←((SP)+1 ,(SP)),(SP)←(SP)+2,FR出棧
6.處理器控制命令(1)標志操作指令
清標志位為CL,置標志位為ST。只對CF、DF和IF三個標志操作 CLC——清進位標志,CLD——清方向標志,CLI——關中斷標志; STC——置進位標志,STD——置方向標志,STI——開中斷標志; CMC——進位標志取反。(2)處理器外部同步命令
對標志位的影響:不影響標志位。
①暫停指令:HLT;處理器處于什么也不做的暫停狀態,可由中斷請求、復位等喚醒繼續執行。②等待指令:WAIT;處理器處于等待狀態,CPU每隔4個時鐘周期測試一次TEST引腳線(23腳),直至TEST引腳線為有效低電平時,CPU才脫離等待狀態。③交權指令:ESC;CPU將控制權交給其他協處理器,使協處理器從系統指令流中取得指令。
④總線封鎖指令:LOCK;可放在任一條指令前作為前綴,使CPU在執行下一條指令期間發出總線封鎖信號(LOCK),將總線封鎖,其它的主設備不能控制總線。
⑤空操作指令:NOP;不完成任何操作,只耗費3個時鐘周期,用于程序的延時和調試。
第二篇:微機原理與接口技術小結
微機原理與接口技術基礎
1.為什么在流水CPU中,將一條指令從取指到執行結束的任務分割為一系列子任務,并使各子任務在流水線的各個過程段并發地執行,從而使流水CPU具有更強大的數據吞吐能力?
這里可以使用時空圖法證明結論的正確性。
假設指令周期包含四個子過程:取指令(IF)、指令譯碼(ID)、取操作數(EX)、進行運算(WB),每個子過程稱為過程段(Si),這樣,一個流水線由一系列串連的過程段組成。在統一時鐘信號控制下,數據從一個過程段流向相鄰的過程段。
2.譯碼器是如何譯碼的?尋址空間是如何確定的?譯碼器與尋址空間是怎么聯系的?
譯碼器實際上是由許多與門、或門、非門和它們的組合構成的。它有若干個輸入端和若干個輸出端(也可能只有一個輸出端)。對某一個輸出端來說,它的電平高低必然與輸入的某一種狀態相對應。
例如,具有4個輸入端的與非門就是一個簡單的譯碼器,只有四個輸入端為1111時,它的輸出端才為0。如果將地址總線的A9、A8、A7、A6與它的四個輸入連接起來,并把它的輸出連到存儲器芯片或某個需要尋址的外設接口的片選端(假定低電平有效),那么,只有當A9、A8、A7、A6為1111時,存儲器芯片或外設才會被選中。
譯碼器的尋址空間取決于地址總線的哪幾根線接到譯碼器的輸入端,例如上例,地址總線的A9、A8、A7、A6與譯碼器的輸入連接,那么其尋址空間應該是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,沒有參與譯碼的低位地址線必然要參與存儲器芯片或外設接口的內部譯碼。也就是說,內部譯碼地址范圍是0--2n11 0000。
可以說,譯碼器的譯碼輸出決定了尋址空間的起始地址,內部譯碼決定了尋址空間的大小。由于上一條指令的四個子過程全部執行完畢后才能開始下一條指令,因此每隔4個單位時間才有一個輸出結果,即一條指令執行結束。表示非流水CPU的時空圖。由于上一條指令與下一條指令的四個過程在時間上可以重疊執行,因此,當流水線滿載時,每一個單位時間就可以輸出一個結果,即執行一條指令。
比較后發現:流水CPU在八個單位時間中執行了5條指令,而非流水CPU僅執行了2條指令,因此流水CPU具有更強大的數據吞吐能力。
3.書本上講的是若是計算結果中1的個數為偶數時,則PF=1;但我又在另外的輔導書上看到的說如果計算結果的低8位中1的個數為偶數,PF=1.請問老師是否是低八位?
答:對,PF只與結果的低8位有關。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7類34個寄存器。它們分別是通用寄存器、指令指針和標志寄存器、段寄存器、系統地址寄存器、控制寄存器、調試和測試寄存器。
(1)通用寄存器(8個)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每個32位寄存器的低16位可單獨使用,同時AX、BX、CX、DX寄存器的高、低8位也可分別當作8位寄存器使用。它們與8088/8086中相應的16位通用寄存器作用相同。
(2)指令指針和標志寄存器。
指令指針EIP是一個32位寄存器,存放下一條要執行的指令的偏移地址。
標志寄存器EFLAGS也是一個32位寄存器,存放指令的執行狀態和一些控制位。
(3)段寄存器(6個)
CS,DS,SS,ES,FS和GS。在實方式下,它們存放內存段的段地址。在保護方式下,它們被稱為段選擇符。其中存放的是某一個段的選擇符。當選擇符裝入段寄存器時,80386中的硬件章自動用段寄存器中的值作為索引從段描述符表中取出一個8個字節的描述符,裝入到與該段寄存器相應的64位描述符寄存器中。
(4)控制寄存器(4個)
CR0、CRl、CR2和CR3。它們的作用是保存全局性的機器狀態。
(5)系統地址寄存器(4個)
GDTR、IDTR、LDTR和TR。它們用來存儲操作系統需要的保護信息和地址轉換表信息、定義目前正在執行任務的環境、地址空間和中斷向量空間。
(6)調試寄存器(8個)
DR0~DR7。它們為調試提供硬件支持。
(7)測試寄存器(8個)
TR0~TR7,其中TR0~TR5由Intel公司保留,用戶只能訪問TR6、TR7。它們用于控制對TLB中的RAM和CAM相連存儲器的測試。TR6是測試控制寄存器,TR7是測試狀態寄存器,保存測試結果的狀態
5.什么是外部中斷源?什么是中斷向量碼?什么是讀選通信號?
答:外部中斷源就是在CPU外部能夠產生中斷請求的設備/器件;通俗地說,中斷向量碼就是中斷的編號,其值為0-FFH;選通信號就是打開邏輯門的控制信號,或用來鎖存信息(類似D觸發器的CP或CLK)的控制信號。讀選通信號就是用來打開總線緩沖器,以便把的數據送到總線上的控制信號。
6.CPU處于單步執行指令的工作方式(課本49頁),請問什么是單步執行指令工作方式? 答:在這種方式下,CPU每執行一條指令,就產生一次特殊的中斷,以便可以停下來檢查執行的結果。主要用于各類程序的調試。
7.片選信號(CS)到底是起使數據有效或無效的作用還是起選擇芯片的作用啊?若是前者,干嗎叫片選?
片選信號就是選擇芯片的信號。前者不叫片選信號,應該叫允許信號。
8.書本上講的是若是計算結果中1的個數為偶數時,則PF=1;但我又在另外的輔導書上看到的說如果計算結果的低8位中1的個數為偶數,PF=1.請問老師是否是低八位?
微型計算機基礎
1.為什么在流水CPU中,將一條指令從取指到執行結束的任務分割為一系列子任務,并使各子任務在流水線的各個過程段并發地執行,從而使流水CPU具有更強大的數據吞吐能力?
這里可以使用時空圖法證明結論的正確性。
假設指令周期包含四個子過程:取指令(IF)、指令譯碼(ID)、取操作數(EX)、進行運算(WB),每個子過程稱為過程段(Si),這樣,一個流水線由一系列串連的過程段組成。在統一時鐘信號控制下,數據從一個過程段流向相鄰的過程段。
2.譯碼器是如何譯碼的?尋址空間是如何確定的?譯碼器與尋址空間是怎么聯系的?
譯碼器實際上是由許多與門、或門、非門和它們的組合構成的。它有若干個輸入端和若干個輸出端(也可能只有一個輸出端)。對某一個輸出端來說,它的電平高低必然與輸入的某一種狀態相對應。
例如,具有4個輸入端的與非門就是一個簡單的譯碼器,只有四個輸入端為1111時,它的輸出端才為0。如果將地址總線的A9、A8、A7、A6與它的四個輸入連接起來,并把它的輸出連到存儲器芯片或某個需要尋址的外設接口的片選端(假定低電平有效),那么,只有當A9、A8、A7、A6為1111時,存儲器芯片或外設才會被選中。
譯碼器的尋址空間取決于地址總線的哪幾根線接到譯碼器的輸入端,例如上例,地址總線的A9、A8、A7、A6與譯碼器的輸入連接,那么其尋址空間應該是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,沒有參與譯碼的低位地址線必然要參與存儲器芯片或外設接口的內部譯碼。也就是說,內部譯碼地址范圍是0--2n11 0000。
可以說,譯碼器的譯碼輸出決定了尋址空間的起始地址,內部譯碼決定了尋址空間的大小。由于上一條指令的四個子過程全部執行完畢后才能開始下一條指令,因此每隔4個單位時間才有一個輸出結果,即一條指令執行結束。表示非流水CPU的時空圖。由于上一條指令與下一條指令的四個過程在時間上可以重疊執行,因此,當流水線滿載時,每一個單位時間就可以輸出一個結果,即執行一條指令。
比較后發現:流水CPU在八個單位時間中執行了5條指令,而非流水CPU僅執行了2條指令,因此流水CPU具有更強大的數據吞吐能力。
3.書本上講的是若是計算結果中1的個數為偶數時,則PF=1;但我又在另外的輔導書上看到的說如果計算結果的低8位中1的個數為偶數,PF=1.請問老師是否是低八位?
答:對,PF只與結果的低8位有關。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7類34個寄存器。它們分別是通用寄存器、指令指針和標志寄存器、段寄存器、系統地址寄存器、控制寄存器、調試和測試寄存器。
(1)通用寄存器(8個)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每個32位寄存器的低16位可單獨使用,同時AX、BX、CX、DX寄存器的高、低8位也可分別當作8位寄存器使用。它們與8088/8086中相應的16位通用寄存器作用相同。
(2)指令指針和標志寄存器。
指令指針EIP是一個32位寄存器,存放下一條要執行的指令的偏移地址。
標志寄存器EFLAGS也是一個32位寄存器,存放指令的執行狀態和一些控制位。
(3)段寄存器(6個)
CS,DS,SS,ES,FS和GS。在實方式下,它們存放內存段的段地址。在保護方式下,它們被稱為段選擇符。其中存放的是某一個段的選擇符。當選擇符裝入段寄存器時,80386中的硬件章自動用段寄存器中的值作為索引從段描述符表中取出一個8個字節的描述符,裝入到與該段寄存器相應的64位描述符寄存器中。
(4)控制寄存器(4個)
CR0、CRl、CR2和CR3。它們的作用是保存全局性的機器狀態。
(5)系統地址寄存器(4個)
GDTR、IDTR、LDTR和TR。它們用來存儲操作系統需要的保護信息和地址轉換表信息、定義目前正在執行任務的環境、地址空間和中斷向量空間。
(6)調試寄存器(8個)
DR0~DR7。它們為調試提供硬件支持。
(7)測試寄存器(8個)
TR0~TR7,其中TR0~TR5由Intel公司保留,用戶只能訪問TR6、TR7。它們用于控制對TLB中的RAM和CAM相連存儲器的測試。TR6是測試控制寄存器,TR7是測試狀態寄存器,保存測試結果的狀態
5.什么是外部中斷源?什么是中斷向量碼?什么是讀選通信號?
答:外部中斷源就是在CPU外部能夠產生中斷請求的設備/器件;通俗地說,中斷向量碼就是中斷的編號,其值為0-FFH;選通信號就是打開邏輯門的控制信號,或用來鎖存信息(類似D觸發器的CP或CLK)的控制信號。讀選通信號就是用來打開總線緩沖器,以便把的數據送到總線上的控制信號。
6.CPU處于單步執行指令的工作方式(課本49頁),請問什么是單步執行指令工作方式? 答:在這種方式下,CPU每執行一條指令,就產生一次特殊的中斷,以便可以停下來檢查執行的結果。主要用于各類程序的調試。
7.片選信號(CS)到底是起使數據有效或無效的作用還是起選擇芯片的作用啊?若是前者,干嗎叫片選?
片選信號就是選擇芯片的信號。前者不叫片選信號,應該叫允許信號。
8.書本上講的是若是計算結果中1的個數為偶數時,則PF=1;但我又在另外的輔導書上看到的說如果計算結果的低8位中1的個數為偶數,PF=1.請問老師是否是低八位?對,PF只與結果的低8位有關
第三篇:微機原理課程設計
電子信息科學與技術《微機原理》課程設計
一、本次課程設計的目的和意義
學習和掌握計算機中常用接口電路的應用和設計技術,充分認識理論知識對應用技術的指導性作用,進一步加強理論知識與應用相結合的實踐和鍛煉。通過這次設計實踐能夠進一步加深對專業知識和理論知識學習的認識和理解,使自己的設計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。
二、設計時間、基本要求
(一)、設計時間:二周(二)、基本要求:
a.每題2人;b.設計出完整的接口電路;c.編寫出全部程序;d.在實驗系統上調試通過。
三、設計選題與要求
選題一:多路模擬數據采集系統設計
要求:設計一個2路以上的模擬數據采集系統。
1、用按鍵選擇那一路;
2、用LED顯示轉換結果(十進制數);
3、將每一路采集的100個數據存放到各自的存儲區中。
選題二:溫度測控系統的設計
要求:利用ADC0809設計一個溫度測控系統,在LED數碼顯示器上顯示溫度值,并對溫度進行測試和控制,當檢測溫度到達溫度上限60℃時開風扇(即開啟電動機,或以一個燈的亮滅表示),低于下限30℃時關閉風扇,LED上的顯示內容為:XX ℃(采用十進制顯示)。
選題三:函數發生器的設計(一)要求:利用DAC0832設計一個函數發生器,并利用按鍵選擇輸出波形,能分別產生三角波、階梯波(每階梯1V)、正向鋸齒波、負向鋸齒波和方波。并利用按鍵(自行定義)進行輸出波形選擇,同時將當前輸出波形代號顯示在LED上(左邊位):0為方波、1為正向鋸齒波、2為負向鋸齒波、3 為三角波、4為階梯波。
選題四:函數發生器的設計(二)要求:設計一個三角波發生器,可利用鍵盤改變其輸出波形的幅值。例如,可利用1-5這5個數字鍵改變其輸出波形的幅值,當按下1-5數字鍵時使D/A輸出幅值從1V增加到5V。
選題五:電子音樂播放器
要求:設計要求:利用8253作為音階頻率發生器,應先對“2008年奧運會主題歌”進行編碼后存入音符表,并建立好音階表(只建立一個8度即可),音符長度不能少于60個,連續播放3遍后停止。
選題六:鍵盤電子樂器
要求:利用并行接口8155作為鍵盤接口,設計一個具有2個八度音階的鍵盤樂器,音階鍵不少于16個,采用掃描方式管理鍵盤,音域范圍自行定義。
選題七:電子時鐘設計
要求:利用8253定時器設計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當按下該
鍵時時鐘從當前設定值(可在顯示緩沖區中予置)開始走時。
選題八:壓力測控系統的設計(一)要求:對壓力傳感器的信號進行檢測并在LED數碼顯示器上顯示壓力值,當壓力低于30pa時,黃燈閃爍,閃爍周期為1秒。當壓力高于150pa時,紅燈閃爍。LED的顯示內容為P=XXX。X為測試值。
選題九:可變輸出頻率方波發生器設計
要求:設計一個輸出方波頻率可利用按鍵改變的方波信號發生器(可以使用D/A也可以直接使用8253產生方波),利用鍵盤選擇方波發生器的輸出頻率并驅動喇叭。輸出頻率=鍵號*100HZ
選題十:直流電機速度控制器設計
要求:利用D/A轉換器和按鍵設計一個直流電動機轉速控制器。按鍵定義如下:0 停止,1-1/10轉速,2-2/10轉速?? 9 最高速(D/A輸出滿量程),鍵號每加1,D/A輸出增加0.5V
選題十一:可任意啟動/停止的電子秒表設計
要求:6位LED數碼顯示,計時單位為1/100秒。利用功能鍵進行啟/停控制。其功能為:上電后計時器清0,當第一次(或奇數次)按下啟/停鍵時開始計數。第2次(或偶數次)按下該鍵時停止計時,再一次按啟/停鍵時清零后重新開始計時??
選題十二:溫度測試系統設計
要求:利用溫度傳感器和ADC0809設計一個溫度測試系統,將測試結果(十進制)在LED上顯示出來,并定義一個保持按鍵,當按下該鍵時,將當前測試值保持不變(按鍵不動作時為正常測量顯示)。溫度顯示格式為:XXX ℃。(可以每隔0.3秒測量一次)
選題十三:壓力測試系統設計(二)要求:利用壓力傳感器和ADC0809設計一個壓力測試系統,并將測試結果(十進制)在LED上顯示出來,并定義一個測試最大值按鍵,當按下該鍵時,可進行最大值測量(按鍵不動作時為正常測量顯示),即:只有當當前測量值大于上次測量值時才刷新顯示,顯示格式為:P=XXX。可以每隔0.3秒測量一次。
選題十四:簡易計算器系統設計
要求:設計一個可以進行2位數四則運算的計算器。
1、用按鍵輸入數和運算符號;
2、用LED顯示運算過程和結果(十進制數);
3、可以表示出當前的運算類型;
4、具有清零和復位功能;
5、具有連續運算功能。
選題十五:交通燈控制系統
要求:按照時間控制原則,利用并行接口和定時器,設計一套十字路口的交通燈管理系統,通行時間(或禁止時間)30秒,準備時間3秒,在準備時間里黃燈閃爍3次,閃爍頻率為0.5秒,周而復始。可利用8255、8253等接口電路。
選題十六:計件系統設計
要求:利用8253計數,對外界脈沖技術,并將計數值在數碼管上顯示,可通過鍵盤控制重新計數。
四、設計任務及要求
1、接口設計:根據所選題目和所用的接口電路芯片設計出完整的接口電路,并在實驗系統上完成電路的連接和調試通過。
2、程序設計:要求畫出程序框圖,設計出全部程序并給出程序設計說明和程序注釋。
3、課程設計報告:(1)設計題目;
(2)系統的主要功能、作用以及主要技術性能指標;
(3)總體設計方案、工作和組成原理(框圖)或設計說明、采用的技術路線等;
(4)系統設計:接口電路設計,程序設計(程序框圖和程序清單及注釋)其他有關的理論分析和計算;
(5)設計總結:對整個設計工作過程進行歸納和綜合,對設計中所存在的問題和不足進行分析和總結,提出解決的方法、措施、建議和對這次設計實踐的認識、收獲和提高。
第四篇:微機原理課程設計
匯編程序設計題
題目一 密碼設置模擬
該程序可以進行密碼的設置(第一次)和修改(已設置密碼)。要求輸入的密碼不顯示。題目二 計算器
編輯程序可以實現鍵盤輸入數據與運算符,進行“加減乘除”運算。(提示:先輸入數據與運算符,保存,再按照運算符選擇對應的子程序;輸入的數據是用字符表示的,需要轉換;要有良好的界面(提示信息))
題目三工作周期判斷程序
輸入年、月、日,能夠判斷當日的星期數,并進行輸出。(以校歷為依照,可設某日為起點,根據相差的天數與7的關系進行判斷)。
題目四 PC揚聲器發聲
利用8253驅動PC機內揚聲器發聲,PC結構參考相關文獻資料。題目五 樂曲播放
利用PC機內8253實現樂曲播放。題目六 按鍵選擇樂曲播放
利用按鍵選擇播放不同樂曲。(★)(自制交互界面實現按鍵選擇★★)題目七 實現閃爍文字效果 編程提示:
提示信息于屏幕中央顯示出來,用光標定位子程序將光標定位于80*25顯示方式的第8行第10列,然后輸出一條提示信息,接著調用屏幕上卷子程序上卷一行,接著再定位光標,然后顯示下一條提示信息,直到所有信息顯示完畢,對于閃爍的信息,同樣是定位光標,然后用BIOS功能調用13H來顯示閃爍信息,當BL的高位為1時,字符閃爍。mov ah,00h mov al,03h ;設置顯示方式為80*25,16色文本 int 10h 題目八
數字秒表
設計可以顯示1~60秒的無存儲功能的秒表,最小單位為毫秒。題目九
倒計時牌
設計日期倒計時牌界面,可輸入設定日期,顯示當前日期的統計天數,如奧運計時牌。題目十
數字時鐘
編程實現時鐘功能,按秒刷新,要求定位在屏幕右上角。
硬件設計題
總體要求:根據題意自行設計電路,編寫相關匯編程序。題目一
交通燈控制系統
1.利用8253定時,8259中斷及8255設計電路,實現十字路口交通燈模擬控制。2.實現能自動控制和手動應急控制。
3.實現能隨時可以調整自動模式的綠燈和紅燈時間。題目二 實現特定功能的鍵盤及LED顯示
了解鍵盤及LED顯示接口原理,設計實驗電路圖完成以下功能: 1.按1鍵顯示年; 2.按2鍵顯示月日; 3.按3鍵顯示GOOD ;
4.按4鍵數碼管由左到右字符“0”循環顯示。5.自行設計特效顯示功能。題目三
LED七段數碼管數字鐘
設計并完成LED七段數碼管數字鐘電路,數字鐘顯示格式為:HH:MM:SS。要求:具有通過鍵盤能夠調整時、分、秒的功能。題目四
閃爍燈
利用8253和LED燈相結合實現閃爍燈效果。題目五
電子鐘
利用8253定時器設計一個電子鐘,并定義一個啟動鍵。當按下該鍵時電子時鐘從當前設定值開始走時。
附錄:實驗箱功能模塊電路圖
第五篇:2008微機原理課程設計
《微機原理及接口》課程設計任務書
適用專業:05電子信息工程 通信工程
一、本次課程設計的目的和意義
學習和掌握計算機中常用接口電路的應用和設計技術,充分認識理論知識對應用技術的指導性作用,進一步加強理論知識與應用相結合的實踐和鍛煉。通過這次設計實踐能夠進一步加深對專業知識和理論知識學習的認識和理解,使自己的設計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。
二、設計時間和設計題目
(一)、設計時間:一周(二)、設計題目:可從以下題目中任選一題,原則上每班每題不超過5人。每題的設計要求:a、設計出完整的接口電路。B、編寫出全部程序。
1、交通燈控制系統:按照時間控制原則,利用并行接口和定時器,采用時間中斷方式設計一套十字路口的交通燈管理系統,通行時間(或禁止時間)30秒,準備時間3秒,在準備時間里黃燈閃爍3次,閃爍頻率為0.5秒,周而復始。可利用8255、8253、8259等接口電路。
2、溫度測控系統的設計:利用ADC0809采用中斷式設計一個溫度測控系統,在LED數碼顯示器上顯示溫度值,并對溫度進行測試和控制,當檢測溫度到達溫度上限60℃時開風扇(即開啟電動機),低于下限30℃時關閉風扇,LED上的顯示內容為:XX ℃(采用十進制顯示)。
3、函數發生器1的設計:利用D/A設計一個函數發生器,并利用按鍵選擇輸出波形,能分別產生三角波、階梯波(每階梯1V)、正向鋸齒波、負向鋸齒波和方波。并利用按鍵(自行定義)進行輸出波形選擇,同時將當前輸出波形代號顯示在LED上(左邊位):0為方波、1為正向鋸齒波、2為負向鋸齒波、3 為三角波、4為階梯波。
4、函數發生器2的設計:設計一個三角波發生器,可利用鍵盤改變其輸出波形的幅值。例如,可利用1---5這5個數字鍵改變其輸出波形的幅值,當按下1---5數字鍵時使D/A輸出幅值從1V增加到5V。
5、電子音樂播放器:設計要求:利用8253作為音階頻率發生器,應先對一段音樂進行編碼后存入音符表,并建立好音階表(只建立一個8度即可,音階表見附錄),音符長度不能少于60個,連續播放3遍后停止。
6、鍵盤電子樂器:利用并行接口8255作為鍵盤接口,設計一個具有2個八度音階的鍵盤樂器,音階鍵不少于16個,采用掃描方式管理鍵盤,音域范圍自行定義。
7、電子時鐘設計:利用8253定時器設計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當按下該鍵時電子時鐘從當前設定值開始走時。
8、壓力測控系統的設計:對壓力傳感器的信號進行檢測并在LED數碼顯示器上顯示壓力值,當壓力低于30pa時,黃燈閃爍,閃爍周期為1秒。當壓力高于150pa時,紅燈閃爍。LED的顯示內容為P=XXX為測試值。
9、可變輸出頻率方波發生器設計:設計一個輸出方波頻率可利用按鍵改變的方波信號發生器(可以使用D/A也可以直接使用8253產生方波),利用鍵盤選擇方波發生器的輸出頻率并驅動喇叭。輸出頻率=鍵號*100HZ。
10、直流電機速度控制器設計:利用按鍵控制直流電動機的轉速。按鍵定義如下:0 停止,1 1/10轉速,2 2/10轉速…… 9 最高速(D/A輸出滿量程),鍵號每加1,D/A輸出增加0.5V。
11、可任意啟動/停止的電子秒表設計:6位LED數碼顯示,計時單位為1/100秒。利用功能鍵進行啟/停控制。其功能為:上電后計時器清0,當第一次(或奇數次)按下啟/停鍵時開始計數。第2次(或偶數次)按下該鍵時停止計時,再一次按啟/停鍵時清零后重新開始計時……。12簡易計算器系統設計:設計一個可以進行2位數四則運算的計算器,要求:1,用按鍵輸入數和運算符號;2,用LED顯示運算過程和結果(十進制數);3,可以表示出當前的運算類型;4,具有清零和復位功能;5,具有連續運算功能。
13點陣LED顯示系統設計:設計一個點陣式LED顯示系統。要求:1,每次顯示一個文字和圖形;2,每隔一固定時間更變需要顯示的文字或圖形;3,可以現實循環顯示幾個文字或圖形;4,可以根據按鍵來控制顯示的文字的替換時間的長短;5,具有復位功能。
三、設計任務及要求:
1、接口電路設計:根據所選題目和所用的接口電路芯片設計出完整的接口電路,并進行電路連接和調試。
2、程序設計:要求畫出程序框圖,設計出全部程序并給出程序設計說明和程序注釋。
3、設計文件:a、設計圖紙(接口電路原理圖);b、使用或操作說明;c、設計報告:字數約3000~4000字,內容包括:(1)設計題目;(2)系統的主要功能作用及主要技術性能和指標;(3)總體設計方案及組成原理(框圖)或設計說明及技術路線;(4)系統設計:接口電路設計,程序設計(程序框圖和程序清單及注釋)其他有關的理論分析和計算;(5)設計總結:對設計中所存在的問題和不足進行分析和總結,提出解決的方法、措施、建議和對這次設計實踐的認識、收獲和提高。
4、設計要求:
不允許抄襲和復印,否則取消設計成績。
四、設計時間和成績分配:
(一)設計時間:一周(二)設計成績分配:
1、接口電路設計占30%(包括電路圖設計、電路連接和調試通過)。
2、設計文件占30%
3、答辯占40%