新版匯編語(yǔ)言程序設(shè)計(jì)15章課后答案_第1頁(yè)
新版匯編語(yǔ)言程序設(shè)計(jì)15章課后答案_第2頁(yè)
新版匯編語(yǔ)言程序設(shè)計(jì)15章課后答案_第3頁(yè)
新版匯編語(yǔ)言程序設(shè)計(jì)15章課后答案_第4頁(yè)
新版匯編語(yǔ)言程序設(shè)計(jì)15章課后答案_第5頁(yè)
已閱讀5頁(yè),還剩69頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、新版匯編語(yǔ)言程序設(shè)計(jì)【課后習(xí)題答案】第1章 匯編語(yǔ)言基礎(chǔ)知識(shí)習(xí)題1.1簡(jiǎn)述計(jì)算機(jī)系統(tǒng)的硬件組成及各部分作用。 解答 CPU:包括運(yùn)算器、控制器和寄存器組。運(yùn)算器執(zhí)行所有的算術(shù)和邏輯運(yùn)算;控制器負(fù)責(zé)把指指令逐條從存儲(chǔ)器中取出,經(jīng)譯碼分析后向機(jī)器發(fā)出各種控制命令,并正確完成程序所要求的功能;寄存器組為處理單元提供所需要的數(shù)據(jù)。存儲(chǔ)器:是計(jì)算機(jī)的記憶部件,它用來(lái)存放程序以及程序中所涉及的數(shù)據(jù)。外部設(shè)備:實(shí)現(xiàn)人機(jī)交換和機(jī)間的通信。習(xí)題1.2明確下列概念或符號(hào): 主存和輔存,RAM和ROM,存儲(chǔ)器地址和I/O端口,KB、MB、GB和TB解答主存又稱內(nèi)存是主存儲(chǔ)器的簡(jiǎn)稱,主存儲(chǔ)器存放當(dāng)前正在執(zhí)行的程序和使

2、用的數(shù)據(jù),CPU可以直接存取,它由半導(dǎo)體存儲(chǔ)器芯片構(gòu)成其成本高、容量小、但速度快。輔存是輔助存儲(chǔ)器的簡(jiǎn)稱,輔存可用來(lái)長(zhǎng)期保存大量程序和數(shù)據(jù),CPU需要通過(guò)I/O接口訪問(wèn),它由磁盤或光盤構(gòu)成,其成本低、容量大,但速度慢。RAM是隨機(jī)存取存儲(chǔ)器的英語(yǔ)簡(jiǎn)寫(xiě),由于CPU可以從RAM讀信息,也可以向RAM寫(xiě)入信息,所以RAM也被稱為讀寫(xiě)存儲(chǔ)器,RAM型半導(dǎo)體存儲(chǔ)器可以按地址隨機(jī)讀寫(xiě),但這類存儲(chǔ)器在斷電后不能保存信息;而ROM中的信息只能被讀出,不能被修改,ROM型半導(dǎo)體通常只能被讀出,但這類存儲(chǔ)器斷電后能保存信息。存儲(chǔ)器由大量存儲(chǔ)單元組成。為了區(qū)別每個(gè)單元,我們將它們編號(hào),于是,每個(gè)存儲(chǔ)單元就有了一個(gè)存

3、儲(chǔ)地址,I/O接口是由一組寄存器組成,為了區(qū)別它們,各個(gè)寄存器進(jìn)行了編號(hào),形成I/O地址,通常稱做I/O端口。KB是千字節(jié)、MB是兆字節(jié)、GB是吉字節(jié)和TB是太字節(jié),它們都是表示存儲(chǔ)器存儲(chǔ)單元的單位。習(xí)題1.3什么是匯編語(yǔ)言源程序、匯編程序、目標(biāo)程序? 解答用匯編語(yǔ)言書(shū)寫(xiě)的程序就稱為匯編語(yǔ)言源程序;完成匯編工作的程序就是匯編程序;由匯編程序編譯通過(guò)的程序就是目標(biāo)程序。習(xí)題1.4匯編語(yǔ)言與高級(jí)語(yǔ)言相比有什么優(yōu)缺點(diǎn)? 解答匯編語(yǔ)言與高級(jí)語(yǔ)言相比的優(yōu)點(diǎn):由于匯編語(yǔ)言本質(zhì)就是機(jī)器語(yǔ)言,它可以直接地、有效地控制計(jì)算機(jī)硬件,因而容易產(chǎn)生運(yùn)行速度快,指令序列短小的高效目標(biāo)程序,可以直接控制計(jì)算機(jī)硬件部件,可

