版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微型計(jì)算機(jī)原理習(xí)題參考答案CH01微型計(jì)算機(jī)概述習(xí)題與思考題1微型計(jì)算機(jī)由哪些部件組成?各部件的主要功能是什么?解答:算術(shù)邏輯部件(ALU)微處理器累加器、寄存器(CPU)控制器系統(tǒng)總線(xiàn):AB、CB、DB(功能:為CPU和其他部件之間提供數(shù)據(jù)、地址微型計(jì)算機(jī)和控制信息的傳輸通道)微機(jī)系統(tǒng)輸入/輸出(I/O)接口:串/并行接口等(功能:使外部設(shè)備和微型機(jī)相連)存儲(chǔ)器:只讀存儲(chǔ)器(ROM)、隨機(jī)存儲(chǔ)器(RAM)(功能:用來(lái)存儲(chǔ)信息)操作系統(tǒng)(OS)系統(tǒng)軟件系統(tǒng)實(shí)用程序:匯編、編譯、編輯、調(diào)試程序等外圍設(shè)備:打印機(jī)、鍵盤(pán)、CRT、磁盤(pán)控制器等(注:CPU的功能可以進(jìn)行算術(shù)和邏輯運(yùn)算; 可保存少量數(shù)據(jù)
2、; 能對(duì)指令進(jìn)行譯碼并執(zhí)行規(guī)定的動(dòng)作; 能和存儲(chǔ)器、外設(shè)交換數(shù)據(jù); 提供整修系統(tǒng)所需要的定時(shí)和控制; 可以響應(yīng)其他部件發(fā)來(lái)的中斷請(qǐng)示。)2 8086/8088 CPU 由哪兩部分組成?它們的主要功能各是什么?是如何協(xié)調(diào)工作的?解答:總線(xiàn)接口部件(BIU):負(fù)責(zé)與存儲(chǔ)器、I/O端口傳送數(shù)據(jù)微處理器(CPU)執(zhí)行部件(EU):負(fù)責(zé)指令的執(zhí)行協(xié)調(diào)工作過(guò)程:總線(xiàn)接口部件和執(zhí)行部件并不是同步工作的,它們按以下流水線(xiàn)技術(shù)原則來(lái)協(xié)調(diào)管理: 每當(dāng) 8086 的指令隊(duì)列中有兩個(gè)空字節(jié),或者 8088 的指令隊(duì)列中有一個(gè)空字節(jié)時(shí),總線(xiàn)接口部件就會(huì)自動(dòng)把指令取到指令隊(duì)列中。 每當(dāng)執(zhí)行部件準(zhǔn)備執(zhí)行一條指令時(shí),它會(huì)從總
3、線(xiàn)接口部件的指令隊(duì)列前部取出指令的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過(guò)程中,如果必須訪(fǎng)問(wèn)存儲(chǔ)器或者輸入/輸出設(shè)備,那么,執(zhí)行部件就會(huì)請(qǐng)求總線(xiàn)接口部件進(jìn)入總線(xiàn)周期,完成訪(fǎng)問(wèn)內(nèi)存或者輸入/輸出端口的操作;如果此時(shí)總線(xiàn)接口部件正好處于空閑狀態(tài),那么,會(huì)立即響應(yīng)執(zhí)行部件的總線(xiàn)請(qǐng)求。但有時(shí)會(huì)遇到這樣的情況,執(zhí)行部件請(qǐng)求總線(xiàn)接口部件訪(fǎng)問(wèn)總線(xiàn)時(shí),總線(xiàn)接口部件正在將某個(gè)指令字節(jié)取到指令隊(duì)列中,此時(shí)總線(xiàn)接口部件將首先完成這個(gè)取指令的操作,然后再去響應(yīng)執(zhí)行部件發(fā)出的訪(fǎng)問(wèn)總線(xiàn)的請(qǐng)求。 當(dāng)指令隊(duì)列已滿(mǎn),而且執(zhí)行部件又沒(méi)有總線(xiàn)訪(fǎng)問(wèn)請(qǐng)求時(shí),總線(xiàn)接口部件便進(jìn)入空閑狀態(tài)。 在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),
4、由于程序執(zhí)行的順序發(fā)生了改變,不再是順序執(zhí)行下面一條指令,這時(shí),指令隊(duì)列中已經(jīng)按順序裝入的字節(jié)就沒(méi)用了。遇到這種情況,指令隊(duì)列中的原有內(nèi)容將被自動(dòng)消除,總線(xiàn)接口部件會(huì)按轉(zhuǎn)移位置往指令隊(duì)列裝入另一個(gè)程序段中的指令。3 8086/8088 CPU 中有哪些寄存器?各有什么用途?標(biāo)志寄存器 F 有哪些標(biāo)志位?各在什么情況下置位?解答:寄存器功能數(shù) 據(jù)寄存器AX字乘法,字除法,字 I/OBX查表轉(zhuǎn)換CX串操作,循環(huán)次數(shù)DX字節(jié)相乘,字節(jié)相除,間接 I/O變 址寄存器SI源變址寄存器,用于指令的變址尋址DI目的變址寄存器,用于指令的變址尋址指 針寄存器SP堆棧指針寄存器,與 SS 一起來(lái)確定堆棧在內(nèi)存中
5、的位置BP基數(shù)指針寄存器,用于存放基地址,以使 8086/8088 尋址更加靈活控 制寄存器IP控制 CPU 的指令執(zhí)行順序PSW用來(lái)存放 8086/8088CPU 在工作過(guò)程中的狀態(tài)段寄存器CS控制程序區(qū)DS控制數(shù)據(jù)區(qū)SS控制堆棧區(qū)ES控制數(shù)據(jù)區(qū)標(biāo)志寄存器 F 的標(biāo)志位:控制標(biāo)志:OF、DF、IF、TF;狀態(tài)標(biāo)志:SF、ZF、AF、PF、CF。標(biāo)志寄存器 F 的各標(biāo)志位置位情況:· CF:進(jìn)位標(biāo)志位。做加法時(shí)出現(xiàn)進(jìn)位或做減法時(shí)出現(xiàn)借位,該標(biāo)志位置 1;否則清 0。·PF:奇偶標(biāo)志位。當(dāng)結(jié)果的低 8 位中 l 的個(gè)數(shù)為偶數(shù)時(shí),該標(biāo)志位置 1;否則清 0。·AF:半
6、進(jìn)位標(biāo)志位。在加法時(shí),當(dāng)位 3 需向位 4 進(jìn)位,或在減法時(shí)位 3 需向位 4 借位時(shí),該標(biāo)志位就置 1;否則清 0。該標(biāo)志位通常用于對(duì) BCD 算術(shù)運(yùn)算結(jié)果的調(diào)整。·ZF:零標(biāo)志位。運(yùn)算結(jié)果各位都為 0 時(shí),該標(biāo)志位置 1,否則清 0。·SF:符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果的最高位為 1 時(shí),該標(biāo)志位置 1,否則清 0。·TF:陷阱標(biāo)志位(單步標(biāo)志位)。當(dāng)該位置 1 時(shí),將使 8086/8088 進(jìn)入單步指令工作方式。在每條指令開(kāi)始執(zhí)行以前,CPU 總是先測(cè)試 TF 位是否為 1,如果為 1,則在本指令執(zhí)行后將產(chǎn)生陷阱中斷,從而執(zhí)行陷阱中斷處理程序。該程序的首地址由內(nèi)存
7、的00004H00007H 4 個(gè)單元提供。該標(biāo)志通常用于程序的調(diào)試。例如,在系統(tǒng)調(diào)試軟件DEBUG 中的 T 命令,就是利用它來(lái)進(jìn)行程序的單步跟蹤的。·IF:中斷允許標(biāo)志位。如果該位置 1,則處理器可以響應(yīng)可屏蔽中斷,否則就不能響應(yīng)可屏蔽中斷。·DF:方向標(biāo)志位。當(dāng)該位置 1 時(shí),串操作指令為自動(dòng)減量指令,即從高地址到低地址處理字符串;否則串操作指令為自動(dòng)增量指令。·OF:溢出標(biāo)志位。在算術(shù)運(yùn)算中,帶符號(hào)的數(shù)的運(yùn)算結(jié)果超出了 8 位或 16 位帶符號(hào)數(shù)所能表達(dá)的范圍時(shí),即字節(jié)運(yùn)算大于十 127 或小于128 時(shí),字運(yùn)算大于十 32767 或小于32768 時(shí),該
8、標(biāo)志位置位。4 8086/8088 系統(tǒng)中存儲(chǔ)器的邏輯地址和物理地址之間有什么關(guān)系?表示的范圍各為多少?解答:邏輯地址:段地址:偏移地址物理地址:也稱(chēng)為絕對(duì)地址,由段基址和偏移量?jī)刹糠謽?gòu)成。物理地址與系統(tǒng)中的存儲(chǔ)空間是一一對(duì)應(yīng)的。邏輯地址與物理地址兩者之間的關(guān)系為:物理地址段地址×16+偏移地址每個(gè)邏輯段的地址范圍:0000:0000HFFFFH;0001:0000HFFFFH;FFFF: 0000HFFFFH;共有 232 個(gè)地址,但其中有許多地址是重疊的(體現(xiàn)出邏輯地址的優(yōu)勢(shì),可根據(jù)需要方便地寫(xiě)出邏輯地址,又不影響其準(zhǔn)確的物理地址,邏輯地址與物理地址的關(guān)系為多對(duì)一的關(guān)系)。物理地
9、址的地址范圍:00000HFFFFFH。5已知當(dāng)前數(shù)據(jù)段位于存儲(chǔ)器的 A1000H 到 B0FFFH 范圍內(nèi),問(wèn) DS=?解答:A1000HA100:0000以 A100H 為段地址的 64K 物理地址的范圍是:偏移地址為0000HFFFFH,即 A100:0000HA100:FFFFHA1000H0000HA1000H0FFFFHA1000HB0FFFH,DSA100H。6某程序數(shù)據(jù)段中存有兩個(gè)字?jǐn)?shù)據(jù) 1234H 和 5A6BH,若已知 DS=5AA0H,它們的偏移地址分別為 245AH 和 3245H,試畫(huà)出它們?cè)诖鎯?chǔ)器中的存放情況解答:存放情況如圖所示(左右兩側(cè)的寫(xiě)法均可):·
10、········34H12H6BH5AH5AA0:0000H5AA00H···5AA0:245AH5CE5AH5AA0:245BH5CE5BH··5AA0:· 3245H5DC45H5AA0:3246H5DC46H·· ·7 8086/8088CPU 有哪兩種工作模式,它們各有什么特點(diǎn)?解答:為了適應(yīng)各種不同的應(yīng)用場(chǎng)合,8086/8088CPU 芯片可工作在兩種不同的工作模式下,即最小模式與最大模式。所謂最小模式,就是系統(tǒng)中只
11、有一個(gè) 8086/8088 微處理器,在這種情況下,所有的總線(xiàn)控制信號(hào),都是直接由這片 8086/8088CPU 產(chǎn)生的,系統(tǒng)中的總線(xiàn)控制邏輯電路被減到最少。該模式適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。最大模式是相對(duì)于最小模式而言的,最大模式用在中、大規(guī)模的微機(jī)應(yīng)用系統(tǒng)中。在最大模式下,系統(tǒng)中至少包含兩個(gè)微處理器,其中一個(gè)為主處理器,即 8086/8088CPU,其它的微處理器稱(chēng)之為協(xié)處理器,它們是協(xié)助主處理器工作的。8若 8086CPU 工作于最小模式,試指出當(dāng) CPU 完成將 AH 的內(nèi)容送到物理地址為 91001H 的存儲(chǔ)單元操作時(shí),以下哪些信號(hào)應(yīng)為低電平:M/ IO、RD 、WR 、BHE /
12、S7、DT/ R 。若 CPU 完成的是將物理地址 91000H 單元的內(nèi)容送到 AL 中,則上述哪些信號(hào)應(yīng)為低電平。若 CPU 為 8088 呢?解答:8086CPU存儲(chǔ)器寫(xiě)(AH9100H0001H)時(shí)為低電平的信號(hào):WR 、BHE/S7 。存儲(chǔ)器讀(9100H0000HAL)時(shí)為低電平的信號(hào):RD 、DT/ R 。8088CPU存儲(chǔ)器寫(xiě)(AH9100H0001H)時(shí)為低電平的信號(hào):WR 、SS0(BHE/S7) 、M/ IO。存儲(chǔ)器讀(9100H0000HAL)時(shí)為低電平的信號(hào):M/ IO、RD 、DT/ R 。9什么是指令周期?什么是總線(xiàn)周期?什么是時(shí)鐘周期?它們之間的關(guān)系如何?解答:
13、指令周期-CPU 執(zhí)行一條指令所需要的時(shí)間稱(chēng)為一個(gè)指令周期(Instruction Cycle)??偩€(xiàn)周期-每當(dāng) CPU 要從存儲(chǔ)器或 I/O 端口存取一個(gè)字節(jié)稱(chēng)為一次總線(xiàn)操作,相應(yīng)于某個(gè)總線(xiàn)操作的時(shí)間即為一個(gè)總線(xiàn)周期(BUS Cycle)。時(shí)鐘周期-時(shí)鐘周期是 CPU 處理動(dòng)作的最小時(shí)間單位,其值等于系統(tǒng)時(shí)鐘頻率的倒數(shù),時(shí)鐘周期又稱(chēng)為 T 狀態(tài)。它們之間的關(guān)系:若干個(gè)總線(xiàn)周期構(gòu)成一個(gè)指令周期,一個(gè)基本的總線(xiàn)周期由 4 個(gè) T 組成,我們分別稱(chēng)為 T1T4,在每個(gè) T 狀態(tài)下,CPU 完成不同的動(dòng)作。10 8086/8088 CPU 有哪些基本操作?基本的讀/寫(xiě)總線(xiàn)周期各包含多少個(gè)時(shí)鐘周期?什
14、么情況下需要插入 Tw 周期?應(yīng)插入多少個(gè) Tw 取決于什么因素?解答:8086/8088CPU 最小模式下的典型時(shí)序有:存儲(chǔ)器讀寫(xiě);輸入輸出;中斷響應(yīng);系統(tǒng)復(fù)位及總線(xiàn)占用操作。一個(gè)基本的 CPU 總線(xiàn)周期一般包含四個(gè)狀態(tài)T1、T2、T3、T4 ,即四個(gè)時(shí)鐘周期;在存儲(chǔ)器和外設(shè)速度較慢時(shí),要在T3之后插入 1 個(gè)或幾個(gè)等待狀態(tài)Tw;應(yīng)插入多少個(gè) Tw 取決于 READY 信號(hào)的狀態(tài),CPU 沒(méi)有在 T3 狀態(tài)的一開(kāi)始采樣到READY 信號(hào)為低電平,就會(huì)在T3和T4之間插入等待狀態(tài)Tw,直到采樣到 READY 信號(hào)為高電平。11試說(shuō)明 8086/8088 工作在最大和最小模式下系統(tǒng)基本配置的差異
15、。8086/8088 微機(jī)系統(tǒng)中為什么一定要有地址鎖存器?需要鎖存哪些信息?解答:最大模式配置和最小模式配置有一個(gè)主要的差別:就是在最大模式下,需要用外加電路來(lái)對(duì) CPU 發(fā)出的控制信號(hào)進(jìn)行變換和組合,以得到對(duì)存儲(chǔ)器和 I/O 端口的讀/寫(xiě)信號(hào)及對(duì)鎖存器(8282)和對(duì)總線(xiàn)收發(fā)器(8286)等等的控制信號(hào)。8288 總線(xiàn)控制器就是完成上面這些功能的專(zhuān)用芯片。為多中斷源的需要,常采用中斷優(yōu)先權(quán)控制電路(如 Intel8259A)。8086/8088 系統(tǒng)一定要有地址鎖存器因?yàn)楦咚奈坏刂泛蜖顟B(tài)信號(hào)是從同一組引腳上分時(shí)送出的,低 16 位地址和數(shù)據(jù)是從同一組引腳上分時(shí)傳輸?shù)?,所以必須把地址信息鎖存起
16、來(lái)。需要鎖存的信息:地址信號(hào)、BHE/S7 和IO/M(8086 為M/IO)信號(hào)進(jìn)行鎖存。12試簡(jiǎn)述 8086/8088 微機(jī)系統(tǒng)最小模式下從存器儲(chǔ)讀數(shù)據(jù)時(shí)的時(shí)序過(guò)程。解答:正常的存儲(chǔ)器讀總線(xiàn)操作占用 4 個(gè)時(shí)鐘周期,通常將它們稱(chēng)為 4 個(gè) T 狀態(tài)即 T1T4。123T1 狀態(tài),IO/ M =0,指出要訪(fǎng)問(wèn)存儲(chǔ)器。送地址信號(hào) A19-0,地址鎖存信號(hào) ALE 有效,用來(lái)控制 8282 鎖存地址。DT/ R =0,控制 8286/8287 工作在接收狀態(tài)(讀)。T2 狀態(tài),A19A16 送狀態(tài) S6 S3,AD7 AD0 浮空,準(zhǔn)備接收數(shù)據(jù)。同時(shí),RD 0,表示要進(jìn)行讀操作,而DEN =0
17、作為 8286/8287 的選通信號(hào),允許進(jìn)行數(shù)據(jù)傳輸。T3 狀態(tài),從指定的存儲(chǔ)單元將數(shù)據(jù)讀出送 AD7 AD0。若存儲(chǔ)器速度較慢,不能及時(shí)讀出數(shù)據(jù)的話(huà),則通過(guò) READY 引腳通知 CPU,CPU 在 T3 的前沿采樣 READY,如果 READY0,則在 T3 結(jié)束后自動(dòng)插入 1 個(gè)或幾個(gè)等待狀態(tài) TW,并在每個(gè) TW 的前沿檢測(cè) READY,等到 READY 變高后,就自動(dòng)脫離 TW 進(jìn)入 T4。4T4 狀態(tài),CPU 采樣數(shù)據(jù)線(xiàn),獲得數(shù)據(jù)。RD 、DEN 等信號(hào)失效。CH02 80868088指令系統(tǒng)習(xí)題與思考題1假定 DS=2000H,ES=2100H,SS=1500H,SI=00A0
18、H,BX=0100H,BP=0010H,數(shù)據(jù)變量 VAL 的偏移地址為 0050H,請(qǐng)指出下列指令源操作數(shù)是什么尋址方式?源操作數(shù)在哪里?如在存儲(chǔ)器中請(qǐng)寫(xiě)出其物理地址是多少?(1)MOVAX,0ABH(2)MOVAX,100H(3)MOVAX,VAL(4)MOVBX,SI(5)MOVAL,VALBX(6)MOVCL,BXSI(7)MOV VALSI,BX (8)MOV 解答:(1) MOVAX,0ABH 尋址方式:立即尋址;物理地址:無(wú)(2) MOVAX,100HBPSI,100尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址: DS 16+100H2000H*16+100H20100H(3)
19、 MOV AX,VAL 尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址: DS 16+VAL 2000H*16+0050H20050H(4) MOVBX,SI 尋址方式:寄存器間接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS16+SI2000H*16+00A0H200A0H(5) MOVAL,VALBX 尋址方式:變址尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS16+VAL+BX2000H*16+0050H+010020150H(6) MOVCL,BXSI 尋址方式:基址加變址尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS16+BX+SI2000H*16+0100H+00A0H201A0H(7) MOVV
20、ALSI,BX尋址方式:寄存器尋址;源操作數(shù)在寄存器中;物理地址:無(wú)(8) MOVBPSI,100尋址方式:立即尋址;物理地址:無(wú)2設(shè)有關(guān)寄存器及存儲(chǔ)單元的內(nèi)容如下:DS=2000H , BX=0100H , AX=1200H , SI=0002H , 20100H=12H , 20101H=34H , 20102H=56H , 20103=78H , 21200=2AH , 21201H=4CH , 21202H=0B7H , 21203H=65H。試說(shuō)明下列各條指令單獨(dú)執(zhí)行后相關(guān)寄存器或存儲(chǔ)單元的內(nèi)容。(1)MOVAX,1800H(2)MOVAX,BX(3)MOVBX,1200H(4)MO
21、VDX,1100BX(5)MOV BXSI,AL (6)MOV AX,1100BXSI 解答:題號(hào)指令執(zhí)行結(jié)果(1)MOVAX,1800HAX1800H(2)MOVAX,BXAX0100H(3)MOVBX,1200HBX4C2AH(4)MOVDX,1100BXDX4C2AH(5)MOVBXSI,AL20102H00H(6)MOVAX,1100BXSIAX65B7H3假定 BX=0E3H,變量 VALUE=79H,確定下列指令執(zhí)行后的結(jié)果(操作數(shù)均為無(wú)符號(hào)數(shù)。對(duì) 3、6,寫(xiě)出相應(yīng)標(biāo)志位的狀態(tài))。(1)ADDVALUE,BX(2)ANDBX,VALUE(3)CMPBX,VALUE(4)XORBX,
22、0FFH(5)DECBX(6)TESTBX,01H解答:題號(hào)指令執(zhí)行結(jié)果(1)ADDVALUE,BXBX015CH(2)ANDBX,VALUEBX0061H(3)CMPBX,VALUEBX00E3H(CF=ZF=OF=SF=0,AF=PF=1)(4)XORBX,0FFHBX001CH(5)DECBXBX00E2H(6)TESTBX,01HBX00E3H(CF=ZF=OF=SF=AF=PF=0)4已知 SS=0FFA0H,SP=00B0H,先執(zhí)行兩條把 8057H 和 0F79H 分別進(jìn)棧的 PUSH 指令,再執(zhí)行一條 POP 指令,試畫(huà)出堆棧區(qū)和 SP 內(nèi)容變化的過(guò)程示意圖。(標(biāo)出存儲(chǔ)單元的地
23、址)解答:堆棧段SS0FFA0H堆棧段SS0FFA0HX···57H80HX···FFAABHFFAABH00ACHFFAACH00ACHFFAACH 00ADHFFAADH00ADHFFAADH00AEHFFAAEH00AEHFFAAEH00AFHFFAAFH00AFHFFAAFH0FFA0:00B0HFFAB0H0FFA0:00B0HFFAB0H······初始狀態(tài);SP00B0HPUSHAX;(AX8057H)SP00AEH堆棧段SS0FFA0H堆棧段SS0FFA0H7
24、9H0FH57H80HX···57H80HX···FFAABHFFAABH00ACHFFAACH00ACHFFAACH 00ADHFFAADH00ADHFFAADH00AEHFFAAEH00AEHFFAAEH00AFHFFAAFH00AFHFFAAFH0FFA0:00B0HFFAB0H0FFA0:00B0HFFAB0H······PUSHBX;(BX0F79H)SP00ACH5已知程序段如下:MOVAX,1234HMOVCL,4ROLAX,CLDECAXMOVCX,4MULC
25、XPOPBX;SP00AEH試問(wèn):(1)每條指令執(zhí)行后,AX 寄存器的內(nèi)容是什么?(2)每條指令執(zhí)行后,CF,SF 及ZF 的值分別是什么?(3)程序運(yùn)行結(jié)束時(shí),AX 及 DX 寄存器的值為多少?指令執(zhí)行結(jié)果AXCFSFZFMOVAX,1234HAX1234H×××MOVCL,4AX1234H×××ROLAX,CLAX2341H100DECAXAX2340H100MOVCX,4AX2340H100MULCXAX8D00H,DX=0000H0006寫(xiě)出實(shí)現(xiàn)下列計(jì)算的指令序列。(假定 X、Y、Z、W、R 都為字變量)(1)Z=W+(Z+X
26、)(2)Z=W-(X+6)-(R+9)(3)Z=(W*X)/(R+6)(4)Z=(W-X)/5*Y)*2 解答:(1)Z=W+(Z+X)題號(hào)指令題號(hào)指令(1)Z=W+(Z+X)(2)Z=W-(X+6)-(R+9)MOVAX,ZMOVDX,RMOVBX,XADDDX,9MOVCX,WMOVBX,XADDBXADDBX,6ADCCXMOVAX,WMOVZ,AXSUBAX,BXSUBAX,DXMOVZ,AX(3)Z=(W*X)/(R+6)(4)Z=(W-X)/5*Y)*2MOVDX,0MOVAX,WMOVAX,WMOVBX,XMOVBX,XSUBAX,BXMULBXMOVDX,0PUSHAXMOVC
27、L,5MOVAX,RDIVCLADDAX,6MOVBX,YMOVCX,AXMULBXPOPAXMOVCL,2DIVCXMULCLMOVZ,AXMOVZ,AXMOVZ+1,DXMOVZ+1,DX7假定 DX=1100100110111001B,CL=3,CF=1,試確定下列各條指令單獨(dú)執(zhí)行后 DX 的值。(1)SHRDX,1(2)SHLDL,1(3)SALDH,1(4)SARDX,CL(5)RORDX,CL(6)ROLDL,CL(7)RCRDL,1(8)RCLDX,CL解答:題號(hào)指令執(zhí)行結(jié)果(1)SHRDX,1DX=0110 01001101 1100(64DCH)(2)SHLDL,1DX=11
28、00 10010111 0010(C972H)(3)SALDH,1DX=1001 00101011 1001(92B9H)(4)SARDX,CLDX=1111 10010011 0111(F937H)(5)RORDX,CLDX=0011 10010011 0111(3937H)(6)ROLDL,CLDX=1100 10011100 1101(C9CDH)(7)RCRDL,1DX=1100 10011101 1100(C9DCH)(8)RCLDX,CLDX=0100 11011100 1011(4DCFH)8已知 DX=1234H,AX=5678H,試分析下列程序執(zhí)行后 DX、AX 的值各是什么
29、?該程序完成了什么功能?MOVCL,4SHL DX,CL MOV BL,AH SHL BL,CL SHR BL,CLORDL,BL解答:DX=2345H,AX=6780H。該程序完成的功能如圖所示,將 DX,AX 拼裝成雙字后,左移四位。DXDX2340AX67801234AX567823456780DXAX9試分析下列程序段:ADDAX,BXJNCL2SUBAX,BXJNCL3JMPSHORTL5如果 AX、BX 的內(nèi)容給定如下:AXBX(1) 14C6H80DCH(2) B568H54B7H問(wèn)該程序在上述情況下執(zhí)行后,程序轉(zhuǎn)向何處?解答:(1)AXAX+BX14C6H+80DCH95A2H
30、;CF0;無(wú)進(jìn)位,轉(zhuǎn)移至 L2;(2)方法同(1),略10編寫(xiě)一段程序,比較兩個(gè) 5 字節(jié)的字符串 OLDS 和 NEWS,如果 OLDS 字符串不同于NEWS 字符串,則執(zhí)行 NEW_LESS,否則順序執(zhí)行。解答:編程如下,(說(shuō)明:左測(cè)程序?yàn)槌R?guī)編法,兩個(gè)字符串在一個(gè)數(shù)據(jù)段中;右測(cè)的程序要求 OLDS 在數(shù)據(jù)段中,NEWS 在附加段中,利用串操作的指令是可行的)LEASI,OLDS;LEASI,OLDSLEADI,NEWS;LEADI,NEWSMOVCX,5;MOVCX,5NEXT: MOVAL,SI;CLDMOVBL,DI;REPECMPSBCMPAL,BL;JNZNEW_LESSJNZN
31、EW_LESS;INCSI;JMPEXITINCDI;NEW_LESS:LOOPNEXT;EXIT:JMPEXITNEW_LESS:EXIT: 11若在數(shù)據(jù)段中從字節(jié)變量 TABLE 相應(yīng)的單元開(kāi)始存放了 015 的平方值,試寫(xiě)出包含有 XLAT 指令的指令序列查找 N(015)的平方。(設(shè) N 的值存放在 CL 中)解答:MOVBX,OFFSETTABLE;LEABX,TABLEMOVCL,NMOVAL,CLXLAT12有兩個(gè)雙字?jǐn)?shù)據(jù)串分別存放在 ASC1 和 ASC2 中(低字放低地址),求它們的差,結(jié)果放在 ASC3 中(低字放低地址)。 ASC1 DW 578,400ASC2DW694
32、,12ASC3DW?,?解答:編程如下,LEASI,ASC1LEADI,ASC2LEABX,ASC3MOVCX,2CLCNEXT: MOV AX,SI MOV DX,DISBBAX,DXMOVBX,AXINCSIINCSIINCDIINCDIINCBXINCBXLOOPNEXTCH03 匯編語(yǔ)言程序設(shè)計(jì)習(xí)題與思考題1下列語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)空間?并畫(huà)出存儲(chǔ)空間的分配圖。VAR1DB10,2VAR2DW5 DUP(?),0VAR3DB HOWAREYOU?,3 DUP(1,2)VAR4DD-1,1,0解答:字節(jié)空間-VAR1:2;VAR2:12;VAR3:20;VAR4:12。存
33、儲(chǔ)空間的分配圖:DS:00000A02000000000000000000000000484F00105720204152452020594F553F0102010200200102FFFFFFFF01000000000000002假定 VAR1 和 VAR2 為字變量,LAB 為標(biāo)號(hào),試指出下列指令的錯(cuò)誤之處。(1)ADDVAR1,VAR2(2)SUBAL,VAR1(3)JMPLABCX(4)JNZVAR1(5) MOV1000H,100(6)SHLAL, 4 解答:(1)兩個(gè)操作數(shù)中至少有一個(gè)為寄存器;(2)AL 為字節(jié),VAR1 為字變量,不匹配;(3)中不能用 CX,LAB 為標(biāo)號(hào),非
34、變量;(4)轉(zhuǎn)向地址應(yīng)為標(biāo)號(hào),不能是變量;(5)目的操作數(shù)的類(lèi)型不確定;(6)SHL 指令中,當(dāng)所移位數(shù)超過(guò) 1 時(shí),必須用 CL 或 CX 來(lái)取代所移位數(shù)。3對(duì)于下面的符號(hào)定義,指出下列指令的錯(cuò)誤。A1DB ? A2DB 10K1EQU1024(1)MOVK1,AX(2)MOVA1,AX(3)CMPA1,A2(4)K1EQU2048解答:(1)K1 為常量,不能用 MOV 指令賦值;(2)A1 為字節(jié),AX 為字變量,不匹配;(3)A1 未定義,無(wú)法做比較指令; (4)K1 重新賦值前,必須用 PURGE 釋放。4數(shù)據(jù)定義語(yǔ)句如下所示:FIRSTDB90H,5FH,6EH,69HSECOND
35、 DB5 DUP(?)THIRDDB5 DUP(?) 自 FIRST 單元開(kāi)始存放的是一個(gè)四字節(jié)的十六進(jìn)制數(shù)(低位字節(jié)在前),要求:編一段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自 SECOND 開(kāi)始的單元,右移兩位后存放到自THIRD 開(kāi)始的單元。(注意保留移出部分)解答:DATASEGMENTFIRSTDB90H,5FH,6EH,69HSECOND DB5 DUP(?)THIRDDB5 DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,F(xiàn)IRSTLEADI,SECONDMOVCX,2CLC;左移 2
36、位MOVAX,SI;AX=5F90H 為低十六位數(shù)據(jù)INCSIINCSIMOVDX,SI;DX=696EH 為高十六位數(shù)據(jù)PUSH DX;保存原有的高十六位數(shù)據(jù) PUSH AX;保存原有的低十六位數(shù)據(jù)ROL DX,CL;將高位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即高 2 位數(shù)據(jù)在 DL 的低 2 位 AND DL,03H;讓 DL 中僅保存移出的高 2 位數(shù)據(jù)MOVDI+4 ,DL;將移出的高 2 位數(shù)據(jù)放入 SECOND 中的最高單元中ROLAX,CL;將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即 AX 的高 2 位在 AL 的低 2 位ANDAL,03H;讓 AL 中僅保存移出的 AX 高 2 位數(shù)據(jù)MOVB
37、L ,AL;將 AL 中的數(shù)據(jù)放入 BL 中保存POPAX;彈出原有的低十六位數(shù)據(jù)POPDX;彈出原有的高十六位數(shù)據(jù)SHLDX,CL;將高位數(shù)據(jù)算術(shù)邏輯左移 2 位SHLAX,CL;將低位數(shù)據(jù)算術(shù)邏輯左移 2 位ORDL,BL;將 AX 中移出的高 2 位數(shù)據(jù)放入 DX 的低 2 位MOVDI ,AXMOVDI+2 ,DX;右移 2 位LEASI,F(xiàn)IRSTLEADI,THIRDMOVCX,2CLCMOVAX,SI;AX=5F90H 為低十六位數(shù)據(jù)INCSIINCSIMOVDX,SI;DX=696EH 為高十六位數(shù)據(jù)PUSHDX;保存原有的高十六位數(shù)據(jù)PUSHAX;保存原有的低十六位數(shù)據(jù)ROR
38、AX,CL;將低位數(shù)據(jù)不帶進(jìn)位循環(huán)右移兩位,即低 2 位數(shù)據(jù)在 AH 的高 2 位ANDAH,0C0H;讓 AH 中僅保存移出的低 2 位數(shù)據(jù)PUSHCXMOVCX,6SHRAH,CLPOPCXMOVDI ,AH;將移出的低 2 位數(shù)據(jù)放入 THIRD 中的最低單元中RORDX,CL;將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即 AX 的高 2 位在 AL 的低 2 位ANDDH,0C0H;讓 DH 中僅保存移出的 DX 低 2 位數(shù)據(jù)MOVBL ,DH;將 DH 中的數(shù)據(jù)放入 BL 中保存POPAX;彈出原有的低十六位數(shù)據(jù)POPDX;彈出原有的高十六位數(shù)據(jù)SHRDX,CL;將高位數(shù)據(jù)算術(shù)邏輯左移 2
39、位SHRAX,CL;將低位數(shù)據(jù)算術(shù)邏輯左移 2 位ORAH,BL;將 DX 中移出的低 2 位數(shù)據(jù)放入 AX 的高 2 位MOVDI+1 ,AXMOVDI+3 ,DXMOVAH,4CHINT21HCODEENDSENDSTART5(14)在當(dāng)前數(shù)據(jù)區(qū)從 400H 開(kāi)始的 256 個(gè)單元中存放著一組數(shù)據(jù),試編程序?qū)⑺鼈冺樞虬嵋频綇?A000H 開(kāi)始的順序 256 個(gè)單元中。解答:DATA SEGMENTORG 400HDAT1 DB .;256 DUP (?) ORG 0A000HDAT2 DB.;256 DUP (?)DATA ENDS;STACK SEGMENTSTACK ENDS;CODE
40、 SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AX;CH3-14LEA SI,DAT1LEA DI,DAT2MOV CX,128AGAIN: MOV AL,SIMOV DI,ALINC SIINC DILOOP AGAIN;CH3-15,將兩個(gè)數(shù)據(jù)塊逐個(gè)單元進(jìn)行比較,若有錯(cuò) BL=00H,否則 BL=FFHLEA SI,DAT1LEA DI,DAT2MOV CX,128NEXT:MOV AL,SIMOV BL,DICMP AL,BLJNZ ERRORINC SIINC DILOOP NEXTMO
41、V BL,0FFHJMP EXITERROR: MOV BL,00HEXIT:MOV AX,4C00H INT 21HCODE ENDSEND START6試編程序?qū)?dāng)前數(shù)據(jù)區(qū)從 BUFF 開(kāi)始的 4K 個(gè)單元中均寫(xiě)入 55H,并逐個(gè)單元讀出比較,看寫(xiě)入的與讀出的是否一致。若全對(duì),則將 ERR 單元置 0H;如果有錯(cuò),則將 ERR 單元置 FFH。解答:DATA SEGMENT BUFF DB 1000H DUP(?)ERRDB?DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;將 55H 依次放入 BUFF 開(kāi)
42、始的 4K 個(gè)單元LEASI,BUFFMOVCX,1000HMOVAL,55HNTXT:MOVSI,ALINCSILOOP NEXT;取出與 55H 比較,全對(duì)則 ERR=0,否則 ERR=FFHLEADI,BUFFLEASI,ERRMOVCX,1000HNEXT1:MOVAL,DIINCDICMPAL,55HJNZERROR;若有一個(gè)不同,即置 ERR=FFHLOOP NEXT1MOVAL,00HMOVSI,AL;全比較完無(wú)錯(cuò),則置 ERR=0JMPEXITERROR: MOVAL,0FFH MOVSI,AL ;返回 DOSEXIT:MOVAH,4CHINT21HCODEENDSENDSTA
43、RTEND7在上題中,如果發(fā)現(xiàn)有錯(cuò)時(shí),要求在 ERR 單元中存放出錯(cuò)的數(shù)據(jù)個(gè)數(shù),則程序該如何修改?解答:DATA SEGMENT BUFF DB 1000H DUP(?)ERRDW?DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;將 55H 依次放入 BUFF 開(kāi)始的 4K 個(gè)單元LEASI,BUFFMOVCX,1000HMOVAL,55HNTXT:MOVSI,ALINCSILOOP NEXT ;取出與 55H 比較 LEADI,BUFFLEASI,ERRMOVDX,0000HMOVCX,1000HNEXT1:
44、MOVAL,DIINCDICMPAL,55HJZNEXT2;若相同,則比較下一個(gè)INCDX;否則將放出錯(cuò)個(gè)數(shù)的 DX 加 1NEXT2: LOOP NEXT1 MOV SI,DX;EXIT:MOVAH,4CHINT21HCODEENDSENDSTARTEND8試編寫(xiě)程序段,完成將數(shù)據(jù)區(qū)從 0100H 開(kāi)始的一串字節(jié)數(shù)據(jù)逐個(gè)從 F0H 端口輸出,已知數(shù)據(jù)串以 0AH 為結(jié)束符。解答:DATASEGMENTORG 0100HDATA1DBN DUP(?)DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;將 DATA1
45、 數(shù)據(jù)串中的數(shù)據(jù)取出并從 F0H 端口中輸出LEASI,DATA1MOVCX,NMOVBL,0AHNTXT:MOVAL,SICMPAL,BLJZEXITOUT0F0H,ALINCSILOOP NEXT;返回 DOSEXIT:MOVAH,4CHINT21HCODEENDSENDSTARTEND9(24)內(nèi)存中以 FIRST 和 SECOND 開(kāi)始的單元中分別存放著兩個(gè) 4 位用壓縮 BCD 碼表示的十進(jìn)制數(shù), 低位在前。編程序求這兩個(gè)數(shù)的和,仍用壓縮 BCD 碼表示, 并存到以 THIRD 開(kāi)始的單元。解答:DATA SEGMENTFIRST DW 3412HSECOND DW 7856H TH
46、IRD DB ?,?,?DATA ENDS;STACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDLEA BX,THIRDMOV CX,2CLCAGAIN: MOV AL,BYTE PTRSIMOV DL,BYTE PTRDIADC AL,DLDAAMOV BYTE PTRBX,ALINC SIINC DIINC BXLOOP AGAINJC AAMOV BYTE PTRBX,0JMP EXITA
47、A:MOV BYTE PTRBX,1EXIT:MOV AX,4C00HINT 21HCODE ENDSEND START10(27)設(shè)字變量單元 A、B、C 存放有三個(gè)數(shù),若三個(gè)數(shù)都不為零,則求三個(gè)數(shù)的和,存放在 D 中;若有一個(gè)為零,則將其余兩個(gè)也清零,試編寫(xiě)程序。解答:DATA SEGMENTA DB ?B DB ?C DB ?D DW ?DATA ENDS;STACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AXLEASI,ALEADI,D
48、MOVAL,SICMPAL,00JZZEROADCDX,ALLEASI,BMOVAL,SICMPAL,00JZZEROADCDX,ALLEASI,CMOVAL,SICMPAL,00JZZEROADCDX,ALMOVDI,DXJMPEXITZERO:MOVAL,0MOVA,ALMOVB,ALMOVC,AL;EXIT:MOV AX,4C00H INT 21HCODE ENDSEND START11(16)試編程序,統(tǒng)計(jì)由 TABLE 開(kāi)始的 128 個(gè)單元中所存放的字符“A”的個(gè)數(shù),并將結(jié)果存放在 DX 中。解答:DATA SEGMENTTABLEDB X1,X2,.X128DATA ENDS;S
49、TACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AXLEA SI,TABLEMOV DX,0MOV CX,128AGAIN: MOV AL,SICMP AL,'A'JNZ NEXTINC DXNEXT:INC SILOOP AGAINMOV AX,4C00HINT 21HCODE ENDSEND START12試編制一個(gè)匯編語(yǔ)言程序,求出首地址為 DATA 的 1000 個(gè)字?jǐn)?shù)組中的最小偶數(shù),并把它存放于 MIN 單元中。解答:
50、DATA SEGMENTARRAYDW X1,X2,.X1000ARRAY_EVEN DW 1000 DUP(?)MINDW?MAXDW?DATA ENDS;STACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATASTART:MOV AX,DATAMOV DS,AX;將數(shù)組中的偶數(shù)放入 ARRAY_EVEN 中LEASI,ARRAYLEADI,ARRAY_EVENMOVCX,1000AGAIN: MOVAX,SITEST AX,01hJNZNEXTMOVDI,AXINCDIINCDINEXT:INCSIINCSILOOP AGAIN;找出 ARRAY_EVEN 中的最大數(shù)LEASI,ARRAY_EVENMOVCX,999MOVAX,SIMOVBX,AXINCSIINCSINEXT:CMPAX,SIJAELLMOVAX,SILL: INCSIINCSILO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年離婚法律知識(shí)普及:訴訟與協(xié)議離婚優(yōu)劣對(duì)比3篇
- 二零二五年物聯(lián)網(wǎng)數(shù)據(jù)采集與分析合同詳細(xì)條款3篇
- 2025年立體停車(chē)庫(kù)車(chē)位租賃與智能管理系統(tǒng)合同3篇
- 2025年物業(yè)管理公司合同管理實(shí)施細(xì)則與智能停車(chē)系統(tǒng)協(xié)議3篇
- 2025年醫(yī)療護(hù)理服務(wù)質(zhì)量評(píng)估合同
- 2025年農(nóng)業(yè)觀光旅行服務(wù)合同
- 二零二五年度翻譯行業(yè)創(chuàng)新技術(shù)研究與應(yīng)用合同2篇
- 2025年度煤礦企業(yè)員工勞動(dòng)合同范本(含崗位說(shuō)明書(shū))4篇
- 2025年消防排煙系統(tǒng)設(shè)計(jì)與施工安全監(jiān)督合同3篇
- 2025版商業(yè)綜合體樓梯口翻新裝修合同模板4篇
- 直播帶貨助農(nóng)現(xiàn)狀及發(fā)展對(duì)策研究-以抖音直播為例(開(kāi)題)
- 腰椎間盤(pán)突出疑難病例討論
- 《光伏發(fā)電工程工程量清單計(jì)價(jià)規(guī)范》
- 2023-2024學(xué)年度人教版四年級(jí)語(yǔ)文上冊(cè)寒假作業(yè)
- (完整版)保證藥品信息來(lái)源合法、真實(shí)、安全的管理措施、情況說(shuō)明及相關(guān)證明
- 營(yíng)銷(xiāo)專(zhuān)員績(jī)效考核指標(biāo)
- 陜西麟游風(fēng)電吊裝方案專(zhuān)家論證版
- 供應(yīng)商審核培訓(xùn)教程
- 【盒馬鮮生生鮮類(lèi)產(chǎn)品配送服務(wù)問(wèn)題及優(yōu)化建議分析10000字(論文)】
- 肝硬化心衰患者的護(hù)理查房課件
- 2023年四川省樂(lè)山市中考數(shù)學(xué)試卷
評(píng)論
0/150
提交評(píng)論