![新版匯編語言程序設(shè)計(jì)1-4章【課后答案】_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/8/3849a0b5-91d1-4e6d-a409-d46920ef36d4/3849a0b5-91d1-4e6d-a409-d46920ef36d41.gif)
![新版匯編語言程序設(shè)計(jì)1-4章【課后答案】_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/8/3849a0b5-91d1-4e6d-a409-d46920ef36d4/3849a0b5-91d1-4e6d-a409-d46920ef36d42.gif)
![新版匯編語言程序設(shè)計(jì)1-4章【課后答案】_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/8/3849a0b5-91d1-4e6d-a409-d46920ef36d4/3849a0b5-91d1-4e6d-a409-d46920ef36d43.gif)
![新版匯編語言程序設(shè)計(jì)1-4章【課后答案】_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/8/3849a0b5-91d1-4e6d-a409-d46920ef36d4/3849a0b5-91d1-4e6d-a409-d46920ef36d44.gif)
![新版匯編語言程序設(shè)計(jì)1-4章【課后答案】_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/8/3849a0b5-91d1-4e6d-a409-d46920ef36d4/3849a0b5-91d1-4e6d-a409-d46920ef36d45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、新版匯編語言程序設(shè)計(jì)【課后習(xí)題答案】第1章 匯編語言基礎(chǔ)知識(shí)習(xí)題1.1簡述計(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ī)的記憶部件,它用來存放程序以及程序中所涉及的數(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ǔ)器的簡稱,主存儲(chǔ)器存放當(dāng)前正在執(zhí)行的程序和使
2、用的數(shù)據(jù),CPU可以直接存取,它由半導(dǎo)體存儲(chǔ)器芯片構(gòu)成其成本高、容量小、但速度快。輔存是輔助存儲(chǔ)器的簡稱,輔存可用來長期保存大量程序和數(shù)據(jù),CPU需要通過I/O接口訪問,它由磁盤或光盤構(gòu)成,其成本低、容量大,但速度慢。RAM是隨機(jī)存取存儲(chǔ)器的英語簡寫,由于CPU可以從RAM讀信息,也可以向RAM寫入信息,所以RAM也被稱為讀寫存儲(chǔ)器,RAM型半導(dǎo)體存儲(chǔ)器可以按地址隨機(jī)讀寫,但這類存儲(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什么是匯編語言源程序、匯編程序、目標(biāo)程序? 解答用匯編語言書寫的程序就稱為匯編語言源程序;完成匯編工作的程序就是匯編程序;由匯編程序編譯通過的程序就是目標(biāo)程序。習(xí)題1.4匯編語言與高級(jí)語言相比有什么優(yōu)缺點(diǎn)? 解答匯編語言與高級(jí)語言相比的優(yōu)點(diǎn):由于匯編語言本質(zhì)就是機(jī)器語言,它可以直接地、有效地控制計(jì)算機(jī)硬件,因而容易產(chǎn)生運(yùn)行速度快,指令序列短小的高效目標(biāo)程序,可以直接控制計(jì)算機(jī)硬件部件,可
4、以編寫在“時(shí)間”和“空間”兩方面最有效的程序。匯編語言與高級(jí)語言相比的缺點(diǎn):由于與處理器密切相關(guān)導(dǎo)致通用性差、可移植性差,匯編語言功能有限,又涉及寄存器、主存單元等硬件細(xì)節(jié),編寫匯編語言比較繁瑣,調(diào)試起來也比較困難,編譯程序產(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 B 255D (2)0H 0B 0D (3)5EH B 94D (4)EFH B 239D(5)2EH B 46D (6)10H 10000B 1
5、6D (7)1FH 11111B 31D(8)ABH B 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 (2)24 (3)68 (4)127 1(5)128 0 (6)255 1(7)1234 10100(8)2458 11000習(xí)題1.7將下列BCD碼轉(zhuǎn)換為十進(jìn)制數(shù)(1) (2) (3) (4)(5) (6) (7) (8)解答(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ù)的原碼、反
6、碼和補(bǔ)碼表示 (1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)68解答(1)0 +0 -0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 習(xí)題1.9完成下列二進(jìn)制數(shù)的運(yùn)算 (1)10111001 (2)10111001 (3)10111001 (4)1001(5)1011 1001 (6)1011 1001 (7)1011 (8)1011 ? 1001解答(1)10111001=10100 (2)10111001=0010 (3)10111001= (4)1001=10100,余數(shù)
7、1000(5)1011 1001=1001 (6)1011 1001=1011 (7)1011=0100 (8) 1011?1001=0010(?代表異或)習(xí)題1.10數(shù)碼09、大寫字母AZ、小寫字母az對(duì)應(yīng)的ASCII碼分別是多少?ASCII碼為0dh、0ah對(duì)應(yīng)的是什么字符? 解答數(shù)碼09:30H39H大寫字母AZ:41H5AH小寫字母az:61H7AHASCII碼為0dh、0ah分別對(duì)應(yīng)回車和換行控制字符。習(xí)題1.11計(jì)算機(jī)中有一個(gè)“”編碼,如果把它認(rèn)為是無符號(hào)數(shù),它是十進(jìn)制什么數(shù)?如果認(rèn)為它是BCD碼,則表示什么數(shù)?又如果它是某個(gè)ASCII碼,則代表哪個(gè)字符? 解答十進(jìn)制無符號(hào)數(shù):B6
8、1H97BCD碼:61ASCII碼:a習(xí)題1.12簡述Intel 80x86系列微處理器在指令集方面的發(fā)展。 解答1978年Intel,正式推出了16位8086CPU,1979年Intel推出了準(zhǔn)16位微處理器8088,隨后,Intel推出了80186/80188,80186/80188指令系統(tǒng)比8086指令系統(tǒng)新增了若干條實(shí)用的指令,涉及堆棧操作、移位指令、過程指令和邊界檢測及乘法指令,1982年Intel推出80286 CPU, 80286指令系統(tǒng)包括全部80186指令及新增的保護(hù)指令15條,其中有些保護(hù)方式在實(shí)方式下也可以使用,1985年,Intel80x86推出微處理器地進(jìn)入第三代80
9、386 CPU, 80386指令系統(tǒng)在兼容原來16位指令系統(tǒng)的基礎(chǔ)上,全面升級(jí)為32位,還新增了有關(guān)位操作、條件設(shè)置指令以及控制、調(diào)試和測試寄存器的傳送指令等,1989年,Intel推出了80486CPU,80486將浮點(diǎn)處理單元FPU集成進(jìn)來,還采用了精簡指令集計(jì)算機(jī)技術(shù)RISC和指令流水線方式,還新增了用于多處理器和內(nèi)部Cache操作的6條指令,1993年Intel制成了俗稱586的微處理器,取名Pentium。Pentium仍為32位結(jié)構(gòu),地址總線為32位,對(duì)常用的簡單指令用硬件實(shí)現(xiàn),重新設(shè)計(jì)指令的微代碼等,Pentium新增了一條8字節(jié)比較交換指令和一條處理器識(shí)別指令,以及4條系統(tǒng)專用
10、指令,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的縮寫,意思是磁盤操作系統(tǒng),DOS主要是面向磁盤的系統(tǒng)軟件,說得簡單些,就是人與機(jī)器的一座橋梁,是罩在機(jī)器硬件外面的一層“外殼”,是19811995年的個(gè)人電腦上使用的一種主要的操作系統(tǒng)。BIOS(Basic InputOutput System)即
11、基本輸入輸出系統(tǒng),通常是固化在只讀存儲(chǔ)器(ROM)中,所以又稱為ROMBIOS。它直接對(duì)計(jì)算機(jī)系統(tǒng)中的輸入、輸出設(shè)備進(jìn)行設(shè)備級(jí)、硬件級(jí)的控制,是連接軟件程序和硬件設(shè)備之間的樞紐。ROMBIOS是計(jì)算機(jī)系統(tǒng)中用來提供最低級(jí)、最直接的硬件控制的程序。習(xí)題1.14簡述PC機(jī)最低1MB主存空間的使用情況。 解答(1)基本RAM區(qū)(00000H9FFFFH)該區(qū)共640KB,由DOS進(jìn)行管理。在這個(gè)區(qū)域中操作系統(tǒng)要占用掉一部分低地址空間,其它則向用戶程序開放。(2)保留區(qū)RAM(A0000H-BFFFFFH)該區(qū)為系統(tǒng)安排的“顯示緩沖存儲(chǔ)區(qū)”,共126KB,是顯卡上的芯片提供支持,用于存放屏幕顯示信息。
12、但這部分地址空間實(shí)際上并沒有全部使用。(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,是操作系統(tǒng)的重要組成部分,主要用來驅(qū)動(dòng)輸入輸出設(shè)備,也負(fù)責(zé)系統(tǒng)的上電檢測,磁盤引導(dǎo)等初始化操作,在ROM-BIOS中還有CMOS微機(jī)設(shè)置程序以及使用的字符圖符信息等內(nèi)容。習(xí)題1.15羅列8086CPU的8個(gè)8位和16位通用寄存器,并
13、說明各自的作用。 解答(1)數(shù)據(jù)寄存器:AX稱為累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;BX稱為基址寄存器,常用做存放存儲(chǔ)器地址;CX稱為計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器;DX稱為數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。(2)指針及變址寄存器包括SI,DI,BP,S P,四個(gè)寄存器,常用于存儲(chǔ)器尋址時(shí)提供地址。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,為
14、堆棧指針寄存器,指示棧頂?shù)钠频刂罚籅P為基地址指針寄存器,表示堆棧段中的基地址。S P與BP寄存器均可與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址。習(xí)題1.16什么是標(biāo)志,它有什么用途?狀態(tài)標(biāo)志和控制標(biāo)志有什么區(qū)別?畫出標(biāo)志寄存器FLAGS,說明各個(gè)標(biāo)志的位置和含義。 解答標(biāo)志用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。它是匯編語言程序設(shè)計(jì)中必須特別注意的一個(gè)方面,狀態(tài)用來記錄運(yùn)行的結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它,控制標(biāo)志位可由程序根據(jù)需要用指令設(shè)置,用來控制處理器執(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)志
15、;DF方向標(biāo)志;IF中斷允許標(biāo)志;TF陷阱標(biāo)志。習(xí)題1.17舉例說明CF和OF標(biāo)志的差異。 解答溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志。進(jìn)位標(biāo)志表示無符號(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無符號(hào)數(shù)運(yùn)算:58124182,范圍內(nèi),無進(jìn)位有符號(hào)數(shù)運(yùn)算: 58124182 ,范圍外,有溢出例2:AAH + 7CH(1)26H無符號(hào)數(shù)運(yùn)算:170124294,范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算:8612428 ,范圍內(nèi),無溢出習(xí)題1.18字和雙字在存儲(chǔ)器中如何存放,什么是“小端方式”?對(duì)字和雙字存儲(chǔ)單元
16、,什么是它們的對(duì)齊地址?為什么要對(duì)齊地址? 解答字或雙字在存儲(chǔ)器中占相鄰的2個(gè)或4個(gè)存儲(chǔ)單元;存放時(shí),低字節(jié)存入低地址,高字節(jié)存入高地址;字或雙字單元的地址用它的低地址來表示。80x86處理器采用的這種“低對(duì)低,高對(duì)高”的存儲(chǔ)形式,被稱為“小端方式”;將字單元安排在偶地址,雙字節(jié)單元安排在模4地址,被稱為“地址對(duì)齊方式”因?yàn)閷?duì)于不對(duì)齊地址的數(shù)據(jù),處理器訪問時(shí),需要額外的訪問時(shí)間,所以通常應(yīng)該將數(shù)據(jù)的地址對(duì)齊,以取得較高的存取速度。習(xí)題1.19什么是8086中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?請(qǐng)將如下邏輯地址用物理地址表達(dá): (1)FFFFh:0 (2)40h:17h (3)20
17、00h: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á):(1)FFFFh:0FFFF0H(2)40h:17h00417H(3)2000h:4500h24500H(4)B821h:4567hBC777H (不要算錯(cuò))習(xí)題1.208086有哪4種邏輯段,各種邏輯段分別是什么用途? 解答代碼段
18、(Code Segment)用來存放程序的指令序列。處理器利用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ù)據(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ū)必須是附加段,允許其
19、它段存放數(shù)據(jù),數(shù)據(jù)的存放比較靈活的,實(shí)際上可以存放在任何一種邏輯段中,這時(shí),只要明確指明是哪個(gè)邏輯段就可以了。習(xí)題1.22什么是操作碼、操作數(shù)和尋址方式?有哪三種給出操作數(shù)的方法? 解答操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,它是指令中不可缺少的組成部分,操作數(shù)是指令執(zhí)行的參與者,也是各種操作的對(duì)象,我們把尋找數(shù)的方式叫做操作數(shù)的尋址方式。給出操作數(shù)的三種方法是直接給出,間接給出,隱藏操作數(shù)方式給出。習(xí)題1.23什么是有效地址EA?8086的操作數(shù)如果在主存中,有哪些尋址方式可以存取它? 解答DS存放數(shù)據(jù)段的段地址,存儲(chǔ)器中操作數(shù)的偏移地址則由各種主存方式得到,稱之為有效地址EA。8086的操作數(shù)如果
20、在主存中,可以存取它的尋址方式有直接尋址方式、寄存器間接尋址方式、寄存器相對(duì)尋址方式、基址變址尋址方式、相對(duì)基址變址尋址方式。習(xí)題1.24說明下列指令中源操作數(shù)的尋址方式?如果BX2000H,DI40H,給出DX的值或有效地址EA的值。 (1) mov dx,1234h(2) mov dx,1234h(3) mov dx,bx(4) mov dx,bx(5) mov dx,bx+1234h(6) mov dx,bx+di(7) mov dx,bx+di+1234h解答(1)直接尋址,EA1234H(2)立即數(shù)尋址,DX1234H(3)寄存器尋址,DX2000H(4)間接尋址,EA2000H(5
21、)相對(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,說明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容。(1) mov 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)AX120
22、0H(2)AX0100H(3)AX4C2AH ;偏移地址=bx=0100h(4)AX3412H ;偏移地址=bx=0100h(5)AX4C2AH ;偏移地址=bx+1100h=1200h(6)AX7856H ;偏移地址=bx+si=0100h+0002h=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)
23、 mov 20h,ah解答(1)兩操作數(shù)類型不匹配(2)IP指令指針禁止用戶訪問(3)立即數(shù)不允許傳給段寄存器(4)段寄存器之間不允許傳送(5)兩操作數(shù)類型不匹配(6)目的操作數(shù)應(yīng)為 SI (7)源操作數(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)為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。 lea bx,table mov al,8 xlat解答 lea bx,table ;獲取table的
24、首地址,BX200H mov al,8 ;傳送欲轉(zhuǎn)換的數(shù)字,AL8 xlat ;轉(zhuǎn)換為格雷碼,AL12H P35習(xí)題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,畫圖說明執(zhí)行下面指令序列時(shí),堆棧區(qū)和SP的內(nèi)容如何變化? mov ax,8057h push ax mov ax,0f79h push ax pop bx pop b
25、x解答 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop bx ;DS:0f79h=8057h習(xí)題2.6給出下列各條指令執(zhí)行后AL值,以及CF、ZF、SF、OF和PF的狀態(tài): mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al解答mov al,89h ; AL=89h CF ZF SF OF PFadd al,al ; AL=12h 1 0 0 1 1; 1000 1001+1000 1001 10001 0010 add al,9dh
26、 ; AL=0afh 0 0 1 0 1; 0001 0010+ 1001 1101 1010 1111 cmp al,0bch ; AL=0afh 1 0 1 0 1; 1010 1111-1011 1100* 0100 0011sub al,al ; AL=00h 0 1 0 0 1dec al ; AL=0ffh 0 0 1 0 1; 0000 0000- 0000 0001*1111 1111inc al ; AL=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
27、的存儲(chǔ)單元中,它們的運(yùn)算結(jié)果存入W單元。閱讀如下程序段,給出運(yùn)算公式。 mov ax,X mov dx,X+2 add ax,Y adc dx,Y+2 add ax,24 adc dx,0 sub ax,Z sbb dx,Z+2 mov W,axmov W+2,dx 解答 WX+Y+24-Z習(xí)題2.8請(qǐng)分別用一條匯編語言指令完成如下功能: (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)容相加,并
28、把結(jié)果送回存儲(chǔ)器中。(4)用位移量為0520H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)3412H相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù)0A0H與AL寄存器的內(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)算公式,并說明運(yùn)算結(jié)果存于何處。 mov ax,X ;ax=X imul Y ;DX.AX=X*Y mov cx,ax ;cx=X*Y
29、的低16位 mox bx,dx ;bx=X*Y的高16位 mov ax,Z ;ax=Z cwd add cx,ax ;cx=Z的低16位+X*Y的低16位 adc bx,dx ;bx=Z的高16位+X*Y的高16位+低位進(jìn)位 sub cx,540 ;cx=Z的低16位+X*Y的低16位-540 sbb bx,0 ;bx=Z的高16位+X*Y的高16位+低位進(jìn)位-低位借位 mov ax,V ;ax=V cwd sub ax,cx ;ax=V的低16位-(Z的低16位+X*Y的低16位-540) sbb dx,bx ;dx=V的高16位-(Z的高16位+X*Y的高16位+低位進(jìn)位-低位借位)-低位
30、借位 idiv X ;/X解答 V-(X*Y+Z-540)/X 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)沒有確定是字節(jié)還是字操作(7)in不支持超過FFH的直接尋址(8)out只能以AL/AX為源操作數(shù)習(xí)題2.11
31、給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF的狀態(tài)。 mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h解答 mov ax,1470h ;AX1470H CF ZF SF OF PF and ax,ax ;AX1470H 0 0 0 0 0 ;0001 0100 0111 0000 or ax,ax ;AX1470H 0 0 0 0 0 xor ax,ax ;AX0000H 0 1 0 0 1 not ax ;AXFFFFH 0 1 0 0 1 test ax,0f0f0h ;AXFFFFH
32、0 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)說明每條指令執(zhí)行后的結(jié)果和各個(gè)標(biāo)志位的狀態(tài)。 解答 指令 ; 執(zhí)行結(jié)果 CF OF SF ZF PF mov si,ax ; SI=AX=0008H - - - - - shl si,1 ; SI=2*AX=0010H0 0 0 0 0 add si,ax ; SI=3*AX=0018H 0 0 0 0 1 mov dx,bx; DX=BX=0010H 0 0 0 0 1 mov cl,03h; CL=03H0
33、0 0 0 1 shl dx,cl ; DX=8*BX=0080H 0 u 0 0 0 sub dx,bx ; DX=7*BX=0070H 0 0 0 0 0 add dx,si; DX=7*BX+3*AX=0088H0 0 0 0 1注意:邏輯左移N次相當(dāng)于無符號(hào)整數(shù)乘以2的N次方,邏輯右移N次相當(dāng)于無符號(hào)整數(shù)除以2的N次方。移位指令根據(jù)移位的數(shù)據(jù)設(shè)置CF,根據(jù)移位后的結(jié)果影響SF,ZF,PF。在進(jìn)行一位移位時(shí),根據(jù)最高符號(hào)位是否改變設(shè)置OF,如改變則OF1。另外,程序注釋用“u”表示標(biāo)志無定義(不確定),“-”表示無影響。習(xí)題2.13編寫程序段完成如下要求: (1)用位操作指令實(shí)現(xiàn)AL(無
34、符號(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 shl al,cl ;*8 add al,bl ;shl bl,1 add al,bl ;考慮進(jìn)位 xor ah,ah mov bx,ax mov cl,3 shl ax,cl add ax,bx ;shl bx,1 add ax,bx(2)數(shù)字09的ASCII碼是:30h39h 非壓縮BCD碼的09是:00h09h方法一: and al,0fh ;實(shí)現(xiàn)ASCII到非壓縮BCD碼的轉(zhuǎn)換 or al,30h ;實(shí)
35、現(xiàn)非壓縮BCD碼到ASCII的轉(zhuǎn)換方法二: xor al,30h ;求反D5D4位,其他不變 ;即高4位為3,則變?yōu)?;高4位為0,則變?yōu)?(3) mov cl,4again:shr dx,1 ;實(shí)現(xiàn)邏輯右移 ;采用“sar dx,1”,則實(shí)現(xiàn)算術(shù)右移 rcr ax,1dec cl jnz again習(xí)題2.14已知AL = F7H(表示有符號(hào)數(shù)-9),分別編寫用SAR和IDIV指令實(shí)現(xiàn)的除以2的程序段,并說明各自執(zhí)行后,所得的商是什么? 解答(1)用sar編寫 mov al,0f7h ; -9送AL 1111 1001 sar al,1 ; 結(jié)果:AL=1111 1100B=0FBH 即-5
36、(2)用idiv編寫 mov al,0f7h ; -9送al cbw ; 字節(jié)符號(hào)擴(kuò)展位字 mov bl,2 ; 注意除數(shù)不可為立即數(shù) idiv bl ; 結(jié)果:商為al=fch (-4) ; 余數(shù):ah=ffh (-1) 結(jié)論:符號(hào)數(shù)的除法用idiv 準(zhǔn)確。 習(xí)題2.15已知數(shù)據(jù)段500h 600h處存放了一個(gè)字符串,說明下列程序段執(zhí)行后的結(jié)果: mov si,600h mov di,601h mov ax,ds mov es,ax mov cx,256 std rep movsb解答習(xí)題2.16說明下列程序段的功能 cld mov ax,0fefh mov cx,5 mov bx,3000
37、h mov es,bx mov di,2000h rep stosw解答將es:di (即3000:2000h或32000h)開始的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ì)尋址、直接尋址方式和間接尋址方式(又可以分成寄存器和存儲(chǔ)器間接尋址)。習(xí)題2.19什么是短轉(zhuǎn)移short jump、近轉(zhuǎn)移
38、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í)際編程時(shí),你如何處理超出范圍的條件轉(zhuǎn)移? 解答8086的條件轉(zhuǎn)移的轉(zhuǎn)移范圍:在當(dāng)前指令地址的 +127-128之內(nèi)。如條
39、件轉(zhuǎn)移的轉(zhuǎn)移范圍超出此范圍,可在此范圍內(nèi)安排一條無條件轉(zhuǎn)移,再轉(zhuǎn)移到范圍外的目標(biāo)地址。習(xí)題2.21假設(shè)DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,232F7H=3280H,264E5H=2450H,試問執(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=3280H(3)轉(zhuǎn)移的有效地址EA= DS:1256H+528FH=264E5H=2450H習(xí)題2.22判斷
40、下列程序段跳轉(zhuǎn)的條件 (1) xor ax,1e1eh je equal (2)test al,b jnz there (3)cmp cx,64h jb there解答(1)AX1e1eh(異或后為0)(2)AL的D0或D7至少有一位為1(3)CX(無符號(hào)數(shù)) 64h習(xí)題2.23設(shè)置CX = 0,則LOOP指令將循環(huán)多少次?例如: mov cx,0delay:loop delay解答 216次。習(xí)題2.24假設(shè)AX和SI存放的是有符號(hào)數(shù),DX和DI存放的是無符號(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
41、)若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 dx,di ja above ;jnbe above(2)若AX SI,轉(zhuǎn)到greater執(zhí)行 cmp ax,si jg greater ;jnle greater(3)若CX = 0,轉(zhuǎn)到zero執(zhí)行 cmp cx,0 jz zero ; jcxz zero (4)若AXSI產(chǎn)生溢出,轉(zhuǎn)到overflow執(zhí)行; cmp ax,si jo overflow(5)若SIAX,轉(zhuǎn)到less_eq執(zhí)行; cmp si,ax ; cmp ax,si jle less_eq ; jge less_eq(6)若DIDX,轉(zhuǎn)到below_eq執(zhí)行。 cmp di,dx ; cmp dx,di jbe below_eq ; jae below_eq習(xí)題2.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位聘用用工合同
- 廠房合同轉(zhuǎn)租協(xié)議模板范本
- 打印機(jī)買賣合同范本
- 個(gè)人二手房買賣合同范本
- 貨物運(yùn)輸服務(wù)框架合同范本
- 不銹鋼板材購銷合同
- 設(shè)備安裝工程承包勞務(wù)合同
- 廈門分包合同范本
- 展覽場地租賃、服務(wù)合同
- 星載微波散射計(jì)遙感熱帶氣旋海面風(fēng)場的真實(shí)性檢驗(yàn)方法研究
- 最高法院示范文本發(fā)布版3.4民事起訴狀答辯狀示范文本
- 2024年英語高考全國各地完形填空試題及解析
- 2024至2030年中國餐飲管理及無線自助點(diǎn)單系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年服裝門店批發(fā)管理系統(tǒng)軟件項(xiàng)目可行性研究報(bào)告
- 體育概論(第二版)課件第三章體育目的
- 《氓》教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 化學(xué)元素周期表注音版
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 香港朗文4B單詞及句子
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第五章運(yùn)動(dòng)中的中樞控制
- 財(cái)務(wù)部規(guī)范化管理 流程圖
評(píng)論
0/150
提交評(píng)論