4、以編寫(xiě)在“時(shí)間”和“空間”兩方面最有效的程序。匯編語(yǔ)言與高級(jí)語(yǔ)言相比的缺點(diǎn):由于與處理器密切相關(guān)導(dǎo)致通用性差、可移植性差,匯編語(yǔ)言功能有限,又涉及寄存器、主存單元等硬件細(xì)節(jié),編寫(xiě)匯編語(yǔ)言比較繁瑣,調(diào)試起來(lái)也比較困難,編譯程序產(chǎn)生的目標(biāo)程序往往比較龐大、程序難以優(yōu)化,運(yùn)行速度慢。習(xí)題1.5將下列十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制和十進(jìn)制表示 (1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH解答(1)FFH 11111111B 255D (2)0H 0B 0D (3)5EH 1011110B 94D (4)EFH 11101111B 239D(5)2E

5、H 101110B 46D (6)10H 10000B 16D (7)1FH 11111B 31D(8)ABH 10101011B 171D習(xí)題1.6將下列十進(jìn)制數(shù)轉(zhuǎn)換為BCD碼表示(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)2458解答(1)12 00010010 (2)24 00100100 (3)68 01101000 (4)127 000100100111(5)128 000100101000 (6)255 001001010101習(xí)題1.7將下列BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)(1)10010001 (2)10001001 (3)00110

6、110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)00000010解答(1)91 (2)89 (3)36 (4)90(5)08 (6)97(7)81 (8)02習(xí)題1.8將下列十進(jìn)制數(shù)分別用8位二進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼表示 (1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)68解答(1)0 +0 00000000 00000000 00000000 -0 10000000 11111111 00000000(2)-127 11111111 10000000 10000001(3)1

7、27 01111111 01111111 01111111 (4)-57 10101111 11010000 11010001(5)126 01111110 01111110 01111110(6)-126 11111110 10000001 10000010(7)-128 10000000(8)68 01000100 01000100 01000100習(xí)題1.9完成下列二進(jìn)制數(shù)的運(yùn)算 (1)10111001 (2)10111001 (3)1011×1001 (4)10111000÷1001(5)1011 1001 (6)1011 1001 (7)1011 (8)1011

8、? 1001解答(1)10111001=10100 (2)10111001=0010 (3)1011×1001=1100011 (4)10111000÷1001=10100,余數(shù) 1000(5)1011 1001=1001 (6)1011 1001=1011 (7)1011=0100 (8) 1011?1001=0010(?代表異或)習(xí)題1.10數(shù)碼09、大寫(xiě)字母AZ、小寫(xiě)字母az對(duì)應(yīng)的ASCII碼分別是多少?ASCII碼為0dh、0ah對(duì)應(yīng)的是什么字符? 解答數(shù)碼09:30H39H大寫(xiě)字母AZ:41H5AH小寫(xiě)字母az:61H7AHASCII碼為0dh、0ah分別對(duì)應(yīng)回車

9、和換行控制字符。習(xí)題1.11計(jì)算機(jī)中有一個(gè)“01100001”編碼,如果把它認(rèn)為是無(wú)符號(hào)數(shù),它是十進(jìn)制什么數(shù)?如果認(rèn)為它是BCD碼,則表示什么數(shù)?又如果它是某個(gè)ASCII碼,則代表哪個(gè)字符? 解答十進(jìn)制無(wú)符號(hào)數(shù):01100001B61H97BCD碼:61ASCII碼:a習(xí)題1.12簡(jiǎn)述Intel 80x86系列微處理器在指令集方面的發(fā)展。 解答1978年Intel,正式推出了16位8086CPU,1979年Intel推出了準(zhǔn)16位微處理器8088,隨后,Intel推出了80186/80188,80186/80188指令系統(tǒng)比8086指令系統(tǒng)新增了若干條實(shí)用的指令,涉及堆棧操作、移位指令、過(guò)程指

10、令和邊界檢測(cè)及乘法指令,1982年Intel推出80286 CPU, 80286指令系統(tǒng)包括全部80186指令及新增的保護(hù)指令15條,其中有些保護(hù)方式在實(shí)方式下也可以使用,1985年,Intel80x86推出微處理器地進(jìn)入第三代80386 CPU, 80386指令系統(tǒng)在兼容原來(lái)16位指令系統(tǒng)的基礎(chǔ)上,全面升級(jí)為32位,還新增了有關(guān)位操作、條件設(shè)置指令以及控制、調(diào)試和測(cè)試寄存器的傳送指令等,1989年,Intel推出了80486CPU,80486將浮點(diǎn)處理單元FPU集成進(jìn)來(lái),還采用了精簡(jiǎn)指令集計(jì)算機(jī)技術(shù)RISC和指令流水線方式,還新增了用于多處理器和內(nèi)部Cache操作的6條指令,1993年Int

11、el制成了俗稱586的微處理器,取名Pentium。Pentium仍為32位結(jié)構(gòu),地址總線為32位,對(duì)常用的簡(jiǎn)單指令用硬件實(shí)現(xiàn),重新設(shè)計(jì)指令的微代碼等,Pentium新增了一條8字節(jié)比較交換指令和一條處理器識(shí)別指令,以及4條系統(tǒng)專用指令,1996年推出了MMX Pentium,新增了57條多媒休指令,1995年Intel推出Pentium Pro新增了3條指令,1999年推出了Pentium新增了70條SSE指令,2000年推出的Pentium4新增了76條SSE2指令習(xí)題1.13什么是DOS和ROM-BIOS? 解答DOS是Diskette Operating system的縮寫(xiě),意思是磁盤

