版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CH01微型計(jì)算機(jī)概述習(xí)題與思考題1.微型計(jì)算機(jī)由哪些部件組成?各部件的主要功能是什么?解答:,算術(shù)邏輯部件(ALU)微處理' 器累加器、寄存器(cpu控制器系統(tǒng)總線: AR CB DB和控制(功能:為CPUW其他部件之間提供數(shù)據(jù)、地址微型計(jì)算機(jī)信息的傳輸通道)微機(jī)系統(tǒng)輸入/輸出(I/O)接口:串/并行接口等(功能:使外部設(shè)備和微型機(jī)相連)存儲(chǔ)器:只讀存儲(chǔ)器(ROM、隨機(jī)存儲(chǔ)器(RAM(功能:用來(lái)存儲(chǔ)信息)操作系統(tǒng)(09系統(tǒng)軟件系統(tǒng)實(shí)用程序:匯編、編譯、編輯、調(diào)試程序等外圍設(shè)備:打印機(jī)、鍵盤、CRTR磁盤控制器等(注:CPU的功能可以進(jìn)行算術(shù)和邏輯運(yùn)算;可保存少量數(shù)據(jù);能對(duì)指令進(jìn)行譯碼
2、并執(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)工作的?解答'總線接口部件(BIU):負(fù)責(zé)與存儲(chǔ)器、I/O端口傳送數(shù)據(jù)微處理器(cpuI執(zhí)行部件(EU):負(fù)責(zé)指令的執(zhí)行協(xié)調(diào)工作過(guò)程:總線接口部件和執(zhí)行部件并不是同步工作的,它們按以下流水線技術(shù)原則來(lái)協(xié)調(diào)管理: 每當(dāng)8086的指令隊(duì)列中有兩個(gè)空字節(jié),或者 8088的指令隊(duì)列中有一個(gè)空字節(jié)時(shí), 總線接口部件就會(huì)自動(dòng)把指令取到指令隊(duì)列中。每當(dāng)執(zhí)行部件準(zhǔn)備執(zhí)行一條指令時(shí),它會(huì)從總線接口部件的指令隊(duì)列前部
3、取出指令 的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過(guò)程中,如果必須訪問(wèn)存儲(chǔ)器或者 輸入/輸出設(shè)備,那么,執(zhí)行部件就會(huì)請(qǐng)求總線接口部件進(jìn)入總線周期,完成訪問(wèn)內(nèi)存或者 輸入/輸出端口的操作;如果此時(shí)總線接口部件正好處于空閑狀態(tài),那么,會(huì)立即響應(yīng)執(zhí)行 部件的總線請(qǐng)求。但有時(shí)會(huì)遇到這樣的情況,執(zhí)行部件請(qǐng)求總線接口部件訪問(wèn)總線時(shí),總線 接口部件正在將某個(gè)指令字節(jié)取到指令隊(duì)列中,此時(shí)總線接口部件將首先完成這個(gè)取指令的 操作,然后再去響應(yīng)執(zhí)行部件發(fā)出的訪問(wèn)總線的請(qǐng)求。 當(dāng)指令隊(duì)列已滿,而且執(zhí)行部件又沒(méi)有總線訪問(wèn)請(qǐng)求時(shí),總線接口部件便進(jìn)入空閑 狀態(tài)。 在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),由于程序執(zhí)
4、行的順序發(fā)生了改變,不再 是順序執(zhí)行下面一條指令,這時(shí),指令隊(duì)列中已經(jīng)按順序裝入的字節(jié)就沒(méi)用了。遇到這種情 況,指令隊(duì)列中的原有內(nèi)容將被自動(dòng)消除,總線接口部件會(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)存中的位置BP基
5、數(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、CFo標(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(wèi)的個(gè)數(shù)為偶數(shù)時(shí),該標(biāo)志位置 1;否則清0。 AF:半進(jìn)位標(biāo)志位。在加法時(shí),當(dāng)位 3需向位4進(jìn)位,或在減法時(shí)位 3需向位4借
6、 位時(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)存的00004H00007H 4個(gè)單元提供。該標(biāo)志通常用于程序的調(diào)試。例如,在系統(tǒng)調(diào)試軟件 DEBUG中的T命令,就是利用它來(lái)進(jìn)行程序的單步跟
7、蹤的。 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í),該標(biāo)志位置位。4 . 8086/8088系統(tǒng)中存儲(chǔ)器的邏輯地址和物理地址之間有什么關(guān)系?表示的范圍各為多少? 解答:邏輯地址:段地址:偏移地址物理地址:也稱為絕對(duì)地址,由段基址和偏移量?jī)刹糠謽?gòu)成。物理地
8、址與系統(tǒng)中的存儲(chǔ) 空間是對(duì)應(yīng)的。邏輯地址與物理地址兩者之間的關(guān)系為:物理地址=段地址X16+偏移地址每個(gè)邏輯段的地址范圍:0000: 0000HFFFFH; 0001 : 0000HFFFFH;;FFFF:0000HFFFFH;共有232個(gè)地址,但其中有許多地址是重疊的(體現(xiàn)出邏輯地址的優(yōu)勢(shì), 可根據(jù)需要方便地寫出邏輯地址,又不影響其準(zhǔn)確的物理地址,邏輯地址與物理地址的關(guān)系 為多對(duì)一的關(guān)系)。物理地址的地址范圍:00000HFFFFFH。5 .已知當(dāng)前數(shù)據(jù)段位于存儲(chǔ)器的A1000H到B0FFFH范圍內(nèi),問(wèn) DS= ?解答:A1000H A100: 0000以A100H為段地址的 64K物理地址
9、的范圍是:偏移地址為0000H FFFFH,即 A100: 0000H A100: FFFFH f A1000H + 0000H A1000H + 0FFFFH =A1000H B0FFFH , ,DS=A100H。6 .某程序數(shù)據(jù)段中存有兩個(gè)字?jǐn)?shù)據(jù)1234H和5A6BH ,若已知 DS=5AA0H ,它們的偏移地址分別為 245AH和3245H,試畫出它們?cè)诖鎯?chǔ)器中的存放情況解答:存放情況如圖所示(左右兩側(cè)的寫法均可):5AA0 : 0000H5AA00H5AA0 : 245AH5CE5AH5AA0 : 245BH5CE5BH5AA0 :3245H5DC45H5AA0 : 3246H5DC4
10、6H7 . 8086/8088CPU有哪兩種工作模式,它們各有什么特點(diǎn)?解答:為了適應(yīng)各種不同的應(yīng)用場(chǎng)合,8086/8088CPU芯片可工作在兩種不同的工作模式下,即最小模式與最大模式。所謂最小模式,就是系統(tǒng)中只有一個(gè)8086/8088微處理器,在這種情況下,所有的總線控制信號(hào),都是直接由這片 8086/8088CPU產(chǎn)生的,系統(tǒng)中的總線控制邏輯電路被減到最 少。該模式適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。最大模式是相對(duì)于最小模式而言的,最大模式用在中、大規(guī)模的微機(jī)應(yīng)用系統(tǒng)中。在最大模式下,系統(tǒng)中至少包含兩個(gè)微處理器,其中一個(gè)為主處理器,即 8086/8088CPU ,其它 的微處理器稱之為協(xié)處理器,
11、它們是協(xié)助主處理器工作的。8 .若8086CPU工作于最小模式,試指出當(dāng)CPU完成將 AH的內(nèi)容送到物理地址為91001H的存儲(chǔ)單元操作時(shí),以下哪些信號(hào)應(yīng)為低電平:M/ IO、RD、WR、BHE /S7、DT/R 。若CPU完成的是將物理地址 91000H單元的內(nèi)容送到 AL中,則上述哪些信號(hào)應(yīng)為 低電平。若 CPU為8088呢?解答:8086CPU存儲(chǔ)器寫(AH -9100H0001H)時(shí)為低電平的信號(hào):WR、BHE/S7。存儲(chǔ)器讀(9100H0000H 一AL)時(shí)為低電平的信號(hào): RD、DT/ R。8088CPUWR、 o(BHE 7)、M/ io。存儲(chǔ)器寫(AHf9100H0001H)時(shí)
12、為低電平的信號(hào):存儲(chǔ)器讀(9100H0000H 一AL)時(shí)為低電平的信號(hào):M/ IO、RD、DT/ R 。9 .什么是指令周期?什么是總線周期?什么是時(shí)鐘周期?它們之間的關(guān)系如何?解答:指令周期-CPU執(zhí)行一條指令所需要的時(shí)間稱為一個(gè)指令周期(Instruction Cycle)??偩€周期-每當(dāng)CPU要從存儲(chǔ)器或I/O端口存取一個(gè)字節(jié)稱為一次總線操作,相應(yīng)于某個(gè)總線操作的時(shí)間即為一個(gè)總線周期(BUS Cycle)。時(shí)鐘周期-時(shí)鐘周期是 CPU處理動(dòng)作的最小時(shí)間單位,其值等于系統(tǒng)時(shí)鐘頻率的倒 數(shù),時(shí)鐘周期又稱為T狀態(tài)。它們之間的關(guān)系:若干個(gè)總線周期構(gòu)成一個(gè)指令周期,一個(gè)基本的總線周期由4個(gè)T組成
13、,我們分別稱為TiT4,在每個(gè)T狀態(tài)下,CPU完成不同的動(dòng)作。6BH5AH10 . 8086/8088 CPU有哪些基本操作?基本的讀 /寫總線周期各包含多少個(gè)時(shí)鐘周期?什么 情況下需要插入 Tw周期?應(yīng)插入多少個(gè)Tw取決于什么因素?解答: 8086/8088CPU最小模式下的典型時(shí)序有:存儲(chǔ)器讀寫;輸入輸出;中斷響應(yīng);系統(tǒng)復(fù)位及總線占用操作。一個(gè)基本的 CPU總線周期一般包含四個(gè)狀態(tài)Ti、T2、T3、T4,即四個(gè)時(shí)鐘周期;在存儲(chǔ)器和外設(shè)速度較慢時(shí),要在T3之后插入1個(gè)或幾個(gè)等待狀態(tài) Tw;應(yīng)插入多少個(gè) Tw取決于READY信號(hào)的X犬態(tài),CPU沒(méi)有在T3狀態(tài)的一開(kāi)始采樣到READY信號(hào)為低電平
14、,就會(huì)在 T3和T4之間插入等待狀態(tài) Tw,直到采樣到 READY信號(hào)為 高電平。11 .試說(shuō)明8086/8088工作在最大和最小模式下系統(tǒng)基本配置的差異。8086/8088微機(jī)系統(tǒng)中為什么一定要有地址鎖存器?需要鎖存哪些信息?解答:最大模式配置和最小模式配置有一個(gè)主要的差別:就是在最大模式下,需要用外加電路來(lái)對(duì)CPU發(fā)出的控制信號(hào)進(jìn)行變換和組合,以得到對(duì)存儲(chǔ)器和I/O端口的讀/寫信號(hào)及對(duì)鎖存器(8282)和對(duì)總線收發(fā)器(8286)等等的控制信號(hào)。8288總線控制器就是完成上面這些功能的專用芯片。為多中斷源的需要,常采用中斷優(yōu)先權(quán)控制電路(如 Intel8259A)。8086/8088系統(tǒng)一定
15、要有地址鎖存器一一因?yàn)楦咚奈坏刂泛蜖顟B(tài)信號(hào)是從同一組引腳上 分時(shí)送出的,低 16位地址和數(shù)據(jù)是從同一組引腳上分時(shí)傳輸?shù)?,所以必須把地址信息鎖 存起來(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ǔ)器讀總線操作占用4個(gè)時(shí)鐘周期,通常將它們稱為4個(gè)T狀態(tài)即T1T4。O T1狀一 態(tài),IO/ M =0,指出要訪問(wèn)存儲(chǔ)器。送地址信號(hào)A19-0,地址鎖存信號(hào) ALE有效,用來(lái)控制 8282鎖存地址。DT/ R_ =0,控制 8286/8287工作在接收狀態(tài)(讀)。一C
16、T2狀態(tài),A19A16送狀態(tài)S6S3, AD7AD0浮空,準(zhǔn)備接收數(shù)據(jù)。同時(shí), RD =0,表示要進(jìn)行讀操作,而DEN=0作為8286/8287的選通信號(hào),允許進(jìn)行數(shù)據(jù)傳輸。T3狀態(tài),從指定的存儲(chǔ)單元將數(shù)據(jù)讀出送AD7AD0。若存儲(chǔ)器速度較慢,不能及時(shí)讀出數(shù)據(jù)的話,貝U通過(guò)READY弓I腳通知 CPU, CPU在T3的前沿采樣 READY ,如果READY =0,則在T3結(jié)束后自動(dòng)插入 1個(gè)或幾個(gè)等待狀態(tài) Tw,并在每個(gè)Tw的前沿檢 測(cè)READY ,等至ij READY變高后,就自動(dòng)脫離Tw進(jìn)入T4。4狀態(tài),CPU采樣數(shù)據(jù)線,獲得數(shù)據(jù)。RD、DEN等信號(hào)失效。CH02 8086 /8088 指
17、令系統(tǒng)習(xí)題與思考題1 .假定 DS=2000H , ES=2100H, SS=1500H, SI=00A0H , BX=0100H , BP=0010H ,數(shù)據(jù)變量VAL的偏移地址為 0050H,請(qǐng)指出下列指令源操作數(shù)是什么尋址方式?源操作數(shù)在哪 里?如在存儲(chǔ)器中請(qǐng)寫出其物理地址是多少?(1)MOVAX , 0ABH(2)MOV AX,100H(3)MOVAX , VAL(4)MOV BX,SIMOVAL , VALBX(6)MOV CL,BXSI MOV VALSI , BX (8) MOVBPSI , 100(1) MOV AX, 0ABH 尋址方式:立即尋址; 物理地址:無(wú)(2) MOV
18、 AX, 100HDS* 16+100H =尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:2000H*16+100H =20100H(3) MOV AX , VAL尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS *16+VAL =2000H*16+0050H = 20050H(4) MOV BX, SI尋址方式:寄存器間接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS * 16+SI =2000H*16+00A0H = 200A0H(5) MOV AL, VALBX尋址方式:變址尋址;源操作數(shù)在存儲(chǔ)器中;物理地址: DS * 16+VAL+BX =2000H*16+0050H+0100=
19、20150H(6) MOV CL, BXSI尋址方式:基址加變址尋址;源操作數(shù)在存儲(chǔ)器中;物理 地址:DS*16+BX+SI =2000H*16+0100H+00A0H= 201A0H MOVVALSI , 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
20、 , 21202H=0B7H , 21203H=65H 。試說(shuō)明下列各條指令單獨(dú)執(zhí)行后相關(guān)寄存器或存儲(chǔ)單 元的內(nèi)容。(1) MOV AX, 1800H(2) MOVAX, BX(3) MOVBX, 1200H(4) MOVDX , 1100BX(5) MOV BXSI , AL (6) MOV AX , 1100BXSI解答:題號(hào)指 令執(zhí)行結(jié) 果(1)MOVAX , 1800HAX = 1800H(2)MOVAX , BXAX =0100H(3)MOVBX , 1200HBX = 4C2AH(4)MOVDX , 1100BXDX = 4C2AH(5)MOVBXSI , AL20102H =00
21、H(6)MOVAX , 1100BXSIAX = 65B7H3.假定BX=0E3H ,變量 VALUE=79H ,確定下列指令執(zhí)行后的結(jié)果(操作數(shù)均為無(wú)符號(hào)數(shù)。對(duì)3、6,寫出相應(yīng)標(biāo)志位的狀態(tài) )。(1)ADDVALUE , BX(2)ANDBX ,VALUE(3)CMPBX , VALUE(4)XORBX , 0FFH(5)DECBX(6)TESTBX , 01H解答:題號(hào)指 令執(zhí) 行 結(jié) 果(1)ADDVALUE , BXBX =015CH(2)ANDBX , VALUEBX =0061H(3)CMPBX , VALUEBX =00E3H(CF=ZF=OF=SF=0 , AF=PF=1)(4
22、)XORBX , 0FFHBX =001CH(5)DECBXBX =00E2H(6)TESTBX , 01HBX =00E3H(CF=ZF=OF=SF=AF=PF=0)4.已知 SS=0FFA0H, SP=00B0H,先執(zhí)行兩條把 8057H和0F79H分別進(jìn)棧的 PUSH指令, 再執(zhí)行一條 POP指令,試畫出堆棧區(qū)和SP內(nèi)容變化的過(guò)程示意圖。(標(biāo)出存儲(chǔ)單元的地址)解答:57H 80HV"00ADHFFAADH00AEHFFAAEH00AFHFFAAFH0FFA0: 00B0HFFAB0HFFAABHFFAABH 00ACHFFAACH 00ACHFFAACH 00ADHFFAADH
23、00AEHFFAAEH00AFHFFAAFH0FFA0: 00B0HFFAB0H初始狀態(tài);SP= 00B0HPUSH AX; (AX=8057H) SP= 00AEH堆棧段SS= 0FFA0H堆棧段SS= 0FFA0HFFAABHFFAABH00ACHFFAACH 00ACHFFAACH00ADHFFAADH00AEHFFAAEH00AFHFFAAFH0FFA0: 00B0HFFAB0H PUSH BX; (BX=0F79H) SP=00ACH0FFA000ADHFFAADHEH FH0H00AEHFFAA00AFHFFAA00B0HFFAE57H80HX POP BX; SP= 00AEH5
24、.已知程序段如下:MOVAX ,1234HMOVCL,4ROLAX ,CLDECAXMOVCX,4MULCX試問(wèn):(1)每條指令執(zhí)行后,AX寄存器的內(nèi)容是什么? ( 2)每條指令執(zhí)行后,CF, SF及ZF的值分別是什么? ( 3)程序運(yùn)行結(jié)束時(shí),AX及DX寄存器的值為多少?指 令執(zhí)行結(jié) 果AXCFSFZFMOVAX , 1234HAX = 1234HXXxMOVCL, 4AX = 1234HXXXROLAX , CLAX =2341H100DECAXAX = 2340H100MOVCX , 4AX = 2340H100MULCXAX = 8D00H , DX=0000H0006.寫出實(shí)現(xiàn)下列計(jì)
25、算的指令序列。(假定X、Y、Z、W、R都為字變量)(1) Z=W+ (Z+X)(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 ) / (
26、R+6)(4)Z= (W-X)巧*Y) *2MOVDX , 0MOVAX , WMOVAX , WMOVBX , XMOVBX , XSUBAX , BXMULBXMOVDX , 0PUSHAXMOVCL , 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,
27、1(4)SARDX,CL(5) RORDX,CL(6)ROLDL,CL RCRDL,1(8)RCLDX,CL解答:的題號(hào)指令執(zhí) 行 結(jié) 果(1)SHRDX, 1DX=0110 01001101 1100(64DCH)(2)SHLDL , 1DX=1100 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(
28、C9CDH)RCRDL,1DX=1100 10011101 1100(C9DCH)(8)RCLDX ,CLDX=0100 11011100 1011(4DCFH)8 .已知 DX=1234H , AX=5678H,試分析下列程序執(zhí)行后DX、AX的值各是什么?該程序完成了什么功能?MOV CL, 4SHL DX , CLMOV BL , AHSHL BL , CLSHR BL , CLOR DL , BL解答:DX=2345H , AX=6780H 。該程序完成的功能如圖所示,將 DX , AX拼裝成雙字后, 左移四位。DXDX12 342 3 40AXAX56786 78023456780DX
29、:AX9 .試分析下列程序段:ADD AX , BXJNC L2SUB AX , BXJNC L3JMP SHORTL5如果AX、BX的內(nèi)容給定如下:AXBX(1) 14C6H 80DCH(2) B568H 54B7H問(wèn)該程序在上述情況下執(zhí)行后,程序轉(zhuǎn)向何處?解答:(1) AX = AX+BX = 14C6H+80DCH = 95A2H ; CF=0;無(wú)進(jìn)位,轉(zhuǎn)移至 L2 ;(2)方法同(1),略10 .編寫一段程序,比較兩個(gè)5字節(jié)的字符串 OLDS和NEWS,如果 OLDS字符串不同NEWS字符串,貝U執(zhí)行 NEW_LESS ,否貝U順序執(zhí)行。解答:編程如下,(說(shuō)明:左測(cè)程序?yàn)槌R?guī)編法,兩個(gè)
30、字符串在一個(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_LESSJNZNEW_LESS ;INCSI;JMPEXITINCDI;NEW_LESS :LOOPNEXT ;EXIT :JMPEXITNEW_LESS :EXIT :11 .若在數(shù)據(jù)段中從字節(jié)變量TABLE相應(yīng)的單元開(kāi)始存放了015的平方值,試寫出包含有XLA
31、T指令的指令序列查找N (015)的平方。(設(shè)N的值存放在 CL中)解答:MOV BX , OFFSET TABLE ; LEA BX, TABLEMOV CL , NMOV AL , CLXLAT12 .有兩個(gè)雙字?jǐn)?shù)據(jù)串分別存放在ASC1和ASC2中(低字放低地址),求它們的差,結(jié)果放在 ASC3中(低字放低地址)。ASC1 DW 578 , 400ASC2 DW 694, 12ASC3 DW ? , ?解答:編程如下.LEA SI, ASC1LEA DI , ASC2LEA BX , ASC3MOV CX , 2 CLCNEXT : MOV AX , SI MOV DX , DI SBB
32、AX , DX MOV BX , AX INC SIINC SIINC DIINC DIINC BXINC BXLOOP NEXTCH03 匯編語(yǔ)言程序設(shè)計(jì)習(xí)題與思考題1 下列語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)空間?并畫出存儲(chǔ)空間的分配圖。VAR1 DBVAR2 DWVAR3 DB10, 25 DUP (?) , 0HOW ARE YOU ?, 3 DUP (1 , 2)VAR4 DD-1, 1, 0解答:字節(jié)空間 VAR1 : 2; VAR2 : 12; VAR3 : 20; VAR4 : 12。存儲(chǔ)空間的分配圖:DS: 00000A020000000000000000 000000004
33、84F00105720204152452020594F553F0102010200200102FFFFFFFF01000000000000002 假定VAR1 和 VAR2 為字變量, LAB 為標(biāo)號(hào),試指出下列指令的錯(cuò)誤之處。( 1 ) ADDVAR1 , VAR2( 2 ) SUBAL , VAR1( 3 ) JMPLABCX( 4 ) JNZVAR1( 5) MOV 1000H , 100 ( 6) SHL AL , 4 解答: (1)兩個(gè)操作數(shù)中至少有一個(gè)為 寄存器;(2)AL 為字節(jié), VAR1 為字變量,不匹配;(3) 中不能用 CX , LAB 為標(biāo)號(hào),非變量;(4)轉(zhuǎn)向地址應(yīng)為
34、標(biāo)號(hào),不能是變量;(5)目的操作數(shù)的類型不確定;(6)SHL 指令中,當(dāng)所移位數(shù)超過(guò)1 時(shí),必須用 CL 或 CX 來(lái)取代所移位數(shù)。3 對(duì)于下面的符號(hào)定義,指出下列指令的錯(cuò)誤。A1DB ?A2DB 10K1 EQU 1024( 1 ) MOVK1 , AX( 2 ) MOVA1 , AX( 3 ) CMPA1 , A2( 4 ) K1EQU 2048解答: (1)K1 為常量,不能用 MOV 指令賦值;(2)A1 為字節(jié), AX 為字變量,不匹配;(3)A1 未定義,無(wú)法做比較指令; (4)K1重新賦值前,必須用 PURGE 釋放。4 數(shù)據(jù)定義語(yǔ)句如下所示FIRST DB 90H , 5FH
35、, 6EH , 69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?) 自 FIRST 單元開(kāi)始存放的是一個(gè)四字節(jié)的十六進(jìn)制數(shù) ( 低位字節(jié)在前 ), 要求 :編一段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自 SECOND 開(kāi)始的單元, 右移兩位后存放到自THIRD 開(kāi)始的單元。 ( 注意保留移出部分)解答:DATA SEGMENTFIRST DB90H, 5FH , 6EH , 69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE , DS : DATASTART: MOV AX , D
36、ATAMOV DS, AXLEA SI , FIRSTLEA DI , SECONDMOV CX , 2CLC2 位MOV AX , SI ; AX=5F90H 為低十六位數(shù)據(jù)INC SIINC SIMOV DX , SI ; DX=696EH 為高十六位數(shù)據(jù)PUSH DX ;保存原有的高十六位數(shù)據(jù)PUSHAX ;保存原有的低十六位數(shù)據(jù)ROL DX , CL ; 將高位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即高2 位數(shù)據(jù)在 DL 的低 2 位AND DL , 03H ;讓 DL 中僅保存移出的高2位數(shù)據(jù)MOV DI+4 , DL ;將移出的高 2 位數(shù)據(jù)放入 SECOND 中的最高單元中ROL AX ,
37、CL ; 將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即 AX 的高 2 位在 AL 的低 2 位AND AL , 03H ;讓AL 中僅保存移出的 AX 高 2位數(shù)據(jù)MOV BL , AL ;將 AL 中的數(shù)據(jù)放入 BL 中保存POPAX;彈出原有的低十六位數(shù)據(jù)POPDX;彈出原有的高十六位數(shù)據(jù)SHLDX ,CL ;將高位數(shù)據(jù)算術(shù)邏輯左移2 位SHLAX ,CL ;將低位數(shù)據(jù)算術(shù)邏輯左移2 位OR DL , BL ;將AX 中移出的高2位數(shù)據(jù)放入 DX 的低 2 位MOVDI , AXMOVDI+2 , DXLEA SI , FIRSTLEA DI , THIRDMOV CX , 2CLCMOV AX
38、, SI ; AX=5F90H 為低十六位數(shù)據(jù)INC SIINC SIMOV DX , SI ; DX=696EH 為高十六位數(shù)據(jù)PUSH DX ;保存原有的高十六位數(shù)據(jù)PUSH AX ;保存原有的低十六位數(shù)據(jù)ROR AX , CL ; 將低位數(shù)據(jù)不帶進(jìn)位循環(huán)右移兩位,即低 2 位數(shù)據(jù)在 AH 的高 2 位AND AH , 0C0H ;讓 AH 中僅保存移出的低2位數(shù)據(jù)PUSH CXMOVCX , 6SHRAH , CLPOP CXMOV DI , AH ;將移出的低2 位數(shù)據(jù)放入 THIRD 中的最低單元中ROR DX , CL ; 將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即 AX 的高 2 位在
39、AL 的低 2 位AND DH , 0C0H ;讓 DH 中僅保存移出的 DX 低 2 位數(shù)據(jù)MOV BL , DH ;將 DH 中的數(shù)據(jù)放入 BL 中保存POP AX ;彈出原有的低十六位數(shù)據(jù)POPDX ;彈出原有的高十六位數(shù)據(jù)SHRDX , CL ;將高位數(shù)據(jù)算術(shù)邏輯左移2 位SHRAX , CL ;將低位數(shù)據(jù)算術(shù)邏輯左移2 位OR AH , BL ;將 DX 中移出的低2位數(shù)據(jù)放入 AX 的高 2 位MOVDI+1 , AXMOVDI+3 , DXMOV AH , 4CHINT 21HCODE ENDSENDSTART5 ( 14)在當(dāng)前數(shù)據(jù)區(qū)從400H 開(kāi)始的 256 個(gè)單元中存放著一
40、組數(shù)據(jù),試編程序?qū)⑺鼈冺樞虬嵋频綇腁000H 開(kāi)始的順序256 個(gè)單元中。解答:DATA SEGMENTORG 400HDAT1 DB .;256 DUP (?) ORG0A000HDAT2 DB .;256 DUP (?)DATA ENDSSTACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DA TASTART: MOV AX,DATAMOV DS,AX;CH3-14LEA SI,DAT1LEA DI,DAT2MOV CX,128AGAIN: MOV AL,SIMOV DI,ALINC SIINC DI
41、LOOP 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 NEXTMOV BL,0FFHJMP EXITERROR: MOV BL,00HEXIT:MOV AX,4C00HINT 21HCODE ENDSEND START6 試編程序?qū)?dāng)前數(shù)據(jù)區(qū)從BUFF 開(kāi)始的 4K 個(gè)單元中均寫入55H ,并逐個(gè)單元讀出比較,看寫入的與讀出的是否一致。若全對(duì),則將ERR 單元
42、置0H ;如果有錯(cuò),則將ERR 單元置FFH 。解答:DATA SEGMENT BUFF DB1000H DUP(?)ERR DB ?DATA ENDSJCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AX; 將 55H 依次放入 BUFF 開(kāi)始的 4K 個(gè)單元LEA SI,BUFFMOV CX,1000HMOV AL,55HNTXT: MOV SI,ALINC SILOOP NEXT;取出與55H 比較,全對(duì)則 ERR=0 ,否則LEA DI,BUFF LEA SI,ERRMOV CX,1000HNEXT1: MOV A
43、L,DI INC DICMP AL,55H JNZ ERROR ;若有一個(gè)不同,即置 LOOP NEXT1MOV AL,00HMOV SI,AL ;全比較完無(wú)錯(cuò),則置JMP EXITERROR: MOV AL,0FFH MOV SI,AL ; 返回 DOSEXIT:MOV AH,4CHINT 21HCODEENDSENDSTARTEND7在上題中,如果發(fā)現(xiàn)有錯(cuò)時(shí),要求在 修改?解答:DATA SEGMENT BUFF DB 1000H DUP(?)ERR DW ?DATA ENDS ;CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DA TAE
44、RR=FFHERR=FFHERR=0ERR 單元中存放出錯(cuò)的數(shù)據(jù)個(gè)數(shù),則程序該如何MOV DS,AX; 將 55H 依次放入 BUFF 開(kāi)始的 4K 個(gè)單元LEA SI,BUFFMOV CX,1000HMOV AL,55HNTXT: MOV SI,ALINC SILOOP NEXT ; 取55H 比較 LEADI,BUFFLEA SI,ERRMOV DX,0000HMOV CX,1000HNEXT1: MOV AL,DIINC DICMP AL,55HJZ NEXT2 ;若相同,則比較下一個(gè)INC DX ;否則將放出錯(cuò)個(gè)數(shù)的NEXT2 : LOOP NEXT1 MOV SI,DX;EXIT:M
45、OV AH,4CHINT 21HCODEENDSENDSTARTEND8 試編寫程序段,完成將數(shù)據(jù)區(qū)從知數(shù)據(jù)串以0AH 為結(jié)束符。解答:DATA SEGMENTORG 0100HDATA1 DB N DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AX; 將 DATA1 數(shù)據(jù)串中的數(shù)據(jù)取出并從LEASI,DATA1MOVCX,NMOVBL,0AHNTXT: MOV AL,SIDX 加 10100H 開(kāi)始的一串字節(jié)數(shù)據(jù)逐個(gè)從F0H 端口中輸出F0H 端口輸出,已CMP AL,BLJZEXITO
46、UT 0F0H,ALINCSILOOP NEXT; 返回DOSEXIT:MOV AH,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 7856HTHIRD DB ?,?,?DATA ENDS;STACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:C
47、ODE,SS:STACK,ES:DA TASTART: 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 EXITAA:MOV BYTE PTRBX,1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START10 (27)設(shè)字變量單元A
48、、 B 、 C 存放有三個(gè)數(shù),若三個(gè)數(shù)都不為零,則求三個(gè)數(shù)的和,存放在 D 中;若有一個(gè)為零,則將其余兩個(gè)也清零,試編寫程序。解答:DATA SEGMENTA DB ?B DB ?C DB ?D DW ?DATA ENDS;STACK SEGMENTSTACK ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK,ES:DA TASTART: MOV AX,DATAMOV DS,AXLEASI,ALEADI,DMOV AL,SICMP AL,00JZZEROADC DX,ALLEA SI,BMOV AL,SICMP AL,00JZZEROADC DX
49、,ALLEA SI,CMOV AL,SICMP AL,00JZ ZEROADCDX,ALMOVDI,DXJMP EXITZERO: MOV AL,0MOV A,ALMOVB,ALMOVC,AL;EXIT:MOV AX,4C00HINT 21HCODE ENDS END START11 (16)試編程序,統(tǒng)計(jì)由 TABLE開(kāi)始的128個(gè)單元中所存放的字符“ A ”的個(gè)數(shù),并將 結(jié)果存放在 DX 中。解答:DATA SEGMENTTABLEDB X1,X2,.X128DATA ENDS ;STACK SEGMENTSTACK ENDS ;CODE SEGMENTASSUME DS:DATA,CS:
50、CODE,SS:STACK,ES:DA TA START: MOV AX,DATA MOV DS,AXLEA SI,TABLEMOV DX,0MOV CX,128AGAIN: MOV AL,SI CMP AL,'A' JNZ NEXT INC DX NEXT: INC SILOOP AGAIN MOV AX,4C00H INT 21HCODE ENDSEND START12試編制一個(gè)匯編語(yǔ)言程序,求出首地址為DATA 的 1000 個(gè)字?jǐn)?shù)組中的最小偶數(shù),并把它存放于MIN 單元中。解答:DATA SEGMENTARRAY DW X1,X2,.X1000ARRAY_EVEN DW 1000 DUP(?)MIN DW ?MAX DW ?DATA ENDS ;STACK SEGMENTSTACK E
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 度假村租賃合同:休閑度假
- 農(nóng)村醫(yī)療點(diǎn)聘用合同模板
- 培訓(xùn)場(chǎng)地租賃合同范本
- 學(xué)校校園花崗巖鋪設(shè)合同
- 商業(yè)大廈建設(shè)施工合同樣本
- 智能決策通訊操作協(xié)議
- 建筑設(shè)備租賃文明施工合同
- 企業(yè)余款償還合同
- 水利設(shè)施防水施工合同
- 熱力公司供熱合作協(xié)議
- 2024智慧園區(qū)系統(tǒng)建設(shè)規(guī)范
- 肌肉筋膜疼痛綜合征
- 機(jī)加車間工作思路
- 2024年大學(xué)英語(yǔ)四六級(jí)考試大綱詞匯
- 國(guó)家自然科學(xué)基金項(xiàng)目申報(bào)建議
- 人教版八年級(jí)數(shù)學(xué)上冊(cè)第15章《分式》全部教案(共12課時(shí))
- 2024-2030年中國(guó)抗菌肽行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 人教精通版(2024)三年級(jí)上冊(cè)英語(yǔ)全冊(cè)教學(xué)設(shè)計(jì)
- 三高共管六病同防醫(yī)防融合管理制度
- 人教新課標(biāo)一年級(jí)數(shù)學(xué)上冊(cè) 5.5 《加減混合》說(shuō)課稿
- DL-T 438-2023 火力發(fā)電廠金屬技術(shù)監(jiān)督規(guī)程
評(píng)論
0/150
提交評(píng)論