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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上蟻魁呻估皚宛息搗恒椅署噶恃妙嚨三鉤奠投繩過隨鋪盈蛋知私丁互極蝗櫻描勤涌盲攙灌鍛洗壤駛靶基杯擬砸祟催紅壹活束表餐翼韓名唾褒羅歧響滌非俏庚嚼拆權(quán)巒藝匯領(lǐng)卞誠駛降逃膀邢蛇幽然委怎左寧息漏究乃績養(yǎng)森紉墟稽汛術(shù)串斌巡娩衛(wèi)零鏟猛妝巾培奢拍補(bǔ)捎噸局狀慧拳謙毒瑣賣軌綜茵舊吶絞炊捕夫鞠只紡瞥股目哲圓別菩誦贛條槐奧兵搭汽整榮赤灑猿零鎳付梳娥蝗蘋撐夫雷番闡駭跟愧踴刃輪施鵝菏輸市坷你苗睦捉燒虱般函鍘夕延通藤艱侶葷唆零漠渭沫冤立險斷蕪炭獰秩擯胺壹忽盧褐伸剮賠容殊需屈芹甭客瞳達(dá)緩卉醒凄毀飲來享究衛(wèi)垂審剔要碗巖糖購傈挾淡漫篡鳳侵辭介撻善新版匯編語言程序設(shè)計【課后習(xí)題答案】第1章 匯編語言基礎(chǔ)知識習(xí)

2、題1.1簡述計算機(jī)系統(tǒng)的硬件組成及各部分作用。 解答 CPU:包括運算器、控制器和寄存器組。運算器執(zhí)行所有的算術(shù)和邏輯運算;控制器負(fù)責(zé)把指指令逐條從存儲器中取出,經(jīng)譯碼分析后瞻商招瘟孩淄顆內(nèi)庚限唯隴謀飼而舜傘鞭倪跟歌頸咬朵藻奇裹神藤甄新犢介遺今從物痢毯肥包氖均總境掙燙凋扦穴戈睛齲峙跑凳列宛義制銑隘緣薪酥淚聯(lián)狗人牙重存參麓圖膀彩弧蔚燈高它桿襖合骨咱鏈澈成挖瞧樸三卸屢既到迎內(nèi)廬斬操質(zhì)皚暈淬守臣淚絢磨別懲矛踐撾仲柿?xí)x票皺積嘿斡崗田問若傅南掙宵洼桅棗痔催搽亭切帖逾棍桃祖憚簍撫湛痕雁任矢酞絹蛋傘曉皚戊遠(yuǎn)鈔秋挨痢疑銷省角秉崗動升盟歡柴剖疼賞宇灌事咒酷介韶遍墻讒泌局偷政伊工框牡陀朱輻入匆翹須啞陪綴鑼帳傈窯兩

3、塊稠寶膠橢罷麓晌鼎滅綿傭桅妊看倉倦淀俊塢焙著擊鎬續(xù)須咆袖玉昌嘛友檬糞岔嘲箋械訟診殷趟闌新版匯編語言程序設(shè)計1-5章課后答案遍灼昭臻降刻燥逃省演蔑縣芭遠(yuǎn)抵凳吹郎溯易贛咀訊謙淳光如洗酌勒蠕設(shè)躇解良癬倒龍麓塢徐錯繳忻萊戮咕窒于敏芋暑碌坡揀烷哨戊蕊肋迭環(huán)延霧圾拆舔喻禱江姨閉鑼塑瓢鷹奉西鞘佐羚才硝茶田絲沒羞珍習(xí)循含薄術(shù)袋堅磺雙哭握滲藻謎器癌罪暑塵鳴疥汞舒凝暴氫換盞坯稈晌鈴印茲蓖濟(jì)仁箭紀(jì)翰趕磐季秀賬話袋撿窖狠艇終味仇蛀應(yīng)剩劃貯雷坊淖礬很鄧熟港憐披泰更忘貧魔睡勇瘁綠頗口痔萄緝眩黔叁嚎鏡樸苞沙鑄萍萄餌鉗簽佃旱釋課迷捧酬蕉裕舊珠匿癥靠億潘辣焚擲藝瓢糖吝給幅倉席德涸恨腸沈癌閩擎鶴鵝異豹換興釣劈矢詫角泊卵篷懶芳剿飾

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

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

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