12、操作系統(tǒng),DOS主要是面向磁盤的系統(tǒng)軟件,說(shuō)得簡(jiǎn)單些,就是人與機(jī)器的一座橋梁,是罩在機(jī)器硬件外面的一層“外殼”,是19811995年的個(gè)人電腦上使用的一種主要的操作系統(tǒng)。BIOS(Basic InputOutput System)即基本輸入輸出系統(tǒng),通常是固化在只讀存儲(chǔ)器(ROM)中,所以又稱為ROMBIOS。它直接對(duì)計(jì)算機(jī)系統(tǒng)中的輸入、輸出設(shè)備進(jìn)行設(shè)備級(jí)、硬件級(jí)的控制,是連接軟件程序和硬件設(shè)備之間的樞紐。ROMBIOS是計(jì)算機(jī)系統(tǒng)中用來(lái)提供最低級(jí)、最直接的硬件控制的程序。習(xí)題1.14簡(jiǎn)述PC機(jī)最低1MB主存空間的使用情況。 解答(1)基本RAM區(qū)(00000H9FFFFH)該區(qū)共640KB,

13、由DOS進(jìn)行管理。在這個(gè)區(qū)域中操作系統(tǒng)要占用掉一部分低地址空間,其它則向用戶程序開(kāi)放。(2)保留區(qū)RAM(A0000H-BFFFFFH)該區(qū)為系統(tǒng)安排的“顯示緩沖存儲(chǔ)區(qū)”,共126KB,是顯卡上的芯片提供支持,用于存放屏幕顯示信息。但這部分地址空間實(shí)際上并沒(méi)有全部使用。(3)擴(kuò)展區(qū)ROM(C0000H-DFFFFH)該區(qū)128KB,由接口卡上的芯片提供支持,用于為系統(tǒng)不直接支持的外設(shè)安排設(shè)備驅(qū)動(dòng)程序。用戶固化的程序就可安排在這一段,系統(tǒng)的會(huì)對(duì)它進(jìn)行確認(rèn)和連接。(4)系統(tǒng)區(qū)ROM(E0000H-FFFFFH)該區(qū)共128KB,由系統(tǒng)占用,它主要提供ROM-BIOS程序,基本輸入輸出程序BIOS,

14、是操作系統(tǒng)的重要組成部分,主要用來(lái)驅(qū)動(dòng)輸入輸出設(shè)備,也負(fù)責(zé)系統(tǒng)的上電檢測(cè),磁盤引導(dǎo)等初始化操作,在ROM-BIOS中還有CMOS微機(jī)設(shè)置程序以及使用的字符圖符信息等內(nèi)容。習(xí)題1.15羅列8086CPU的8個(gè)8位和16位通用寄存器,并說(shuō)明各自的作用。 解答(1)數(shù)據(jù)寄存器:AX稱為累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;BX稱為基址寄存器,常用做存放存儲(chǔ)器地址;CX稱為計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器;DX稱為數(shù)據(jù)寄存器,常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高16位,或存放外設(shè)端口地址。(2)指針及變址寄存器包括SI,DI,BP,S P,四個(gè)寄存器,常用于存儲(chǔ)器尋址時(shí)提供地址

15、。SI是源變址寄存器,DI是目的變址寄存器,一般與DS聯(lián)用確定數(shù)據(jù)段和附加段中某一存儲(chǔ)單元地址,在串指令中,SI與DS聯(lián)用、DI和ES聯(lián)用,分別尋址數(shù)據(jù)段和附加段;同時(shí),在串指令中,SI和DI還都具有自動(dòng)增量或減量的功能。S P,為堆棧指針寄存器,指示棧頂?shù)钠频刂?;BP為基地址指針寄存器,表示堆棧段中的基地址。S P與BP寄存器均可與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址。習(xí)題1.16什么是標(biāo)志,它有什么用途?狀態(tài)標(biāo)志和控制標(biāo)志有什么區(qū)別?畫(huà)出標(biāo)志寄存器FLAGS,說(shuō)明各個(gè)標(biāo)志的位置和含義。 解答標(biāo)志用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。它是匯編語(yǔ)言程序設(shè)計(jì)中必須特別注意的一個(gè)方

16、面,狀態(tài)用來(lái)記錄運(yùn)行的結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它,控制標(biāo)志位可由程序根據(jù)需要用指令設(shè)置,用來(lái)控制處理器執(zhí)行指令的方式。 CF是進(jìn)位標(biāo)志;ZF 是零標(biāo)志;SF是符號(hào)標(biāo)志;PF奇偶標(biāo)志;OF溢出標(biāo)志;AF輔助進(jìn)位標(biāo)志;DF方向標(biāo)志;IF中斷允許標(biāo)志;TF陷阱標(biāo)志。習(xí)題1.17舉例說(shuō)明CF和OF標(biāo)志的差異。 解答溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志。進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果仍然正確;溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確。例1:3AH + 7CHB6H無(wú)符號(hào)數(shù)運(yùn)算:58124182,范圍內(nèi),無(wú)進(jìn)位有符號(hào)數(shù)運(yùn)算: 58124

