




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第1章1.1 IA-32結(jié)構(gòu)微處理器直至P4,有哪幾種?解 80386、80486、Pentium、Pentium Pro、Pentium II、Pentium III、Pentium 4。1.2 80386與8086在功能上有哪些主要區(qū)別?解 從8086到80386,處理器的功能有了質(zhì)的飛躍。體現(xiàn)在1. 從16位寄存器發(fā)展為32位寄存器2. 地址寄存器也發(fā)展為32位。可尋址的地址范圍達(dá)到4G字節(jié),有了巨大的擴(kuò)展。3. 增加了保護(hù)方式。使處理器有了兩種工作方式實(shí)地址方式和保護(hù)虛地址方式。實(shí)地址方式用于與8086兼容;保護(hù)方式才是32位處理器能真正發(fā)揮其完整功能的工作方式。4. 引入了多任務(wù)、任
2、務(wù)切換的概念。5. 引入了四級特權(quán)機(jī)制,引入了調(diào)用門、陷入門、中斷門,使程序能在不同特權(quán)之間切換。6. 引入了存儲管理單元(MMU),使采用80386的操作系統(tǒng)能方便地實(shí)現(xiàn)請頁(每頁為4K字節(jié))虛擬存儲器管理。7. 增加了新指令(主要是保護(hù)方式的指令)1.3 從功能上,80486與80386有哪些主要區(qū)別?解 80486從功能上來說是80386 + 80387 + 片上緩存。1.4 奔騰相對于80486在功能上有什么擴(kuò)展?解 奔騰增加了第二條流水線,實(shí)現(xiàn)每個時鐘執(zhí)行兩條指令;片上的一級緩存容量加倍;寄存器仍是32位,但內(nèi)部數(shù)據(jù)通路是 128 和 256 位以加速內(nèi)部數(shù)據(jù)傳送,且猝發(fā)的外部數(shù)據(jù)總
3、線已經(jīng)增加至 64 位;增加了高級的可編程中斷控制器(Advanced Programmable Interrupt Controller (APIC))以支持多奔騰處理器系統(tǒng)。1.5 P II以上處理器基于什么結(jié)構(gòu)?解 P II是基于P6系列處理器又增加了MMX技術(shù)。1.6 微處理器、微型計(jì)算機(jī)和微型計(jì)算機(jī)系統(tǒng)三者之間有什么不同? 解 把CPU(運(yùn)算器和控制器)用大規(guī)模集成電路技術(shù)做在一個芯片上,即為微處理器。微處理器加上一定數(shù)量的存儲器和外部設(shè)備(或外部設(shè)備的接口)構(gòu)成了微型計(jì)算機(jī)。微型計(jì)算機(jī)與管理、維護(hù)計(jì)算機(jī)硬件以及支持應(yīng)用的軟件相結(jié)合就形成了微型計(jì)算機(jī)系統(tǒng)。1.7 CPU在內(nèi)部結(jié)構(gòu)上由
4、哪幾部分組成?CPU應(yīng)具備哪些主要功能? 解 CPU主要由起運(yùn)算器作用的算術(shù)邏輯單元、起控制器作用的指令寄存器、指令譯碼器、可編程邏輯陣列和標(biāo)志寄存器等一些寄存器組成。其主要功能是進(jìn)行算術(shù)和邏輯運(yùn)算以及控制計(jì)算機(jī)按程序的規(guī)定自動運(yùn)行。 1.8 微型計(jì)算機(jī)采用總線結(jié)構(gòu)有什么優(yōu)點(diǎn)? 解 采用總線結(jié)構(gòu),擴(kuò)大了數(shù)據(jù)傳送的靈活性、減少了連線。而且總線可以標(biāo)準(zhǔn)化。易于兼容和工業(yè)化生產(chǎn)。1.9 數(shù)據(jù)總線和地址總線在結(jié)構(gòu)上有什么不同之處?如果一個系統(tǒng)的數(shù)據(jù)和地址合用一 套總線或者合用部分總線,那么,要靠什么來區(qū)分地址和數(shù)據(jù)?解數(shù)器總線是雙向的(數(shù)據(jù)既可能讀也可能寫),而地址總線是單向的。8086為了減少芯片的
5、引腳數(shù)量,采用數(shù)據(jù)與地址線復(fù)用,既作數(shù)據(jù)總線也作為地址總線。它們主要靠信號的時序來區(qū)分。通常在讀寫數(shù)據(jù)時,總是先輸出地址(指定要讀/寫數(shù)據(jù)的單元),過一段時間再讀或?qū)憯?shù)據(jù)。1.10 控制總線傳輸?shù)男盘柎笾掠心膸追N? 解 主要是區(qū)分讀/寫存儲器還是外部設(shè)備、讀還是寫以及外界輸入的READY和INT等信號1.11 在以下六個題中所用的模型機(jī)的指令系統(tǒng)如表1所示:表1模型機(jī)指令系統(tǒng)指令種類助記符機(jī)器碼功 能數(shù)據(jù)傳送LD A,nLD H,nLD A,HLD H,ALD A,(n)LD (n),ALD A,(H)LD (H),A3E n26 n7C673A n32 n7E77nAnHHAAH以n為地址,
6、把該單元的內(nèi)容送A,即(n)A把A的內(nèi)容送至以n為地址的單元,A(n)以H的內(nèi)容為地址,把該單元的內(nèi)容送A,(H)A把A的內(nèi)容送至以H的內(nèi)容為地址的單元,A(H)加法ADD A,nADD A,HADD A,(H)C6 n8486A+nAA+HAA與以H為地址的單元的內(nèi)容相加,A+(H)A減法SUB nSUB HSUB (H)D 6 n9496A nAA HAA - (H)A邏輯與AND AAND HA7A4AAAAHA邏輯或OR AOR HB7B4AAAAHA異 或XOR AXOR HAFACAAAAHA增 量INC AINC H3C24A+1AH+1H減 量DEC ADEC H3D25A-1
7、AH-1H無條件轉(zhuǎn)移 JP nJP Z,nJP NZ,nJP C,nJP NC,nJP M,nJP P,nC3 nCA nC 2nDA nD2 nFA nF 2 nnPCZ=1,nPCZ=0,nP CCy=1,nPCCy=0,nPCS=1,nPCS=0,nPC停機(jī)指令HALT76停機(jī) 在給定的模型機(jī)中,若有以下程序,分析在程序運(yùn)行后累加器A中的值為多大。若此程序放 在以10H為起始地址的存儲區(qū)內(nèi),畫出此程序在內(nèi)存中的存儲圖。 LD A,20H ADD A,15H LD A,30H ADD A,36H ADD A,1FH HALT 解 程序在存儲器中存放示意圖如圖1-1所示:地址內(nèi)容指令10H3
8、ELD A,20H11H2012HC6ADD A,15H13H1514H3ELD A,30H15H3016HC6ADD A,36H17H3618HC6ADD A,1FH19H1F1AH76HALT圖 1-1 題1.11中程序在存儲器中存放示意圖。這段程序運(yùn)行完后累加器A中的值為A = 30H+36H+1FH = 85H。1.12 要求同題1.6,程序如下: LD A,50H SUB 30H LD A,10H ADD A,36H SUB 1FH HALT 分析程序運(yùn)行后累加器中的值是多少,并且畫出該程序在內(nèi)存中的存儲圖。 解 程序在存儲器中存放示意圖如圖1-2所示:地址內(nèi)容指令10H3ELD A
9、,50H11H5012HD6ADD A,30H13H3014H3ELD A,10H15H1016HC6ADD A,36H17H3618HD6ADD A,1FH19H1F1AH76HALT圖 1-2 題1.12中的程序在存儲器中的存放示意圖這段程序運(yùn)行完后累加器A中的值為A = 10H+36H-1FH = 27H。1.13 在給定的模型機(jī)中,寫出用累加的辦法實(shí)現(xiàn)1515的程序。 解 LDA,0LDH,15LOOP:ADDA,15DECHJPNZ,LOOPHALT1.14 在給定的模型機(jī)中,寫出用累加的辦法實(shí)現(xiàn)2020的程序。 解 模型機(jī)的寄存器是8位,其最大能表示的值為256。而2020 = 4
10、00超出了模型機(jī)中能表示的最大值。故此題在模型機(jī)中無法做。需要用8086中的寄存器對才能實(shí)現(xiàn)。1.15 在模型機(jī)中,用重復(fù)相減的辦法實(shí)現(xiàn)除法的程序如下: LD A,(M2) ;M2為放除數(shù)的存儲單元 LD H,A XOR ALOOP: LD (M3),A ;M3為放商的存儲單元 LD A,(M1) ;M1為放被除數(shù)(或余數(shù))的存儲單元 SUB H JP C,DONE LD (M1),A LD A,(M3) INC A JP LOOPDONE: MALT若此程序放在以20H開始的存儲區(qū),畫出它的存儲圖。 解 程序在存儲器中的存儲圖如圖1-3所示。 地址內(nèi)容指令20H3ALD A,(M2)21HM
11、222H67LD H,A23HAFXOR A24H32LD (M3),A25HM326H3ALD A,(M1)27HM128H94SUB H29HDAJP C,DONE2AH322BH76LD (M1),A2CHM12DH3ALD A, (M3)2EHM32FH3CINC A30HC3JP LOOP31H2432H76HALT圖 1-3 題1.15中的程序在存儲器中存放的示意圖1.16 在模型機(jī)中,把二進(jìn)制數(shù)轉(zhuǎn)換為BCD碼的程序流程圖如圖1-4所示。 圖 1-4 題1.16程序流程圖編寫出該程序。 解 LD H,0;計(jì)數(shù)值H清零 LD A,(Binary);把待轉(zhuǎn)換的二進(jìn)制數(shù)A S1: SUB
12、 A,64H;待轉(zhuǎn)換的二進(jìn)制數(shù)-100JP M,S2;結(jié)果0,轉(zhuǎn)S2 INC H;計(jì)數(shù)值加1 JP S1 S2: ADD A,64H;恢復(fù)剩余的二進(jìn)制數(shù) LD (Binary),A;保存剩余的二進(jìn)制數(shù)LD (BCD3),H;保存百位BCD碼 LD H,0;計(jì)數(shù)值H清零 LD A,( Binary);剩余的二進(jìn)制數(shù)A S3: SUB A,0AH;剩余的二進(jìn)制數(shù)-10 JP M,S4;結(jié)果0,轉(zhuǎn)S4 INC H;計(jì)數(shù)值加1 JP S3 S4:ADD A,0AH;恢復(fù)剩余的二進(jìn)制數(shù)LD (BCD1),A;保存?zhèn)€位BCD碼 LD (BCD2),H;保存十位BCD碼 HALT第2章2.1 8086的基本
13、程序執(zhí)行寄存器是由哪些寄存器組成?解 基本程序執(zhí)行寄存器由以下寄存器組成(1) 通用寄存器。 這八個寄存器能用于存放操作數(shù)和指針。(2) 段寄存器。 這些寄存器最多能保持四個段選擇子。(3) FLAGS (程序狀態(tài)和控制) 寄存器。 FLAGS 寄存器報(bào)告正在抵行的程序的狀態(tài)并允許有限地(應(yīng)用程序級)控制處理器。(4) IP (指令指針) 寄存器。 IP 寄存器包合下一條要挑行的指令的 16-位指針。2.2 8086的存儲器是如何組織的?地址如何形成?解 8086有20條地址引線,它的直接尋址能力為2*201M字節(jié)。所以,在一個8086組成的系統(tǒng)中,可以有多達(dá)1M字節(jié)的存儲器。這1M字節(jié)邏輯上
14、可以組織成一個線性矩陣。地址從00000H到FFFFFH。但是,在8086內(nèi)部的AIU能進(jìn)行16 位運(yùn)算,有關(guān)地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086對地址的運(yùn)算也只能是16位。這就是說,對于8086來說,各種尋址方式,尋找操作數(shù)的范圍最多只能是64K字節(jié)。所以,整個1M字節(jié)存儲器以64K為范圍分為若干段。在尋址一個具體物理單元時,必須要由一個基地址再加上由各種尋址方式確定的的16位偏移量來形成實(shí)際的20位物理地址。段基地址就是由8088中的段寄存器,中的16位數(shù)自動左移4位,然后與16位偏移量相加,形成20位物理地址。2.3 通用寄存器起什么作用?解 通用
15、寄存器主要用于(1) 邏輯和算術(shù)操作的操作數(shù)(2) 用于地址計(jì)算的操作數(shù)(3) 內(nèi)存指針2.4 指令地址如何形成? 解由段寄存器CS確定的段基地址與由指令指針確定的偏移量相加形成指令地址。2.5 如何形成指令中的各種條件碼? 解指令中的條件碼,即標(biāo)志寄存器中的狀態(tài)標(biāo)志。它們主要由算術(shù)和邏輯運(yùn)算指令設(shè)置或清除。指令系統(tǒng)中也有設(shè)置或清除進(jìn)位標(biāo)志的指令。2.6 8086的總線接口部件有哪些功能?請逐一說明。 解總線接口單元(BIU)負(fù)責(zé)與存儲器接口;執(zhí)行單元(EU)執(zhí)行各種操作。BIU主要由段寄存器、指令指針、加法器(形成20位地址)、預(yù)取的指令流隊(duì)列等組成。2.7 8086的總線接口部件由哪幾部分
16、組成?解 8086中的總線接口單元(BIU)負(fù)責(zé)CPU與存儲器之間的信息傳送。具體地說,BIU既負(fù)責(zé)從內(nèi)存的指定部分取出指令,送至指令隊(duì)列中排隊(duì)(8086的指令隊(duì)列有6個字節(jié),而8088的指令隊(duì)列只有4個字節(jié));也負(fù)責(zé)傳送執(zhí)行指令時所需的操作數(shù)。執(zhí)行單元(EU)負(fù)責(zé)執(zhí)行指令規(guī)定的操作。2.8 段寄存器CS1200H,指令指針寄存器IPFF00H,此時,指令的物理地址為多少? 解指令的物理地址 = 12000H + FF00H = 21F00H2.9 8086的執(zhí)行部件有什么功能?由哪幾部分組成?解 8086的執(zhí)行部件負(fù)責(zé)指令的執(zhí)行。它主要由算術(shù)邏輯單元和標(biāo)志寄存器及通用寄存器等部分組成。 2.
17、10 狀態(tài)標(biāo)志和控制標(biāo)志有何不同? 程序中是怎樣利用這兩類標(biāo)志的? 8086的狀態(tài)標(biāo)志和控制標(biāo)志分別有哪些?解 狀態(tài)標(biāo)志反映算術(shù)和邏輯運(yùn)算的結(jié)果,主要用作于各種條件??刂茦?biāo)態(tài)實(shí)現(xiàn)一些控制作用。EFLAGS寄存器有六個狀態(tài)標(biāo)志,它們是 (1) 進(jìn)位標(biāo)志C(Carry Flag) 當(dāng)結(jié)果的最高位(字節(jié)操作時的D7或字操作時的Dl5、雙字操作的D31)產(chǎn)生一個進(jìn)位或借位,則C1,否則為0。這個標(biāo)志主要用于多字節(jié)數(shù)的加、減法運(yùn)算。移位和循環(huán)指令也能夠把存儲器或寄存器中的最高位(左移時)或最低位(右移時)放人標(biāo)志C中。(2) 輔助進(jìn)位標(biāo)志A(Auxitiary Carry Flag)在字節(jié)操作時,則由低
18、半字節(jié)(一個字節(jié)的低4位)向高半字節(jié)有進(jìn)位或借位,則A1,否則為0。這個標(biāo)志用于十進(jìn)制算術(shù)運(yùn)算指令中。 (3) 溢出標(biāo)志O(Overflow Flag) 在算術(shù)運(yùn)算中,帶符號數(shù)的運(yùn)算結(jié)果超出了8位、16位或32位帶符號數(shù)能表達(dá)的范圍,即在字節(jié)運(yùn)算時十127或一128,在字運(yùn)算時+32767或一32768,在雙字運(yùn)算時 +2*31- 1或 -2*31此標(biāo)志置位,否則復(fù)位。一個任選的溢出中斷指令,在溢出情況下能產(chǎn)生中斷。 (4) 符號標(biāo)志S(Sign Flag) 它的值與運(yùn)算結(jié)果的最高位相同。即結(jié)果的最高位(字操作時為D15)為1,則S1;否則,S0。 由于在IA-32結(jié)構(gòu)微處理器中,符號數(shù)是用補(bǔ)
19、碼表示的,所以S表示了結(jié)果的符號,0正,1負(fù)。 (5) 奇偶標(biāo)志P(Parity Flag) 若操作結(jié)果中“1”的個數(shù)為偶數(shù),則P1,否則P0。這個標(biāo)志可用于檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。 (6) 零標(biāo)志Z(Zero fLag) 若運(yùn)算的結(jié)果為0,則Z1,否則Z0 一個控制標(biāo)志,即 方向標(biāo)志D(Direction Flag) 若用指令置D1,則引起串操作指令為自動減量指令,也就是從高地址到低地址或是“從右到左”來處理串;若使D0,則串操作指令就為自動增量指令。 STD 和 CLD 指令分別地設(shè)置和清除 DF 標(biāo)志。第3章3.1 分別指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式。(1)MO
20、V SI,300 (2)MOVCX,DATADI (3)ADDAX,BXSI (4)AND AX,CX (5)MOVBP,AX (6)PUSHF 解 源操作數(shù)為立即尋址,目的操作數(shù)為寄存器尋址。 源操作數(shù)為變址寄存器加位移量尋址,目的操作數(shù)為寄存器尋址。 源操作數(shù)為基址加變址尋址,目的操作數(shù)為寄存器尋址。 源操作數(shù)和目的操作數(shù)都為寄存器尋址。 源操作數(shù)為寄存器尋址,目的操作數(shù)為寄存器間接尋址。(6) 為堆棧操作。3.2 試述指令MOV AX,2000H和MOV AX,DS:2000H的區(qū)別。 解 前一條指令是立即尋址,即把立即數(shù)2000H傳送至寄存器AX。后一條指令是直接尋址,是把數(shù)據(jù)(DS)
21、段中的地址為2000H單元的內(nèi)容傳送至寄存器AX。3.3 寫出以下指令中內(nèi)存操作數(shù)的所在地址。 (1)MOVAL,BX十10 (2)MOVBP十10,AX (3)INCBYTE PTRSI十5 (4)MOVDL,ES:BX十SI (5)MOVBX,BP十DI十2 解 (1) 數(shù)據(jù)段中由BX + 10單元 (2) 堆棧段BP + 10單元 (3) 數(shù)據(jù)段SI + 5字節(jié)單元 (4) 附加段(ES段)BX + SI單元 (5) 堆棧段BP + DI + 2單元。3.4 判斷下列指令書寫是否正確: (1)MOV AL,BX (2)MOV AL,CL (3)INCBX (4)MOV 5,AL (5)M
22、OVBX,SI(6)MOV BL,F(xiàn)5H (7)MOV DX,2000H(8)POPCS(9)PUSH CS 解 (1) 不正確,AL與BX數(shù)據(jù)寬度不同 (2) 正確 (3) 不明確是增量字節(jié)還是字 (4) 不正確,立即數(shù)不能作為目的操作數(shù) (5) 不明確要傳送的是字節(jié)還是字(應(yīng)是SI而不表S1) (6) 正確。但十六進(jìn)制數(shù)F5H應(yīng)寫為0F5H (7) 正確 (8) 不正確,CS不能作為POP指令的操作數(shù) (9) 不正確,CS不能作為PUSH指令的操作數(shù)3.5 設(shè)堆棧指針SP的初值為1000H,AX2000H,BX3000H,試問: (1)執(zhí)行指令PUSHAX后SP? (2)再執(zhí)行PUSHBX
23、及POPAX后SP?、AX?、BX? 解 SP=0FFEH SP=0FFEH、AX=3000H、BX=3000H3.6 要想完成把3000H送2000H中,用指令: MOV2000H,3000H是否正確?如果不正確,應(yīng)用什么方法? 解 不正確。正確的方法是:MOV AL,3000HMOV 2000H,AL3.7 假如想從200中減去AL中的內(nèi)容,用SUB 200,AL是否正確?如果不正確,應(yīng)用什么方法? 解 不正確。 正確的方法是: MOV BL,200 SUB BL,AL 3.8 用兩種方法寫出從80H端口讀入信息的指令。再用兩種方法寫出從40H口輸出100H的指 令。 解 (1) IN A
24、L,80H (2) MOV DX,80H IN AL,DX (3) MOV AL,100H OUT 40H,AL (4) MOV AL,100H MOV DX,40H OUT DX,AL3.9 假如:AL20H,BL10H,當(dāng)執(zhí)行CMP AL,BL后,問:(1) AL,BL中內(nèi)容是兩個無符號數(shù),比較結(jié)果如何?影響哪幾個標(biāo)志位?(2) AL、BL中內(nèi)容是兩個有符號數(shù),結(jié)果又如何,影響哪幾個標(biāo)志位? 解 AL=20H,BL=10H,O=0,S=0,Z=0,A=0,P=0,C=0。 因?yàn)閮蓚€都是符號正數(shù),其結(jié)果同。3.10 若要使AL10,有哪幾種方法,編出各自的程序段。 解 (1) 使用乘法指令:
25、 MOV BL,10 MUL BL (2) 使用移位指令: SHL AL,1 MOV BL,AL SHL AL,2 ADD AL,BL (3) 使用加法指令: ADD AL,AL MOV BL,AL ADD AL,AL ADD AL,AL ADD AL,BL3.11 8086匯編語言指令的尋址方式有哪幾類? 用哪一種尋址方式的指令執(zhí)行速度最快? 解 尋址方式分為:立即數(shù)尋址方式、寄存器操作數(shù)尋址方式和存儲器操作數(shù)尋址方式。其中寄存器操作數(shù)尋址方式的指令執(zhí)行速度最快。3.12 直接尋址方式中,一般只指出操作數(shù)的偏移地址,那么,段地址如何確定?如果要用某個段寄存器指出段地址,指令中應(yīng)如何表示? 解
26、 默認(rèn)的數(shù)據(jù)訪問,操作數(shù)在DS段;堆棧操作在SS段;串操作源操作數(shù)(SI)在DS段,目的操作數(shù)(DI)在ES段;用BP作指針在SS段。如果要顯式指定段地址,則在操作數(shù)中規(guī)定段寄存器。例如: MOV AX,ES:(BX+10H)3.13 在寄存器間接尋址方式中,如果指令中沒有具體指明段寄存器,那么,段地址如何確定? 解 在寄存器間接尋址方式中,如果指令中沒有具體指明段寄存器,段地址是隱含約定的,也就是隱含的選擇段寄存器。如操作類型為指令,則指定代碼段寄存器DS,如操作類型為堆棧操作,則指定堆棧段寄存器SS,如表2中所示: 表 2 段寄存器的約定操作類型約定段寄存器可修改的段寄存器邏輯地址指令CS
27、無IP堆棧操作SS無SP源串地址DSCS、ES、SSSI目的串地址ES無DIBP用作基止寄存器SSCS、DS、ES有效地址通用數(shù)據(jù)讀寫DSCS、ES、SS有效地址 當(dāng)需要超越約定時,通常用段替代前綴加冒號“:”來表示段超越,它允許程序設(shè)計(jì)者偏離任何約定的段。例如:MOV ES:EBX, EAX這時數(shù)據(jù)將從寄存器EAX傳送至附加段中由EBX尋址的存儲單元,而不是傳送到數(shù)據(jù)段中。3.14 用寄存器間接尋址方式時,BX、BP、SI、DI分別針對什么情況來使用?這四個寄存器組合間接尋址時,地址是怎樣計(jì)算的?舉例進(jìn)行說明。 解 在寄存器間接尋址情況下,BX和BP作為間址寄存器使用,而SI、DI作為變址寄
28、存器使用。除BP間址默認(rèn)的段為堆棧段,其地的都默認(rèn)為數(shù)據(jù)段。它們都可以單獨(dú)使用,或加上偏移量或組合使用。如:BX + nBP + n SI + nDI + nBX + SI + nBX + DI + nBP + SI + nBP + DI + n3.15 設(shè)DS=2100H,SS5200H,BX1400H,BP6200H,說明下面兩條指令所進(jìn)行的具體操作: MOV BYTE PTRBP,200 MOV WORD PTRBX,2000 解 前一條指令是把立即數(shù)(應(yīng)是字節(jié))200,傳送至堆棧段(BP的默認(rèn)段)偏移量由BP規(guī)定的字節(jié)單元(地址為:52000H + 6200H = 58200H )。
29、第二條指令是把立即數(shù)2000,傳送至數(shù)據(jù)段(BX的默認(rèn)段)偏移量由BX規(guī)定的字單元(地址為:21000H + 1400H = 22400H)。3.16 使用堆棧操作指令時要注意什么問題?傳送指令和交換指令在涉及內(nèi)存操作數(shù)時分別要注意什么問題? 解 使用堆棧指令可以把內(nèi)存單元作為一個操作數(shù)(從內(nèi)存到內(nèi)存)。但堆棧固定在堆棧段且只能由SP指向。且堆棧操作要修改堆棧指針。MOV指令不能實(shí)現(xiàn)內(nèi)存單元間的數(shù)據(jù)傳送。XCHG是交換,有一個操作數(shù)必須是寄存器。3.17 下面這些指令中哪些是正確的?哪些是錯誤的?如是錯誤的,請說明原因。 XCHG CS,AX MOV BX,1000 XCHG BX,IP PU
30、SH CS POP CS IN BX,DX MOV BYTEBX,1000 MOV CS,1000 解(1) 錯誤,CS不能交換(2) 錯誤,MOV指令不能在內(nèi)存間傳送(3) 錯誤,IP不能交換(4) 錯誤,CS可能作為PUSH指令的操作數(shù)(5) 錯誤,CS可能作為POP指令的操作數(shù)(6) 錯誤,IN指令的目的操作數(shù)是累加器 (7) 錯誤,目的操作數(shù)是字節(jié)單元 (8) 錯誤,CS不能作為MOV指令的目的操作數(shù)3.18 以下是格雷碼的編碼表 0 0000 1 0001 2 0011 3 0010 4 0110 5 0111 6 0101 7 0100 8 1100 9 1101 請用換碼指令和其
31、他指令設(shè)計(jì)一個程序段,實(shí)現(xiàn)格雷碼往ASCII碼的轉(zhuǎn)換。解MOVBX,TABLEMOVSI,ASCII_TABMOVAL,0MOVCX,10TRAN:XLATTABLEMOVDL,ALADDDL,30HMOVSI,DLINCALLOOPTRAN3.19 用乘法指令時,特別要注意先判斷用有符號數(shù)乘法指令還是用無符號數(shù)乘法指令,這是為什么?解 因?yàn)橛蟹枖?shù)和無符號數(shù),數(shù)的乘法是一樣的。但結(jié)果的符號取決于兩個操作數(shù)的符號。3.20 字節(jié)擴(kuò)展指令和字?jǐn)U展指令用在什么場合?舉例說明。 解 主要用于字節(jié)相除和字相除之前,把被除數(shù)擴(kuò)展為兩倍寬度的操作數(shù)。3.21 什么叫BCD碼?什么叫組合的BCD碼?什么叫非
32、組合的BCD碼?8086匯編語言在對BCD碼進(jìn)行加、減、乘、除運(yùn)算時,采用什么方法?解 BCD碼為十進(jìn)制編碼的二進(jìn)制數(shù)。組合的BCD數(shù)是把兩位BCD加在一個字節(jié)中,高位的在高四位。非組合的BCD碼是把一位BCD數(shù)放在一個字節(jié)的低四位,高四位為0。8086在BCD加、減和乘以后用BCD調(diào)整指令把結(jié)果調(diào)整為正確的BCD數(shù)。在BCD除法前先用BCD調(diào)整指令再做除法。3.22 用普通運(yùn)算指令執(zhí)行BCD碼運(yùn)算時,為什么要進(jìn)行十進(jìn)制調(diào)整?具體講,在進(jìn)行BCD碼的加、減、乘、除運(yùn)算時,程序段的什么位置必須加上十進(jìn)制調(diào)整指令?解 因?yàn)?086指令把操作數(shù)作為二進(jìn)制數(shù)進(jìn)行二進(jìn)制運(yùn)算,要得到正確的BCD結(jié)果,需要
33、進(jìn)行調(diào)整。在加、減、乘法指令之后加上BCD調(diào)整指令,而在除法指令之前先用BCD調(diào)整指令再用除法指令。3.23 普通移位指令和循環(huán)移位指令(帶CF的和不帶CF的兩類)在執(zhí)行操作時,有什么差別?在編制乘除法程序時,為什么常用移位指令來代替乘除法指令?試編寫一個程序段,實(shí)現(xiàn)將BX中的數(shù)乘以10,結(jié)果仍放在BX中。解 這兩種指令的區(qū)別在于是否把標(biāo)志位(CF)的值放入循環(huán)中。左移一位相當(dāng)于乘2,右移一位相當(dāng)于除2。故左移和右移可實(shí)現(xiàn)乘或除2的冪。而移位指令比乘法和除法指令要快得多。要實(shí)現(xiàn)BX中的數(shù)乘10,可以用乘(2 + 8)實(shí)現(xiàn),乘2即左移一位,乘8即左移三位,把左移一位和左移三位的數(shù)相加就行。SHL
34、BX,1MOVAX,BXSHLBX,2ADDBX,AX3.24 使用串操作指令時,特別要注意和SI、DI這兩個寄存器及方向標(biāo)志DF密切相關(guān)。請具體就指令MOVSBMOVSW、CMPSBCMPSW、SCASBSCASW、LODSBLODSW列表說明和SI、DI及DF的關(guān)系。 解 指令實(shí)現(xiàn)操作DFSIDIMOVSBDS:SIES:DI0+1+11-1-1MOVSWDS:SIES:DI0+2+21-2-2CMPSBDS:SI-ES:DI0+1+11-1-1CMPSWDS:SI-ES:DI0+2+21-2-2SCASBAL -ES:DI0+1+11-1-1SCASWAX-ES:DI0+2+21-2-2
35、LODSBDS:SIAL0+1+11-1-1LODSWDS:SIAX0+2+21-2-23.25 用串操作指令設(shè)計(jì)實(shí)現(xiàn)如下功能的程序段:首先將100H個數(shù)從2170H處搬到1000H處,然后,從中檢索相等于AL中字符的單元,并將此單元值換成空格符。 解MOVSI,2170HMOVDI,1000HMOVCX,100HREPMOVSDI,SINEXT:SCASBJZN1LOOPNEXTN1:DECDIMOVDI,20HJMPNEXT3.26 在使用條件轉(zhuǎn)移指令時,特別要注意它們均為相對轉(zhuǎn)移指令,請解釋“相對轉(zhuǎn)移”的含義。如果要往較遠(yuǎn)的地方進(jìn)行條件轉(zhuǎn)移,那么,程序中應(yīng)該怎樣設(shè)置?解 相對轉(zhuǎn)移即為相對
36、于指令指針的轉(zhuǎn)移。通常,偏移量是8位數(shù),這是短(short)轉(zhuǎn)移,它可以規(guī)定16位偏移量,這就是段內(nèi)(near)轉(zhuǎn)移。3.27 帶參數(shù)的返回指令用在什么場合?設(shè)棧頂?shù)刂窞?000H,當(dāng)執(zhí)行RET 0006后,SP的值為多少?解 帶參數(shù)的返回指令用于跳過在調(diào)用時通過堆棧傳送的參數(shù)。執(zhí)行RET 0006指令后,SP = 2FF6H。3.28 在執(zhí)行中斷指令時,堆棧的內(nèi)容有什么變化?中斷處理子程序的入口地址是怎樣得到的? 解 在執(zhí)行中斷指令后,處理器先推入標(biāo)志寄存器,再推入斷點(diǎn)處的指令指針和CS值。中斷處理程序的入口地址由中斷向量和中斷向量(描述符)表得到。3.29 在執(zhí)行中斷返回指令I(lǐng)RET和普通
37、子程序返回指令RET時,具體操作內(nèi)容有什么不同? 解 IRET除了彈出中斷要返回的指令的地址(CS和IP)外,還要恢復(fù)中斷前的標(biāo)志寄存器。3.30 設(shè)當(dāng)前SS2010H,SPFEOOH,BX3457H,計(jì)算當(dāng)前棧頂?shù)刂窞槎嗌?當(dāng)執(zhí)行PUSH BX指令后,棧頂?shù)刂泛蜅m?個字節(jié)的內(nèi)容分別是什么?解 當(dāng)前的棧頂為:20100H + FE00H = 2FF00H。執(zhí)行PUSH BX后,棧頂為2FF00H 2 = 2FDFE,而2FF00H中的內(nèi)容為57H,2FDFF中的內(nèi)容為34H。第4章4.1 在下列程序運(yùn)行后,給相應(yīng)的寄存器及存儲單元填入運(yùn)行的結(jié)果: MOV AL,10H MOV CX,1000
38、H MOV BX,2000H MOV CX,AL XCHG CX,BX MOV DH,BX MOV DL,01H XCHG CX,BX MOV BX,DL HLT解 寄存器及存儲單元的內(nèi)容:AL = 10HBL = 00HBH = 20HCL = 00HCH = 10HDL = 01HDH = 10H(1000H) = 10H(2000H) = 01H4.2 要求同題4.1,程序如下: MOV AL,50H MOV BP,1000H MOV BX,2000H MOV BP,AL MOV DH,20H MOV BX,DH MOV DL,01H MOV DL,BX MOV CX,3000H HLT
39、解 寄存器及存儲單元的內(nèi)容:AL = 50HBL = 00HBH = 20HCL = 00HCH = 30HDL = 20HDH = 20HBP = 1000H(1000H) = 50H(2000H) = 20H 4.3 若在自1000H單元開始有一個100個數(shù)的數(shù)據(jù)塊,要把它傳送到自2000H開始的存儲區(qū)中去, 用以下三種方法,分別編制程序:(1) 不用數(shù)據(jù)塊傳送指令;(2) 用單個傳送的數(shù)據(jù)塊傳送指令;(3) 用數(shù)據(jù)塊成組傳送指令。解(1)LEASI,1000HLEADI,2000HMOVCX,100L1:MOVAX,SIMOVDI,AXLOOPL1HLT(2)LEASI,1000HLEA
40、DI,2000HMOVCX,100CLDL1:MOVSBLOOPL1HLT(3) LEASI,1000HLEADI,2000HMOVCX,100CLDREPMOVSBHLT4.4 利用變址寄存器,編一個程序,把自1000H單元開始的100個數(shù)傳送到自1070H開始的儲存區(qū)中去。解LEASI,1000HLEADI,1070HMOVCX,100CLDREPMOVSBHLT4.5 要求同4.4,源地址為2050H,目的地址為2000H,數(shù)據(jù)塊長度為50。解LEASI,2050HLEADI,2000HMOVCX,50STDREPMOVSBHLT4.6 編一個程序,把自1000H單元開始的100個數(shù)傳送
41、至1050H開始的存儲區(qū)中(注意:數(shù)據(jù)區(qū)有重疊)。解LEASI,1000HLEADI,1050HADDSI,63HADDDI,63HMOVCX,100STDREPMOVSBHLT4.7 在自0500H單元開始,存有100個數(shù)。要求把它傳送到1000H開始的存儲區(qū)中,但在傳送過程中要檢查數(shù)的值,遇到第一個零就停止傳送。解 LEASI,0500HLEADI,1000HMOVCX,100N1:MOVAL,SITESTAL,0JZ,N2MOVDI,ALINCSIINCDILOOPN1N2:HLT4.8 條件同題4.7,但在傳送過程中檢查數(shù)的值,零不傳送,不是零則傳送到目的區(qū)。解 LEASI,0500H
42、LEADI,1000HMOVCX,100N1:MOVAL,SITESTAL,0JZN2MOVDI,ALN2:INCSIINCDILOOPN1HLT4.9 把在題4.7中指定的數(shù)據(jù)塊中的正數(shù),傳送到自1000H開始的存儲區(qū)。解 LEASI,0500HLEADI,1000HMOVCX,100N1:MOVAL,SITESTAL,0JSN2MOVDI,ALN2:INCSIINCDILOOPN1HLT4.10 把在題4.7中指定的數(shù)據(jù)塊中的正數(shù),傳送到自1000H開始的存儲區(qū);而把其中的負(fù)數(shù),傳送到自1100H開始的存儲區(qū)。且分別統(tǒng)計(jì)正數(shù)和負(fù)數(shù)的個數(shù),分別存入1200H和1201H單元中 。解 LEAS
43、I,0500HLEADI,1000HLEABX,1100HMOVCX,100MOVDX,0N1:MOVAL,SITESTAL,0JSN2MOVDI,ALINCDLINCSIINCDIJMPN3N2:MOVBX,ALINCDHINCSIINCBXN3:LOOPN1LEABX,1200HMOVBX,DLMOVBX+1,DHHLT4.11 自0500H單元開始,有10個無符號數(shù),編一個程序求這10個數(shù)的和(用8位數(shù)運(yùn)算指令),把和放到050A及050B單元中(和用兩個字節(jié)表示),且高位在050B單元。解LEABX,0500HMOVAX,0MOVCL,10N1:MOVDL,BXADDAL,DLADCAH,0INCBXDECCLJNZN1MOV050AH,AX4.12 自0200H單元開始,有100個無符號數(shù),編一個程序求這100個數(shù)的和(用8位數(shù)運(yùn)算指令),把和放在0264H和0265H單元(和用兩字節(jié)表示),且高位在0265H單元。解LEABX,0200HMOVAX,0MOVCL,100N1:MOVDL,BXADDAL,DLADCAH,0INCBXDECCLJNZN1MOV0264H,AX4.13 題同4.12,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人優(yōu)點(diǎn)總結(jié)20篇
- 下半年個人工作計(jì)劃
- 中醫(yī)康復(fù)治療技術(shù)模擬練習(xí)題(含參考答案)
- 游泳救生員初級題庫與參考答案
- 推拿治療學(xué)試題含答案
- 一通三防工作總結(jié)
- 買房同中介合同范本
- 口罩購銷合同范本模板
- 出售混凝土檁條合同范本
- 住宅小區(qū)車位轉(zhuǎn)讓合同范本
- 現(xiàn)場簽證流程圖
- (新插圖)人教版四年級下冊數(shù)學(xué) 第2招 巧算24點(diǎn) 期末復(fù)習(xí)課件
- 駕駛員違規(guī)違章安全教育談話記錄表
- 2023年10月山東青島開放大學(xué)招考聘用工作人員(第二批)筆試歷年高頻考點(diǎn)試題含答案帶詳解
- 小兒抽動癥中西醫(yī)治療
- 一年級下冊《綜合實(shí)踐活動》全冊教案【完整版】
- 人教版小學(xué)一年級英語課本上冊課件
- 電子對抗原理與技術(shù)PPT完整全套教學(xué)課件
- 烹飪美學(xué)PPT完整全套教學(xué)課件
- 人美版初中美術(shù)知識點(diǎn)匯總九年級全冊
- 公路工程崗位安全操作規(guī)程
評論
0/150
提交評論