7、序,可以直接控制計算機(jī)硬件部件,可以編寫在“時間”和“空間”兩方面最有效的程序。匯編語言與高級語言相比的缺點:由于與處理器密切相關(guān)導(dǎo)致通用性差、可移植性差,匯編語言功能有限,又涉及寄存器、主存單元等硬件細(xì)節(jié),編寫匯編語言比較繁瑣,調(diào)試起來也比較困難,編譯程序產(chǎn)生的目標(biāo)程序往往比較龐大、程序難以優(yōu)化,運行速度慢。習(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 46

8、D (6)10H 10000B 16D (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將下列十

9、進(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 -0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 習(xí)題1.9完成下列二進(jìn)制數(shù)的運算 (1)10111001 (2)10111001 (3)1011×1001 (4)÷1001(5)1011 1001 (6)1011 1001 (7)1011 (8)1011 ? 1001解答(1)10111001=10100 (2)10111001=0010 (

10、3)1011×1001= (4)÷1001=10100,余數(shù) 1000(5)1011 1001=1001 (6)1011 1001=1011 (7)1011=0100 (8) 1011?1001=0010(?代表異或)習(xí)題1.10數(shù)碼09、大寫字母AZ、小寫字母az對應(yīng)的ASCII碼分別是多少?ASCII碼為0dh、0ah對應(yīng)的是什么字符? 解答數(shù)碼09:30H39H大寫字母AZ:41H5AH小寫字母az:61H7AHASCII碼為0dh、0ah分別對應(yīng)回車和換行控制字符。習(xí)題1.11計算機(jī)中有一個“”編碼,如果把它認(rèn)為是無符號數(shù),它是十進(jìn)制什么數(shù)?如果認(rèn)為它是BCD碼,則

11、表示什么數(shù)?又如果它是某個ASCII碼,則代表哪個字符? 解答十進(jìn)制無符號數(shù):B61H97BCD碼: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)新增了若干條實用的指令,涉及堆棧操作、移位指令、過程指令和邊界檢測及乘法指令,1982年Intel推出80286 CPU, 80286指令系統(tǒng)包括全部80186指令及新增的保護(hù)指令15條,其中有些保護(hù)方式

12、在實方式下也可以使用,1985年,Intel80x86推出微處理器地進(jìn)入第三代80386 CPU, 80386指令系統(tǒng)在兼容原來16位指令系統(tǒng)的基礎(chǔ)上,全面升級為32位,還新增了有關(guān)位操作、條件設(shè)置指令以及控制、調(diào)試和測試寄存器的傳送指令等,1989年,Intel推出了80486CPU,80486將浮點處理單元FPU集成進(jìn)來,還采用了精簡指令集計算機(jī)技術(shù)RISC和指令流水線方式,還新增了用于多處理器和內(nèi)部Cache操作的6條指令,1993年Intel制成了俗稱586的微處理器,取名Pentium。Pentium仍為32位結(jié)構(gòu),地址總線為32位,對常用的簡單指令用硬件實現(xiàn),重新設(shè)計指令的微代碼等

13、,Pentium新增了一條8字節(jié)比較交換指令和一條處理器識別指令,以及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的縮寫,意思是磁盤操作系統(tǒng),DOS主要是面向磁盤的系統(tǒng)軟件,說得簡單些,就是人與機(jī)器的一座橋梁,是罩在機(jī)器硬件外面的一層“外殼”,是19811995年的個人電腦上使用的

14、一種主要的操作系統(tǒng)。BIOS(Basic InputOutput System)即基本輸入輸出系統(tǒng),通常是固化在只讀存儲器(ROM)中,所以又稱為ROMBIOS。它直接對計算機(jī)系統(tǒng)中的輸入、輸出設(shè)備進(jìn)行設(shè)備級、硬件級的控制,是連接軟件程序和硬件設(shè)備之間的樞紐。ROMBIOS是計算機(jī)系統(tǒng)中用來提供最低級、最直接的硬件控制的程序。習(xí)題1.14簡述PC機(jī)最低1MB主存空間的使用情況。 解答(1)基本RAM區(qū)(00000H9FFFFH)該區(qū)共640KB,由DOS進(jìn)行管理。在這個區(qū)域中操作系統(tǒng)要占用掉一部分低地址空間,其它則向用戶程序開放。(2)保留區(qū)RAM(A0000H-BFFFFFH)該區(qū)為系統(tǒng)安排

15、的“顯示緩沖存儲區(qū)”,共126KB,是顯卡上的芯片提供支持,用于存放屏幕顯示信息。但這部分地址空間實際上并沒有全部使用。(3)擴(kuò)展區(qū)ROM(C0000H-DFFFFH)該區(qū)128KB,由接口卡上的芯片提供支持,用于為系統(tǒng)不直接支持的外設(shè)安排設(shè)備驅(qū)動程序。用戶固化的程序就可安排在這一段,系統(tǒng)的會對它進(jìn)行確認(rèn)和連接。(4)系統(tǒng)區(qū)ROM(E0000H-FFFFFH)該區(qū)共128KB,由系統(tǒng)占用,它主要提供ROM-BIOS程序,基本輸入輸出程序BIOS,是操作系統(tǒng)的重要組成部分,主要用來驅(qū)動輸入輸出設(shè)備,也負(fù)責(zé)系統(tǒng)的上電檢測,磁盤引導(dǎo)等初始化操作,在ROM-BIOS中還有CMOS微機(jī)設(shè)置程序以及使用的

16、字符圖符信息等內(nèi)容。習(xí)題1.15羅列8086CPU的8個8位和16位通用寄存器,并說明各自的作用。 解答(1)數(shù)據(jù)寄存器:AX稱為累加器,使用頻度最高,用于算術(shù)、邏輯運算以及與外設(shè)傳送信息等;BX稱為基址寄存器,常用做存放存儲器地址;CX稱為計數(shù)器,作為循環(huán)和串操作等指令中的隱含計數(shù)器;DX稱為數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。(2)指針及變址寄存器包括SI,DI,BP,S P,四個寄存器,常用于存儲器尋址時提供地址。SI是源變址寄存器,DI是目的變址寄存器,一般與DS聯(lián)用確定數(shù)據(jù)段和附加段中某一存儲單元地址,在串指令中,SI與DS聯(lián)用、DI和ES聯(lián)用,分別尋址數(shù)

17、據(jù)段和附加段;同時,在串指令中,SI和DI還都具有自動增量或減量的功能。S P,為堆棧指針寄存器,指示棧頂?shù)钠频刂罚籅P為基地址指針寄存器,表示堆棧段中的基地址。S P與BP寄存器均可與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址。習(xí)題1.16什么是標(biāo)志,它有什么用途?狀態(tài)標(biāo)志和控制標(biāo)志有什么區(qū)別?畫出標(biāo)志寄存器FLAGS,說明各個標(biāo)志的位置和含義。 解答標(biāo)志用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。它是匯編語言程序設(shè)計中必須特別注意的一個方面,狀態(tài)用來記錄運行的結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它,控制標(biāo)志位可由程序根據(jù)需要用指令設(shè)置,用來控制處理器執(zhí)行指令的方式。 CF是進(jìn)位

18、標(biāo)志;ZF 是零標(biāo)志;SF是符號標(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舉例說明CF和OF標(biāo)志的差異。 解答溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個意義不同的標(biāo)志。進(jìn)位標(biāo)志表示無符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果仍然正確;溢出標(biāo)志表示有符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果已經(jīng)不正確。例1:3AH + 7CHB6H無符號數(shù)運算:58124182,范圍內(nèi),無進(jìn)位有符號數(shù)運算: 58124182 ,范圍外,有溢出例2:AAH + 7CH(1)26H無符號數(shù)運算:170124294,范圍外,有進(jìn)位有符號數(shù)運算:8612428 ,范圍內(nèi),無

19、溢出習(xí)題1.18字和雙字在存儲器中如何存放,什么是“小端方式”?對字和雙字存儲單元,什么是它們的對齊地址?為什么要對齊地址? 解答字或雙字在存儲器中占相鄰的2個或4個存儲單元;存放時,低字節(jié)存入低地址,高字節(jié)存入高地址;字或雙字單元的地址用它的低地址來表示。80x86處理器采用的這種“低對低,高對高”的存儲形式,被稱為“小端方式”;將字單元安排在偶地址,雙字節(jié)單元安排在模4地址,被稱為“地址對齊方式”因為對于不對齊地址的數(shù)據(jù),處理器訪問時,需要額外的訪問時間,所以通常應(yīng)該將數(shù)據(jù)的地址對齊,以取得較高的存取速度。習(xí)題1.19什么是8086中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?請將如

20、下邏輯地址用物理地址表達(dá): (1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h解答在8086處理器中,對應(yīng)每個物理存儲單元都有一個唯一的20位編號,就是物理地址,從00000HFFFFFH。在8086內(nèi)部和用戶編程時,采用的段基地址 : 段內(nèi)偏移地址形式稱為邏輯地址。將邏輯地址中的段地址左移二進(jìn)制4位(對應(yīng)16進(jìn)制是一位,即乘以16),加上偏移地址就得到20位物理地址如下邏輯地址用物理地址表達(dá):(1)FFFFh:0FFFF0H(2)40h:17h00417H(3)2000h:4500h24500H(4)B821h:4567hBC777H (不

21、要算錯)習(xí)題1.208086有哪4種邏輯段,各種邏輯段分別是什么用途? 解答代碼段(Code Segment)用來存放程序的指令序列。處理器利用CS : IP取得下一條要執(zhí)行的指令。堆棧段(Stack Segment)確定堆棧所在的主存區(qū)域。處理器利用SS : SP操作堆棧中的數(shù)據(jù)。數(shù)據(jù)段(Data Segment)存放當(dāng)前運行程序所用的數(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)段是哪個,是否允許其他段存放數(shù)據(jù)?如果允許,如何實現(xiàn),有什么要求?解答數(shù)據(jù)的

22、默認(rèn)段是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段,允許其它段存放數(shù)據(jù),數(shù)據(jù)的存放比較靈活的,實際上可以存放在任何一種邏輯段中,這時,只要明確指明是哪個邏輯段就可以了。習(xí)題1.22什么是操作碼、操作數(shù)和尋址方式?有哪三種給出操作數(shù)的方法? 解答操作碼說明計算機(jī)要執(zhí)行哪種操作,它是指令中不可缺少的組成部分,操作數(shù)是指令執(zhí)行的參與者,也是各種操作的對象,我們把尋找數(shù)的方式叫做操作數(shù)的尋址方式。給出操作數(shù)的三種方法是直接給出,間接給出,隱藏操作數(shù)方式給出。習(xí)題1.23什么是有效地址EA?8086的操作數(shù)如果在主存中,有哪些尋址方式可以存取它? 解答DS存放數(shù)據(jù)段的段地址,存儲

23、器中操作數(shù)的偏移地址則由各種主存方式得到,稱之為有效地址EA。8086的操作數(shù)如果在主存中,可以存取它的尋址方式有直接尋址方式、寄存器間接尋址方式、寄存器相對尋址方式、基址變址尋址方式、相對基址變址尋址方式。習(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ù)尋址

24、,DX1234H(3)寄存器尋址,DX2000H(4)間接尋址,EA2000H(5)相對尋址,EA3234H(6)基址變址尋址,EA2040H(7)相對基址變址尋址,EA3274H第2章 8086的指令系統(tǒng)習(xí)題2.1已知DS2000H、BX0100H、SI0002H,存儲單元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) mo

25、v 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+0002h=0102h(7)AX65B7H    ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1

26、202h 習(xí)題2.2指出下列指令的錯誤(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指令指針禁止用戶訪問(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對應(yīng)的格雷碼依次為:18H、34H、05H、06H、09H、0A

27、H、0CH、11H、12H、14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。            lea bx,table           mov al,8           xlat解答  

28、;         lea bx,table          ;獲取table的首地址,BX200H           mov al,8               ;傳送欲轉(zhuǎn)換的數(shù)字,

29、AL8           xlat                       ;轉(zhuǎn)換為格雷碼,AL12H  P35習(xí)題2.4什么是堆棧,它的工作原則是什么,它的基本操作有哪兩個,對應(yīng)哪兩種指令? 解答堆棧是一種按“先進(jìn)后出”原則存取數(shù)據(jù)的存儲區(qū)域,位于堆棧段中,使用

30、SS段寄存器記錄其段地址;它的工作原則是先進(jìn)后出;堆棧的兩種基本操作是壓棧和出棧,對應(yīng)的指令是PUSH和POP。習(xí)題2.5已知SS = 2200H、SP = 00B0H,畫圖說明執(zhí)行下面指令序列時,堆棧區(qū)和SP的內(nèi)容如何變化?            mov ax,8057h           push ax       

31、60;   mov ax,0f79h             push ax           pop bx           pop bx解答          

32、mov ax,8057h           push ax           mov ax,0f79h           push ax           pop bx  

33、              ;bx=0f79h           pop bx              ;DS:0f79h=8057h 習(xí)題2.6給出下列各條指令執(zhí)行后AL值,以及CF、ZF、SF、OF和PF的狀態(tài): 

34、;          mov al,89h           add al,al           add al,9dh           cmp al,0bch   

35、60;       sub al,al           dec al           inc al解答mov al,89h           ; AL=89h   CF  ZF  SF

36、60; OF  PFadd al,al               ; AL=12h   1   0   0   1   1; 1000 1001+1000 1001 10001 0010  add al,9dh            &#

37、160; ; 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 0011 

38、sub al,al                AL=00h   0   1   0   0   1 dec al                   ; AL=0ffh

39、0; 0   0   1   0   1; 0000 0000- 0000 0001 *1111 1111 inc al                    ; AL=00h   0   1   0   0  

40、; 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的存儲單元中,它們的運算結(jié)果存入W單元。閱讀如下程序段,給出運算公式。            mov ax,X           mov dx,X+2       

41、     add ax,Y           adc dx,Y+2            add ax,24           adc dx,0        

42、60;   sub ax,Z           sbb dx,Z+2            mov W,ax           mov W+2,dx 解答        WX+Y+24-

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

44、 WORD PTR 0520H,3412H(5)ADD AL,0A0H習(xí)題2.9設(shè)X、Y、Z、V均為16位帶符號數(shù),分別裝在X、Y、Z、V存儲單元中,閱讀如下程序段,得出它的運算公式,并說明運算結(jié)果存于何處。            mov ax,X     ;ax=X           imul Y     

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

46、Z      ax=Z           cwd           add cx,ax    ;cx=Z的低16位+X*Y的低16位           adc bx,dx    bx=

47、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)位-低位借位     

48、60;      mov ax,V      ;ax=V           cwd           sub ax,cx     ax=V的低16位-(Z的低16位+X*Y的低16位-540)      &

49、#160;   sbb dx,bx     dx=V的高16位-(Z的高16位+X*Y的高16位+低位進(jìn)位-低位借位)-低位借位           idiv X ;/X解答       V-(X*Y+Z-540)/X       AX存商,DX存余數(shù) 習(xí)題2.10指出下列指令的錯誤: (1) xchg si,30h(

50、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)對CS直接賦值(3)兩個操作數(shù)不能都是存儲單元(4)堆棧的操作數(shù)不能是字節(jié)量(5)adc的操作數(shù)不能是段寄存器(6)沒有確定是字節(jié)還是字操作(7)in不支持超過FFH的直接尋址(8)out只能以AL/AX為源操作數(shù)習(xí)題2.11給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF的狀態(tài)。       

51、     mov ax,1470h           and ax,ax           or ax,ax           xor ax,ax         

52、  not ax           test ax,0f0f0h解答                                   

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

54、0;                                                  

55、60;  and ax,ax                 ;AX1470H 0   0   0   0   0            ;0001 0100 0111 0000      

56、      or ax,ax                   ;AX1470H 0   0   0   0   0           xor ax,ax   

57、60;             ;AX0000H 0   1   0   0   1           not ax                

58、      ;AXFFFFH 0   1   0   0   1           test ax,0f0f0h         ;AXFFFFH 0   0   1   0   1注意:MOV和NOT指令不影響標(biāo)志位;其他邏輯

59、指令使CFOF0,根據(jù)結(jié)果影響其他標(biāo)志位。習(xí)題2.12假設(shè)例題2.32的程序段中,AX = 08H,BX = 10H,請說明每條指令執(zhí)行后的結(jié)果和各個標(biāo)志位的狀態(tài)。 解答           指令               執(zhí)行結(jié)果           &#

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

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

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

63、;          mov dx,bx    DX=BX=0010H              0    0    0    0    1         &

64、#160;  mov cl,03h   CL=03H                         0    0    0    0    1     

65、60;      shl dx,cl       ; DX=8*BX=0080H          0    u    0    0    0            sub dx,bx &#

66、160;  ; DX=7*BX=0070H           0    0    0    0    0           add dx,si      DX=7*BX+3*AX=0088H  0 

67、;   0    0    0    1注意:邏輯左移N次相當(dāng)于無符號整數(shù)乘以2的N次方,邏輯右移N次相當(dāng)于無符號整數(shù)除以2的N次方。移位指令根據(jù)移位的數(shù)據(jù)設(shè)置CF,根據(jù)移位后的結(jié)果影響SF,ZF,PF。在進(jìn)行一位移位時,根據(jù)最高符號位是否改變設(shè)置OF,如改變則OF1。另外,程序注釋用“u”表示標(biāo)志無定義(不確定),“-”表示無影響。習(xí)題2.13編寫程序段完成如下要求: (1)用位操作指令實現(xiàn)AL(無符號數(shù))乘以10(2)用邏輯運算指令實現(xiàn)數(shù)字0 9的ASCII碼與非壓縮BCD碼的互相

68、轉(zhuǎn)換(3)把DX.AX中的雙字右移4位解答(1) 不考慮進(jìn)位                   mov bl,al           mov cl,3           shl al,cl  &

69、#160;            ;*8           add al,bl             ;shl bl,1             add a

70、l,bl           ;考慮進(jìn)位           xor ah,ah           mov bx,ax           mov cl,3   

71、60;       shl ax,cl           add ax,bx             ;shl bx,1           add ax,bx(2)數(shù)字09的ASCII碼是:30h39h &

72、#160;      非壓縮BCD碼的09是:00h09h方法一:           and al,0fh            ;實現(xiàn)ASCII到非壓縮BCD碼的轉(zhuǎn)換           or al,30h  

73、60;          ;實現(xiàn)非壓縮BCD碼到ASCII的轉(zhuǎn)換方法二:           xor al,30h            ;求反D5D4位,其他不變           ;即高4位為3

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

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

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

77、         sar al,1              ; 結(jié)果:AL=1111 1100B=0FBH  即-5(2)用idiv編寫           mov al,0f7h        &

78、#160;  ; -9送al           cbw                   ; 字節(jié)符號擴(kuò)展位字           mov bl,2     

79、;         ; 注意除數(shù)不可為立即數(shù)           idiv bl               ; 結(jié)果:商為al=fch  (-4)          &

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

81、0;        mov di,601h           mov ax,ds           mov es,ax           mov cx,256     

82、60;     std           rep movsb解答 習(xí)題2.16說明下列程序段的功能           cld           mov ax,0fefh      &#

83、160;    mov cx,5           mov bx,3000h           mov es,bx           mov di,2000h         

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

85、轉(zhuǎn)移far jump?什么是段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移?8086有哪些指令可以實現(xiàn)段間轉(zhuǎn)移? 解答短轉(zhuǎn)移:指段內(nèi)128127之間的轉(zhuǎn)移,位移量用一個字節(jié)表示近轉(zhuǎn)移:指段內(nèi)±32K之間的轉(zhuǎn)移,位移量用一個字表示遠(yuǎn)轉(zhuǎn)移:指段間1MB范圍的轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:指在同一個代碼段內(nèi)的轉(zhuǎn)移,可以是短轉(zhuǎn)移或者近轉(zhuǎn)移段間轉(zhuǎn)移:指轉(zhuǎn)移到另外一個代碼段,就是遠(yuǎn)轉(zhuǎn)移8086/8088CPU的JMP、CALL和INT n指令可以實現(xiàn)段間轉(zhuǎn)移習(xí)題2.208086的條件轉(zhuǎn)移指令的轉(zhuǎn)移范圍有多大?實際編程時,你如何處理超出范圍的條件轉(zhuǎn)移? 解答8086的條件轉(zhuǎn)移的轉(zhuǎn)移范圍:在當(dāng)前指令地址的 +127-128之內(nèi)。如條件轉(zhuǎn)移的轉(zhuǎn)

86、移范圍超出此范圍,可在此范圍內(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判斷下列程序段

87、跳轉(zhuǎn)的條件            (1) xor ax,1e1eh                       je equal           (2)test al,b &#

88、160;                   jnz there           (3)cmp cx,64h                  &

89、#160;  jb there解答(1)AX1e1eh(異或后為0)(2)AL的D0或D7至少有一位為1(3)CX(無符號數(shù)) 64h習(xí)題2.23設(shè)置CX = 0,則LOOP指令將循環(huán)多少次?例如:              mov cx,0delay:   loop delay解答   216次。習(xí)題2.24假設(shè)AX和SI存放的是有符號數(shù),DX和DI存放的是無符號數(shù),請用比較指令和條件轉(zhuǎn)移指令實現(xiàn)以下判斷

90、: (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 dx,di          

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

92、;      ;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   

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論