17、182 ,范圍外,有溢出例2:AAH + 7CH(1)26H無(wú)符號(hào)數(shù)運(yùn)算:170124294,范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算:8612428 ,范圍內(nèi),無(wú)溢出習(xí)題1.18字和雙字在存儲(chǔ)器中如何存放,什么是“小端方式”?對(duì)字和雙字存儲(chǔ)單元,什么是它們的對(duì)齊地址?為什么要對(duì)齊地址? 解答字或雙字在存儲(chǔ)器中占相鄰的2個(gè)或4個(gè)存儲(chǔ)單元;存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;字或雙字單元的地址用它的低地址來(lái)表示。80x86處理器采用的這種“低對(duì)低,高對(duì)高”的存儲(chǔ)形式,被稱為“小端方式”;將字單元安排在偶地址,雙字節(jié)單元安排在模4地址,被稱為“地址對(duì)齊方式”因?yàn)閷?duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問(wèn)時(shí),需要額

18、外的訪問(wèn)時(shí)間,所以通常應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速度。習(xí)題1.19什么是8086中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?請(qǐng)將如下邏輯地址用物理地址表達(dá): (1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h解答在8086處理器中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元都有一個(gè)唯一的20位編號(hào),就是物理地址,從00000HFFFFFH。在8086內(nèi)部和用戶編程時(shí),采用的段基地址 : 段內(nèi)偏移地址形式稱為邏輯地址。將邏輯地址中的段地址左移二進(jìn)制4位(對(duì)應(yīng)16進(jìn)制是一位,即乘以16),加上偏移地址就得到20位物理地址如下邏輯地址用物理地址表達(dá):

19、(1)FFFFh:0FFFF0H(2)40h:17h00417H(3)2000h:4500h24500H(4)B821h:4567hBC777H (不要算錯(cuò))習(xí)題1.208086有哪4種邏輯段,各種邏輯段分別是什么用途? 解答代碼段(Code Segment)用來(lái)存放程序的指令序列。處理器利用CS : IP取得下一條要執(zhí)行的指令。堆棧段(Stack Segment)確定堆棧所在的主存區(qū)域。處理器利用SS : SP操作堆棧中的數(shù)據(jù)。數(shù)據(jù)段(Data Segment)存放當(dāng)前運(yùn)行程序所用的數(shù)據(jù)。處理器利用DS : EA存取數(shù)據(jù)段中的數(shù)據(jù)。附加段(Extra Segment)是附加的數(shù)據(jù)段,也用于數(shù)

20、據(jù)的保存。處理器利用ES : EA存取數(shù)據(jù)段中的數(shù)據(jù)習(xí)題1.21數(shù)據(jù)的默認(rèn)段是哪個(gè),是否允許其他段存放數(shù)據(jù)?如果允許,如何實(shí)現(xiàn),有什么要求?解答數(shù)據(jù)的默認(rèn)段是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段,允許其它段存放數(shù)據(jù),數(shù)據(jù)的存放比較靈活的,實(shí)際上可以存放在任何一種邏輯段中,這時(shí),只要明確指明是哪個(gè)邏輯段就可以了。習(xí)題1.22什么是操作碼、操作數(shù)和尋址方式?有哪三種給出操作數(shù)的方法? 解答操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,它是指令中不可缺少的組成部分,操作數(shù)是指令執(zhí)行的參與者,也是各種操作的對(duì)象,我們把尋找數(shù)的方式叫做操作數(shù)的尋址方式。給出操作數(shù)的三種方法是直接給出,間

21、接給出,隱藏操作數(shù)方式給出。習(xí)題1.23什么是有效地址EA?8086的操作數(shù)如果在主存中,有哪些尋址方式可以存取它? 解答DS存放數(shù)據(jù)段的段地址,存儲(chǔ)器中操作數(shù)的偏移地址則由各種主存方式得到,稱之為有效地址EA。8086的操作數(shù)如果在主存中,可以存取它的尋址方式有直接尋址方式、寄存器間接尋址方式、寄存器相對(duì)尋址方式、基址變址尋址方式、相對(duì)基址變址尋址方式。習(xí)題1.24說(shuō)明下列指令中源操作數(shù)的尋址方式?如果BX2000H,DI40H,給出DX的值或有效地址EA的值。 (1) mov dx,1234h(2) mov dx,1234h(3) mov dx,bx(4) mov dx,bx(5) mov

22、 dx,bx+1234h(6) mov dx,bx+di(7) mov dx,bx+di+1234h解答(1)直接尋址,EA1234H(2)立即數(shù)尋址,DX1234H(3)寄存器尋址,DX2000H(4)間接尋址,EA2000H(5)相對(duì)尋址,EA3234H(6)基址變址尋址,EA2040H(7)相對(duì)基址變址尋址,EA3274H第2章 8086的指令系統(tǒng)習(xí)題2.1已知DS2000H、BX0100H、SI0002H,存儲(chǔ)單元20100H20103H依次存放12 34 56 78H,21200H21203H依次存放2A 4C B7 65H,說(shuō)明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容。(1) mov

23、ax,1200h(2) mov ax,bx(3) mov ax,1200h(4) mov ax,bx(5) mov ax,bx+1100h(6) mov ax,bx+si(7) mov ax,bxsi+1100h解答(1)AX1200H(2)AX0100H(3)AX4C2AH   ;偏移地址=bx=0100h(4)AX3412H    ;偏移地址=bx=0100h(5)AX4C2AH   ;偏移地址=bx+1100h=1200h(6)AX7856H    ;偏移地址=bx+si=0100h+00

24、02h=0102h(7)AX65B7H    ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 習(xí)題2.2指出下列指令的錯(cuò)誤(1) mov cx,dl(2) mov ip,ax(3) mov es,1234h(4) mov es,ds(5) mov al,300(6) mov sp,ax(7) mov ax,bx+di(8) mov 20h,ah解答(1)兩操作數(shù)類型不匹配(2)IP指令指針禁止用戶訪問(wèn)(3)立即數(shù)不允許傳給段寄存器(4)段寄存器之間不允許傳送(5)兩操作數(shù)類型不匹配(6)目的操作數(shù)應(yīng)為 SI (7)源操

25、作數(shù)應(yīng)為 BX+DI  (8)立即數(shù)不能作目的操作數(shù)習(xí)題2.3已知數(shù)字0 9對(duì)應(yīng)的格雷碼依次為:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請(qǐng)為如下程序段的每條指令加上注釋,說(shuō)明每條指令的功能和執(zhí)行結(jié)果。           lea bx,table           mov al,8

26、0;          xlat解答           lea bx,table          ;獲取table的首地址,BX200H           mov al,8   

27、60;           ;傳送欲轉(zhuǎn)換的數(shù)字,AL8           xlat                       ;轉(zhuǎn)換為格雷碼,AL12H  P35習(xí)題

28、2.4什么是堆棧,它的工作原則是什么,它的基本操作有哪兩個(gè),對(duì)應(yīng)哪兩種指令?解答堆棧是一種按“先進(jìn)后出”原則存取數(shù)據(jù)的存儲(chǔ)區(qū)域,位于堆棧段中,使用SS段寄存器記錄其段地址;它的工作原則是先進(jìn)后出;堆棧的兩種基本操作是壓棧和出棧,對(duì)應(yīng)的指令是PUSH和POP。習(xí)題2.5已知SS = 2200H、SP = 00B0H,畫(huà)圖說(shuō)明執(zhí)行下面指令序列時(shí),堆棧區(qū)和SP的內(nèi)容如何變化?           mov ax,8057h       

29、;    push ax           mov ax,0f79h             push ax           pop bx         

30、0; pop bx解答           mov ax,8057h           push ax           mov ax,0f79h           push ax &

31、#160;         pop bx                ;bx=0f79h           pop bx            &

32、#160; ;DS:0f79h=8057h 習(xí)題2.6給出下列各條指令執(zhí)行后AL值,以及CF、ZF、SF、OF和PF的狀態(tài):           mov al,89h           add al,al           add al,9dh   

33、60;       cmp al,0bch           sub al,al           dec al           inc al解答mov al,89h     

34、60;     ; AL=89h   CF  ZF  SF  OF  PFadd al,al               ; AL=12h   1   0   0   1   1; 1000 1001+1000 1001 10001 0010  add al,

35、9dh              ; AL=0afh  0   0   1   0   1; 0001 0010+ 1001 1101  1010 1111  cmp al,0bch          ; AL=0afh  1   0 &#

36、160; 1   0   1; 1010 1111-1011 1100* 0100 0011 sub al,al                AL=00h   0   1   0   0   1 dec al       

37、60;           ; AL=0ffh  0   0   1   0   1; 0000 0000- 0000 0001 *1111 1111 inc al                    ; A

38、L=00h   0   1   0   0   1;1111 1111+0000 0001*1111 1111 習(xí)題2.7設(shè)X、Y、Z均為雙字?jǐn)?shù)據(jù),分別存放在地址為X、X+2;Y、Y+2;Z、Z+2的存儲(chǔ)單元中,它們的運(yùn)算結(jié)果存入W單元。閱讀如下程序段,給出運(yùn)算公式。           mov ax,X       

39、    mov dx,X+2            add ax,Y           adc dx,Y+2            add ax,24        &

40、#160;  adc dx,0            sub ax,Z           sbb dx,Z+2            mov W,ax          

41、; mov W+2,dx 解答        WX+Y+24-Z習(xí)題2.8請(qǐng)分別用一條匯編語(yǔ)言指令完成如下功能:(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。(2)用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器的一個(gè)字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL中。(3)用BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和CX寄存器的內(nèi)容相加,并把結(jié)果送回存儲(chǔ)器中。(4)用位移量為0520H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)3412H相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù)0A0H與AL寄

42、存器的內(nèi)容相加,并把結(jié)果送回AL中。解答(1)ADD DX,BX(2)ADD AL,BX+SI(3)ADD BX+0B2H,CX(4)ADD WORD PTR 0520H,3412H(5)ADD AL,0A0H習(xí)題2.9設(shè)X、Y、Z、V均為16位帶符號(hào)數(shù),分別裝在X、Y、Z、V存儲(chǔ)單元中,閱讀如下程序段,得出它的運(yùn)算公式,并說(shuō)明運(yùn)算結(jié)果存于何處。           mov ax,X     ;ax=X    

43、60;      imul Y       ;DX.AX=X*Y            mov cx,ax    ;cx=X*Y的低16位           mox bx,dx    ;bx=X*Y的高16位 

44、;           mov ax,Z      ax=Z           cwd           add cx,ax    ;cx=Z的低16位+X*Y的低16位    

45、;       adc bx,dx    bx=Z的高16位+X*Y的高16位+低位進(jìn)位            sub cx,540   ;cx=Z的低16位+X*Y的低16位-540           sbb bx,0     

46、;  bx=Z的高16位+X*Y的高16位+低位進(jìn)位-低位借位            mov ax,V      ;ax=V           cwd           sub ax,cx     

47、;ax=V的低16位-(Z的低16位+X*Y的低16位-540)          sbb dx,bx     dx=V的高16位-(Z的高16位+X*Y的高16位+低位進(jìn)位-低位借位)-低位借位           idiv X ;/X解答       V-(X*Y+Z-540)/X  

48、     AX存商,DX存余數(shù) 習(xí)題2.10指出下列指令的錯(cuò)誤:(1) xchg si,30h(2) pop cs(3) sub si,di(4) push ah(5) adc ax,ds(6) add si,80h(7) in al,3fch(8) out dx,ah解答(1)xchg的操作數(shù)不能是立即數(shù)(2)不應(yīng)對(duì)CS直接賦值(3)兩個(gè)操作數(shù)不能都是存儲(chǔ)單元(4)堆棧的操作數(shù)不能是字節(jié)量(5)adc的操作數(shù)不能是段寄存器(6)沒(méi)有確定是字節(jié)還是字操作(7)in不支持超過(guò)FFH的直接尋址(8)out只能以AL/AX為源操作數(shù)習(xí)題2.11給出下列各條指令

49、執(zhí)行后的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF的狀態(tài)。           mov ax,1470h           and ax,ax           or ax,ax         

50、60; xor ax,ax           not ax           test ax,0f0f0h解答                        

51、;                                  mov ax,1470h          ;AX1470H CF  ZF  SF  OF

52、  PF                                                

53、60;              and ax,ax                 ;AX1470H 0   0   0   0   0         &#

54、160;  ;0001 0100 0111 0000            or ax,ax                   ;AX1470H 0   0   0   0   0    

55、       xor ax,ax                 ;AX0000H 0   1   0   0   1           not ax     

56、;                 ;AXFFFFH 0   1   0   0   1           test ax,0f0f0h         ;AXFFFFH 0  

57、 0   1   0   1注意:MOV和NOT指令不影響標(biāo)志位;其他邏輯指令使CFOF0,根據(jù)結(jié)果影響其他標(biāo)志位。習(xí)題2.12假設(shè)例題2.32的程序段中,AX = 08H,BX = 10H,請(qǐng)說(shuō)明每條指令執(zhí)行后的結(jié)果和各個(gè)標(biāo)志位的狀態(tài)。解答           指令               執(zhí)行結(jié)果&#

58、160;                    CF OF SF ZF PF           mov si,ax    ; SI=AX=0008H           

59、0;    -     -      -   -     -           shl si,1        ; SI=2*AX=0010H         

60、0;   0    0    0    0    0           add si,ax     ; SI=3*AX=0018H             0    0

61、    0    0    1            mov dx,bx    DX=BX=0010H              0    0    0    0

62、0;   1            mov cl,03h   CL=03H                         0    0    0&#

63、160;   0    1            shl dx,cl       ; DX=8*BX=0080H          0    u    0    0    0   

64、         sub dx,bx    ; DX=7*BX=0070H           0    0    0    0    0           add dx,si&

65、#160;     DX=7*BX+3*AX=0088H  0    0    0    0    1注意:邏輯左移N次相當(dāng)于無(wú)符號(hào)整數(shù)乘以2的N次方,邏輯右移N次相當(dāng)于無(wú)符號(hào)整數(shù)除以2的N次方。移位指令根據(jù)移位的數(shù)據(jù)設(shè)置CF,根據(jù)移位后的結(jié)果影響SF,ZF,PF。在進(jìn)行一位移位時(shí),根據(jù)最高符號(hào)位是否改變?cè)O(shè)置OF,如改變則OF1。另外,程序注釋用“u”表示標(biāo)志無(wú)定義(不確定),“-”表示無(wú)影響。習(xí)題2.13編寫(xiě)程序段

66、完成如下要求:(1)用位操作指令實(shí)現(xiàn)AL(無(wú)符號(hào)數(shù))乘以10(2)用邏輯運(yùn)算指令實(shí)現(xiàn)數(shù)字0 9的ASCII碼與非壓縮BCD碼的互相轉(zhuǎn)換(3)把DX.AX中的雙字右移4位解答(1) 不考慮進(jìn)位                   mov bl,al           mov cl,3   

67、        shl al,cl               ;*8           add al,bl             ;shl bl,1  &

68、#160;          add al,bl           ;考慮進(jìn)位           xor ah,ah           mov bx,ax    &

69、#160;      mov cl,3           shl ax,cl           add ax,bx             ;shl bx,1     

70、0;     add ax,bx(2)數(shù)字09的ASCII碼是:30h39h        非壓縮BCD碼的09是:00h09h方法一:           and al,0fh            ;實(shí)現(xiàn)ASCII到非壓縮BCD碼的轉(zhuǎn)換   &#

71、160;       or al,30h             ;實(shí)現(xiàn)非壓縮BCD碼到ASCII的轉(zhuǎn)換方法二:           xor al,30h            ;求反D5D4位,其他不變

72、60;          ;即高4位為3,則變?yōu)?;高4位為0,則變?yōu)?(3)   mov cl,4again:  shr dx,1              ;實(shí)現(xiàn)邏輯右移              

73、;                           ;采用“sar dx,1”,則實(shí)現(xiàn)算術(shù)右移             rcr ax,1      

74、0;      dec cl             jnz again習(xí)題2.14已知AL = F7H(表示有符號(hào)數(shù)-9),分別編寫(xiě)用SAR和IDIV指令實(shí)現(xiàn)的除以2的程序段,并說(shuō)明各自執(zhí)行后,所得的商是什么?解答(1)用sar編寫(xiě)           mov al,0f7h    &#

75、160;      ; -9送AL 1111 1001           sar al,1              ; 結(jié)果:AL=1111 1100B=0FBH  即-5(2)用idiv編寫(xiě)         

76、60; mov al,0f7h           ; -9送al           cbw                   ; 字節(jié)符號(hào)擴(kuò)展位字     

77、0;     mov bl,2              ; 注意除數(shù)不可為立即數(shù)           idiv bl               ; 結(jié)果:商為al=fch  (

78、-4)                                ; 余數(shù):ah=ffh (-1) 結(jié)論:符號(hào)數(shù)的除法用idiv 準(zhǔn)確。  習(xí)題2.15已知數(shù)據(jù)段500h 600h處存放了一個(gè)字符串,說(shuō)明下列程序段執(zhí)行后的結(jié)果:    

79、       mov si,600h           mov di,601h           mov ax,ds           mov es,ax      

80、0;    mov cx,256           std           rep movsb解答 習(xí)題2.16說(shuō)明下列程序段的功能           cld        

81、;   mov ax,0fefh           mov cx,5           mov bx,3000h           mov es,bx           m

82、ov di,2000h           rep stosw解答 將es:di (即3000:2000h或32000h)開(kāi)始的5個(gè)單元的內(nèi)容置為0fefh。習(xí)題2.17指令指針I(yè)P是通用寄存器還是專用寄存器?有指令能夠直接它賦值嗎?哪類指令的執(zhí)行會(huì)改變它的值? 解答指令指針I(yè)P不是通用寄存器,不可直接賦值,屬于專用寄存器。有且僅有循環(huán)、轉(zhuǎn)移、子程序調(diào)用和返回、中斷類等指令可以改變它的值。習(xí)題2.18控制轉(zhuǎn)移類指令中有哪三種尋址方式?解答控制轉(zhuǎn)移類指令的尋址方式:相對(duì)尋址、直接尋址方式

83、和間接尋址方式(又可以分成寄存器和存儲(chǔ)器間接尋址)。習(xí)題2.19什么是短轉(zhuǎn)移short jump、近轉(zhuǎn)移near jump和遠(yuǎn)轉(zhuǎn)移far jump?什么是段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移?8086有哪些指令可以實(shí)現(xiàn)段間轉(zhuǎn)移?解答短轉(zhuǎn)移:指段內(nèi)128127之間的轉(zhuǎn)移,位移量用一個(gè)字節(jié)表示近轉(zhuǎn)移:指段內(nèi)±32K之間的轉(zhuǎn)移,位移量用一個(gè)字表示遠(yuǎn)轉(zhuǎn)移:指段間1MB范圍的轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:指在同一個(gè)代碼段內(nèi)的轉(zhuǎn)移,可以是短轉(zhuǎn)移或者近轉(zhuǎn)移段間轉(zhuǎn)移:指轉(zhuǎn)移到另外一個(gè)代碼段,就是遠(yuǎn)轉(zhuǎn)移8086/8088CPU的JMP、CALL和INT n指令可以實(shí)現(xiàn)段間轉(zhuǎn)移習(xí)題2.208086的條件轉(zhuǎn)移指令的轉(zhuǎn)移范圍有多大?實(shí)際編程

84、時(shí),你如何處理超出范圍的條件轉(zhuǎn)移?解答8086的條件轉(zhuǎn)移的轉(zhuǎn)移范圍:在當(dāng)前指令地址的 +127-128之內(nèi)。如條件轉(zhuǎn)移的轉(zhuǎn)移范圍超出此范圍,可在此范圍內(nèi)安排一條無(wú)條件轉(zhuǎn)移,再轉(zhuǎn)移到范圍外的目標(biāo)地址。習(xí)題2.21假設(shè)DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,232F7H=3280H,264E5H=2450H,試問(wèn)執(zhí)行下列段內(nèi)間接尋址的轉(zhuǎn)移指令后,轉(zhuǎn)移的有效地址是什么?(1) JMP BX(2) JMP TABLEBX(3) JMP BXSI解答(1)轉(zhuǎn)移的有效地址EA= BX=1256H(2)轉(zhuǎn)移的有效地址EA= DS:20A1H+1256H=232F7

85、=3280H(3)轉(zhuǎn)移的有效地址EA= DS:1256H+528FH=264E5H=2450H習(xí)題2.22判斷下列程序段跳轉(zhuǎn)的條件           (1) xor ax,1e1eh                       je equal   

86、0;       (2)test al,10000001b                     jnz there           (3)cmp cx,64h       

87、              jb there解答(1)AX1e1eh(異或后為0)(2)AL的D0或D7至少有一位為1(3)CX(無(wú)符號(hào)數(shù)) 64h習(xí)題2.23設(shè)置CX = 0,則LOOP指令將循環(huán)多少次?例如:             mov cx,0delay:   loop delay解答 &

88、#160; 216次。習(xí)題2.24假設(shè)AX和SI存放的是有符號(hào)數(shù),DX和DI存放的是無(wú)符號(hào)數(shù),請(qǐng)用比較指令和條件轉(zhuǎn)移指令實(shí)現(xiàn)以下判斷:(1)若DX > DI,轉(zhuǎn)到above執(zhí)行;(2)若AX > SI,轉(zhuǎn)到greater執(zhí)行;(3)若CX = 0,轉(zhuǎn)到zero執(zhí)行;(4)若AXSI產(chǎn)生溢出,轉(zhuǎn)到overflow執(zhí)行;(5)若SIAX,轉(zhuǎn)到less_eq執(zhí)行;(6)若DIDX,轉(zhuǎn)到below_eq執(zhí)行。解答(1)若DX > DI,轉(zhuǎn)到above執(zhí)行           cmp d

89、x,di           ja above              ;jnbe above(2)若AX > SI,轉(zhuǎn)到greater執(zhí)行           cmp ax,si       

90、;    jg greater            ;jnle greater(3)若CX = 0,轉(zhuǎn)到zero執(zhí)行           cmp cx,0           jz zero     

91、0;         ; jcxz zero   (4)若AXSI產(chǎn)生溢出,轉(zhuǎn)到overflow執(zhí)行;           cmp ax,si           jo overflow(5)若SIAX,轉(zhuǎn)到less_eq執(zhí)行;      

92、     cmp si,ax             ; cmp ax,si           jle less_eq           ; jge less_eq(6)若DIDX,轉(zhuǎn)到below_eq執(zhí)行。  &#

93、160;        cmp di,dx             ; cmp dx,di           jbe below_eq          ; jae below_eq習(xí)題2.25有一個(gè)首地址為array

94、的20個(gè)字的數(shù)組,說(shuō)明下列程序段的功能。           mov cx,20           mov ax,0           mov si,axsum_loop:  add ax,arraysi       

95、;    add si,2           loop sum_loop           mov total,ax解答將首地址為array得20個(gè)字的數(shù)組求和,并將結(jié)果存入 total 單元中。習(xí)題2.26按照下列要求,編寫(xiě)相應(yīng)的程序段:(1)起始地址為string的主存單元中存放有一個(gè)字符串(長(zhǎng)度大于6),把該字符串中的第1個(gè)和第6個(gè)字符(字節(jié)量)傳送給DX寄

96、存器。(2)從主存buffer開(kāi)始的4個(gè)字節(jié)中保存了4個(gè)非壓縮BCD碼,現(xiàn)按低(高)地址對(duì)低(高)位的原則,將它們合并到DX中。(3)編寫(xiě)一個(gè)程序段,在DX高4位全為0時(shí),使AX = 0;否則使AX = -1。(4)有兩個(gè)64位數(shù)值,按“小端方式”存放在兩個(gè)緩沖區(qū)buffer1和buffer2中,編寫(xiě)程序段完成buffer1buffer2功能。(5)假設(shè)從B800h : 0開(kāi)始存放有100個(gè)16位無(wú)符號(hào)數(shù),編程求它們的和,并把32位的和保存在DX.AX中。(6)已知字符串string包含有32KB內(nèi)容,將其中的$符號(hào)替換成空格。(7)有一個(gè)100個(gè)字節(jié)元素的數(shù)組,其首地址為array,將每個(gè)元素減1(不考慮溢出)存于原處。(8)統(tǒng)計(jì)以 $ 結(jié)尾的字符串srting的字符個(gè)數(shù)。解答(1)解答:           mov si,0         

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論