微機(jī)原理與接口技術(shù)(第四版)課后習(xí)題答案-(1)._第1頁(yè)
微機(jī)原理與接口技術(shù)(第四版)課后習(xí)題答案-(1)._第2頁(yè)
微機(jī)原理與接口技術(shù)(第四版)課后習(xí)題答案-(1)._第3頁(yè)
微機(jī)原理與接口技術(shù)(第四版)課后習(xí)題答案-(1)._第4頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 1 章 微型計(jì)算機(jī)系統(tǒng)習(xí)題 1.1簡(jiǎn)答題(2)總線(xiàn)信號(hào)分成哪三組信號(hào)?(3)PC 機(jī)主存采用 DRAM 組成還是 SRAM 組成?(5)ROM-BIOS 是什么?(6)中斷是什么?(9)處理器的“取指譯碼執(zhí)行周期”是指什么?解答 總線(xiàn)信號(hào)分成三組,分別是數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn)。 PC 機(jī)主存采用 DRAM 組成。 ROM-BIOS 是“基本輸入輸出系統(tǒng)”,操作系統(tǒng)通過(guò)對(duì)BIOS 的調(diào)用驅(qū)動(dòng)各硬件設(shè)備,用戶(hù)也可以在應(yīng)用程序中調(diào)用BIOS 中的許多功能。 中斷是 CPU 正常執(zhí)行程序的流程被某種原因打斷、并暫時(shí)停止,轉(zhuǎn)向執(zhí)行事先安排好的一段處理程序, 待該處理程序結(jié)束后仍返回被中斷的指令

2、繼續(xù)執(zhí)行的過(guò)程。 指令的處理過(guò)程。處理器的“取指譯碼執(zhí)行周期”是指處理器從主存儲(chǔ)器讀取指令(簡(jiǎn)稱(chēng)取指),翻譯指令代碼的功能(簡(jiǎn)稱(chēng)譯碼),然后執(zhí)行指令所規(guī)定的操作(簡(jiǎn)稱(chēng)執(zhí)行)的過(guò)程。習(xí)題 1.3填空題(2)Intel 8086 支持 _容量主存空間, 80486 支持 _容量主存空間。(3)二進(jìn)制 16 位共有 _個(gè)編碼組合,如果一位對(duì)應(yīng)處理器一個(gè)地址信號(hào), 16 位地址信號(hào)共能尋址 _容量主存空間。(9)最初由公司采用 Intel 8088 處理器和()操作系統(tǒng)推出PC 機(jī)。 1MB , 4GB 216,64KB(9)IBM,DOS習(xí)題 1.4說(shuō)明微型計(jì)算機(jī)系統(tǒng)的硬件組成及各部分作用。解答CP

3、U:CPU 也稱(chēng)處理器,是微機(jī)的核心。它采用大規(guī)模集成電路芯片,芯片內(nèi)集成了控制器、 運(yùn)算器和若干高速存儲(chǔ)單元 (即寄存器)。處理器及其支持電路構(gòu)成了微機(jī)系統(tǒng)的控制中心,對(duì)系統(tǒng)的各個(gè)部件進(jìn)行統(tǒng)一的協(xié)調(diào)和控制。存儲(chǔ)器:存儲(chǔ)器是存放程序和數(shù)據(jù)的部件。外部設(shè)備:外部設(shè)備是指可與微機(jī)進(jìn)行交互的輸入(Input)設(shè)備和輸出( Output)設(shè)備,也稱(chēng) I/O 設(shè)備。 I/O 設(shè)備通過(guò) I/O 接口與主機(jī)連接。總線(xiàn):互連各個(gè)部件的共用通道,主要含數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控制總線(xiàn)信號(hào)。習(xí)題 1.7區(qū)別如下概念:助記符、匯編語(yǔ)言、匯編語(yǔ)言程序和匯編程序。解答助記符:人們采用便于記憶、 并能描述指令功能的符號(hào)來(lái)表示

4、機(jī)器指令操作碼,該符號(hào)稱(chēng)為指令助記符。匯編語(yǔ)言:用助記符表示的指令以及使用它們編寫(xiě)程序的規(guī)則就形成匯編語(yǔ)言。匯編語(yǔ)言程序: 用匯編語(yǔ)言書(shū)寫(xiě)的程序就是匯編語(yǔ)言程序, 或稱(chēng)匯編語(yǔ)言源程序。匯編程序:匯編語(yǔ)言源程序要翻譯成機(jī)器語(yǔ)言程序才可以由處理器執(zhí)行。 這個(gè)翻譯的過(guò)程稱(chēng)為“匯編”,完成匯編工作的程序就是匯編程序( Assembler)。第 2 章 處理器結(jié)構(gòu)習(xí)題 2.1簡(jiǎn)答題(1)ALU 是什么?(2)8086 的取指為什么可以被稱(chēng)為指令預(yù)???(4)堆棧的存取原則是什么?(5)標(biāo)志寄存器主要保存哪方面的信息?(6)執(zhí)行了一條加法指令后,發(fā)現(xiàn)ZF1,說(shuō)明結(jié)果是什么?(9)匯編語(yǔ)言源程序文件中,END

5、 語(yǔ)句后的語(yǔ)句會(huì)被匯編嗎?解答 ALU 是算術(shù)邏輯運(yùn)算單元,負(fù)責(zé)處理器所能進(jìn)行的各種運(yùn)算,主要是算術(shù)運(yùn)算和邏輯運(yùn)算。 取指是指從主存取出指令代碼通過(guò)總線(xiàn)傳輸?shù)教幚砥鲀?nèi)部指令寄存器的過(guò)程。 8086 分成總線(xiàn)接口單元和指令執(zhí)行單元,可以獨(dú)立操作。在執(zhí)行單元執(zhí)行一條指令的同時(shí), 總線(xiàn)接口單元可以讀取下一條指令, 等到執(zhí)行時(shí)不需要進(jìn)行取指了,所以稱(chēng)為預(yù)取。 堆棧的存取原則是先進(jìn)后出(也稱(chēng)為后進(jìn)先出)操作方式存取數(shù)據(jù)。 標(biāo)志寄存器主要保存反映指令執(zhí)行結(jié)果和控制指令執(zhí)行形式的有關(guān)狀態(tài)。 執(zhí)行了一條加法指令后,發(fā)現(xiàn)ZF 1,表明運(yùn)算結(jié)果為0。 不會(huì)。習(xí)題 2.3填空題(3)邏輯地址由 _和_兩部分組成。代

6、碼段中下一條要執(zhí)行的指令由CS 和 _寄存器指示,后者在實(shí)地址模型中起作用的僅有_寄存器部分。(4)進(jìn)行 8 位二進(jìn)制數(shù)加法: 1011101001101100,8 位結(jié)果是 _,標(biāo)志 PF_。(5)在實(shí)地址工作方式下,邏輯地址“7380H 400H”表示的物理地址是_,并且該段起始于 _物理地址。(9)除外設(shè)數(shù)據(jù)外的數(shù)據(jù)尋址方式有 3 類(lèi),分別被稱(chēng)為_(kāi)和_。_、解答 段地址,偏移地址, 00100110,0EIP, IP 73C00H,73800H 立即數(shù)尋址、寄存器尋址和存儲(chǔ)器尋址習(xí)題 2.4 處理器內(nèi)部具有哪 3 個(gè)基本部分? 8086 分為哪兩大功能部件?其各自的主要功能是什么?解答處

7、理器內(nèi)部有 ALU 、寄存器和指令處理三個(gè)基本單元。8086 有兩大功能部件:總線(xiàn)接口單元和執(zhí)行單元??偩€(xiàn)接口單元:管理著 8086 與系統(tǒng)總線(xiàn)的接口,負(fù)責(zé)處理器對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪(fǎng)問(wèn)。 8086 所有對(duì)外操作必須通過(guò) BIU 和這些總線(xiàn)進(jìn)行。執(zhí)行單元 EU:負(fù)責(zé)指令譯碼、數(shù)據(jù)運(yùn)算和指令執(zhí)行。習(xí)題 2.5 8086 怎樣實(shí)現(xiàn)了最簡(jiǎn)單的指令流水線(xiàn)?解答8086 中,指令的讀取是在 BIU 單元,而指令的執(zhí)行是在 EU 單元。因?yàn)?BIU 和 EU 兩個(gè)單元相互獨(dú)立、分別完成各自操作,所以可以并行操作。也就是說(shuō),在 EU 單元對(duì)一個(gè)指令進(jìn)行譯碼執(zhí)行時(shí), BIU 單元可以同時(shí)對(duì)后續(xù)指令進(jìn)行讀??;這就

8、是最簡(jiǎn)單的指令流水線(xiàn)技術(shù)。習(xí)題 2.8 什么是 8086 中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?請(qǐng)將如下邏輯地址用物理地址表達(dá)(均為十六進(jìn)制形式): FFFF0 40 17 2000 4500 B8214567 解答物理地址:在處理器地址總線(xiàn)上輸出的地址稱(chēng)為物理地址。 每個(gè)存儲(chǔ)單元有一個(gè)唯一的物理地址。邏輯地址:在處理器內(nèi)部、程序員編程時(shí)采用邏輯地址,采用“段地址:偏移地址“形式。某個(gè)存儲(chǔ)單元可以有多個(gè)邏輯地址,即處于不同起點(diǎn)的邏輯段中,但其物理地址是唯一的。邏輯地址轉(zhuǎn)換成物理地址:邏輯地址由處理器在輸出之前轉(zhuǎn)換為物理地址。將邏輯地址中的段地址左移二進(jìn)制 4 位(對(duì)應(yīng) 16 進(jìn)制

9、是一位,即乘以 16),加上偏移地址就得到 20 位物理地址。 FFFFH:0 FFFF0H 40H:17H 00417H 2000H:4500H24500H B821H:4567H BC777H習(xí)題 2.12 匯編語(yǔ)句有哪兩種,每個(gè)語(yǔ)句由哪4 個(gè)部分組成?解答匯編語(yǔ)句有兩種:執(zhí)行性語(yǔ)句(處理器指令)、說(shuō)明性語(yǔ)句(偽指令)。每個(gè)語(yǔ)句有:標(biāo)號(hào)、指令助記符、操作數(shù)或參數(shù)、注釋4 個(gè)部分組成。習(xí)題2.16 說(shuō)明下列指令中源操作數(shù)的尋址方式?假設(shè)VARD是一個(gè)雙字變量。(1)mov edx,1234h(2)mov edx,vard(3)mov edx,ebx(4)mov edx,ebx(5)mov e

10、dx,ebx+1234h(6)mov edx,vardebx(7)mov edx,ebx+edi(8)mov edx,ebx+edi+1234h(9)mov edx,vardesi+edi(10) mov edx,ebp*4解答 立即數(shù) 直接 寄存器 寄存器間接 寄存器相對(duì) 寄存器相對(duì) 基址變址 相對(duì)基址變址 相對(duì)基址變址 帶比例尋址第 3章數(shù)據(jù)處理習(xí)題 3.1簡(jiǎn)答題(1)使用二進(jìn)制 8 位表達(dá)無(wú)符號(hào)整數(shù), 257 有對(duì)應(yīng)的編碼嗎?(2)字符“ F”和數(shù)值 46H 作為 MOV 指令的源操作數(shù)有區(qū)別嗎?(3)為什么可以把指令“ MOV AX, (3467H)*3 ”中的數(shù)值表達(dá)式看成是常量?(

11、4)數(shù)值 500,能夠作為字節(jié)變量的初值嗎?(6)都是獲取偏移地址, 為什么指令“LEA EBX, ESI ”正確,而指令“ MOV EBX, OFFSETESI ”就錯(cuò)誤?(7)INC,DEC,NEG 和 NOT 都是單操作數(shù)指令,這個(gè)操作數(shù)應(yīng)該是源操作數(shù)還是目的操作數(shù)?(9)乘除法運(yùn)算針對(duì)無(wú)符號(hào)數(shù)和有符號(hào)數(shù),有兩種不同的指令。只有一種指令的加減法如何區(qū)別無(wú)符號(hào)數(shù)和有符號(hào)數(shù)運(yùn)算?(10)邏輯與運(yùn)算為什么也稱(chēng)為邏輯乘?解答 沒(méi)有。使用二進(jìn)制8 位表達(dá)無(wú)符號(hào)整數(shù), 257 沒(méi)有對(duì)應(yīng)的編碼。 字符“ F”的 ASCII 碼就是數(shù)值 46H,所以沒(méi)有區(qū)別。 匯編程序在匯編過(guò)程中對(duì)數(shù)值表達(dá)式計(jì)算,得到

12、一個(gè)確定的數(shù)值,故稱(chēng)數(shù)值表達(dá)式為常量。 不能。數(shù)值 500 大于一個(gè)字節(jié)所能表達(dá)的數(shù)據(jù)量,所以不能為字節(jié)變量賦值。 前者在指令執(zhí)行時(shí)獲得偏移地址,是正確的;但后者的 OFFSET 只能在匯編階段獲得偏移地址, 但此時(shí)寄存器內(nèi)容是不可知的, 所以無(wú)法獲得偏移地址。 INC ,DEC,NEG 和 NOT 指令的操作數(shù)既是源操作數(shù)也是目的操作數(shù)。 加減法不區(qū)別無(wú)符號(hào)數(shù)和有符號(hào)數(shù),但根據(jù)運(yùn)算結(jié)果分別設(shè)置標(biāo)志寄存器的 CF 和 OF 標(biāo)志,可利用 CF 和 OF 進(jìn)行區(qū)別。 邏輯與運(yùn)算規(guī)則類(lèi)似二進(jìn)制的乘法,所以稱(chēng)其為邏輯乘。習(xí)題 3.3填空題(1)定義字節(jié)變量的偽指令助記符是_,獲取變量名所具有的偏移地

13、址的操作符是 _。(2)計(jì)算機(jī)中有一個(gè)“ 01100001”編碼。如果把它認(rèn)為是無(wú)符號(hào)數(shù),它是 10 進(jìn)制數(shù) _;如果認(rèn)為它是 BCD 碼,則表示真值 _;又如果它是某個(gè)ASCII 碼,則代表字符 _。(3)C 語(yǔ)言用“ n”表示讓光標(biāo)回到下一行首位,在匯編語(yǔ)言中需要輸出兩個(gè)控制字符:一個(gè)是回車(chē),其 ASCII 碼是 _,它將光標(biāo)移動(dòng)到當(dāng)前所在行的首位;另一個(gè)是換行,其ASCII 碼是 _,它將光標(biāo)移到下一行。(4)數(shù)據(jù)段有語(yǔ)句 “ H8843 DWORD 99008843H”,代碼段指令 “ MOV CX, WORD PTR H8843 ”執(zhí)行后, CX _。(5)用 DWORD 定義的一個(gè)

14、變量 XYZ ,它的類(lèi)型是 _,用“TYPEXYZ ”會(huì)得到數(shù)值為_(kāi)。如果將其以字量使用,應(yīng)該用_說(shuō)明。(6)數(shù)據(jù)段有語(yǔ)句“ ABC BYTE 1,2,3 ”,代碼段指令“ MOV CL, ABC+2 ” 執(zhí)行后, CL _。解答 BYTE ,OFFSET 97,61,小寫(xiě)字母 a 0DH(13), 0AH (10) 8843H DWORD ,4,WORD PTR XYZ 3習(xí)題 3.4下列十六進(jìn)制數(shù)表示無(wú)符號(hào)整數(shù),請(qǐng)轉(zhuǎn)換為十進(jìn)制形式的真值:FFH 0H 5EH EFH 解答 255 0 94 239習(xí)題 3.5將下列十進(jìn)制數(shù)真值轉(zhuǎn)換為壓縮BCD 碼:12246899解答 12H 24H 68

15、H 99H習(xí)題 3.6將下列壓縮 BCD 碼轉(zhuǎn)換為十進(jìn)制數(shù): 10010001 10001001 00110110 10010000 解答 91 89 36 90習(xí)題 3.7將下列十進(jìn)制數(shù)用8 位二進(jìn)制補(bǔ)碼表示: 0 127 127 57解答 00000000 01111111 10000001 11000111習(xí)題 3.8進(jìn)行十六進(jìn)制數(shù)據(jù)的加減運(yùn)算,并說(shuō)明是否有進(jìn)位或借位: 1234H7802H F034H 5AB0H C051H 1234H 9876HABCDH解答 1234H7802H8A36H ,無(wú)進(jìn)位 F034H 5AB0H 4AF4H ,有進(jìn)位 C051H 1234H BE1DH

16、,無(wú)借位 9876HABCDH ECA9H ,有借位習(xí)題 3.10 設(shè)置一個(gè)數(shù)據(jù)段,按照如下要求定義變量或符號(hào)常量: my1b 為字符串變量: Personal Computer my2b 為用十進(jìn)制數(shù)表示的字節(jié)變量: 20 my3b 為用十六進(jìn)制數(shù)表示的字節(jié)變量: 20 my4b 為用二進(jìn)制數(shù)表示的字節(jié)變量: 20 my5w 為 20 個(gè)未賦值的字變量 my6c 為 100 的常量 my7c 表示字符串: Personal Computer解答my1b my2b my3b my4b my5w my6c my7cbyte Personal Computerbyte 20byte 14hbyte

17、 00010100bword 20 dup(?)= 100equ 習(xí)題 3.11 定義常量 NUM ,其值為 5;數(shù)據(jù)段中定義字?jǐn)?shù)組變量 DATALIST ,它的頭 5 個(gè)字單元中依次存放 -10 , 2, 5 和 4,最后 1 個(gè)單元初值不定。解答numequ 5datalistbyte -10,2,5,4,?習(xí)題 3.12 從低地址開(kāi)始以字節(jié)為單位,用十六進(jìn)制形式給出下列語(yǔ)句依次分配的數(shù)值:byte ABC,10,10h,EF,3 dup(-1,?,3 dup(4)word 10h,-5,3 dup(?)解答41 42 43 0A 10 45 46 FF 00 04 04 04 FF 00

18、 04 04 04 FF 00 04 04 0410 00 FB FF 00 00 00 00 00 00習(xí)題 3.19 請(qǐng)分別用一條匯編語(yǔ)言指令完成如下功能:(去 E)(1)把 EBX 寄存器和 EDX 寄存器的內(nèi)容相加,結(jié)果存入 EDX 寄存器。(2)用寄存器 EBX 和 ESI 的基址變址尋址方式把存儲(chǔ)器的一個(gè)字節(jié)與 AL寄存器的內(nèi)容相加,并把結(jié)果送到AL 中。(3)用 EBX 和位移量 0B2H 的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)雙字和 ECX 寄存器的內(nèi)容相加,并把結(jié)果送回存儲(chǔ)器中。(4)將 32 位變量 VARD 與數(shù) 3412H 相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù) 0A

19、0H 與 EAX 寄存器的內(nèi)容相加,并把結(jié)果送回EAX 中。解答 add edx,ebx add al,ebx+esi add bx+0b2h,cx add varw,3412h add eax,0a0h習(xí)題 3.20 分別執(zhí)行如下程序片斷,說(shuō)明每條指令的執(zhí)行結(jié)果:(去 E)(1)mov eax,80h; EAX _add eax,3; EAX _,CF _,SF_add eax,80h; EAX _,CF _,OF_adc eax,3; EAX _,CF _,ZF_(2)mov eax,100; EAX _add ax,200; EAX _, CF_(3)mov eax,100add al,

20、200; EAX _; EAX _, CF_(4)mov al,7fhsub al,8sub al,80hsbb al,3; AL _; AL_,CF_,SF_; AL_,CF_,OF_; AL_,CF_,ZF_解答(1); EAX 80H; EAX 83H,CF0,SF0; EAX 103H, CF0,OF 0; EAX 106H, CF0,ZF 0(2); EAX 100; EAX 300,CF0(3); EAX 100; EAX 44,CF1(包含 256 的進(jìn)位含義: 25644 300)(4)mov al,7fhsub al,8sub al,80hsbb al,3; AL; AL;

21、AL; AL7FH77H, CF0,SF 0F7H, CF1,OF 1F3H, CF0,ZF 0習(xí)題3.21 (推敲)給出下列各條指令執(zhí)行后AL 值,以及 CF、ZF、 SF、 OF 和 PF 的狀態(tài):mov al,89hadd al,aladd al,9dhcmp al,0bchsub al,aldec alinc al解答mov al,89hadd al,al; AL; AL89H12HCF ZF SF OF PF10011add al,9dh; AL 0AFH 00101cmp al,0bch; AL 0AFH10101sub al,al; AL 00H01001dec al; AL 0

22、FFH00101inc al; AL 00H01001習(xí)題 3.22 有兩個(gè) 64 位無(wú)符號(hào)整數(shù)存放在變量 buffer1 和 buffer2 中,定義數(shù)據(jù)、編寫(xiě)代碼完成 EDX.EAX buffer1 buffer2 功能。 (去 E)解答; 數(shù)據(jù)段buffer1 qword 67883000hbuffer2 qword 67762000h; 代碼段mov eax,dword ptr buffer1mov edx,dword ptr buffer1+4sub eax,dword ptr buffer2sbb edx,dword ptr buffer2+4習(xí)題 3.23 分別執(zhí)行如下程序片斷,

23、說(shuō)明每條指令的執(zhí)行結(jié)果:(去 E)(1)mov esi,10011100b; ESI _Hand esi,80h; ESI _Hor esi,7fh; ESI _Hxor esi,0feh; ESI_H(2)mov eax,1010b ; EAX_Bshr eax,2; EAX _B,CF_shl eax,1; EAX _B,CF_and eax,3; EAX _B,CF_(3)mov eax,1011b ; EAX_Brol eax,2; EAX _B,CF_rcr eax,1; EAX _B,CF_or eax,3; EAX _B,CF_(4)xor eax,eax; EAX _,CF _

24、,OF_; ZF _,SF_,PF_解答(1); ESI 9CH; ESI 80H; ESI FFH; ESI 01H(2); EAX 1010B(可以有前導(dǎo) 0,下同); EAX 0010B,CF 1; EAX 0100B,CF 0; EAX 0000B,CF 0(3); EAX 1011B(可以有前導(dǎo) 0,下同); EAX 101100B,CF0; EAX 10110B,CF0; EAX 10111B,CF0(4); EAX 0, CF0,OF 0; ZF 1, SF0,PF 1習(xí)題 3.24 3.24 給出下列各條指令執(zhí)行后AX 的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF 的狀態(tài)。

25、mov ax,1470hand ax,axor ax,axxor ax,axnot axtest ax,0f0f0h解答mov ax,1470h; AX 1470H CF OFSF ZF PFand ax,ax; AX 1470H 00000or ax,ax; AX 1470H 00000xor ax,ax; AX 0000H 00011not ax; AX FFFFH 00011test ax,0f0f0h; AX0F0F0H00101習(xí)題 3.25 邏輯運(yùn)算指令怎么實(shí)現(xiàn)復(fù)位、置位和求反功能?解答AND 指令同“ 0”與實(shí)現(xiàn)復(fù)位, OR 指令同“ 1”或?qū)崿F(xiàn)置位, XOR 同“ 1” 異或?qū)?/p>

26、現(xiàn)求反。習(xí)題 3.27 (去 E)編程將一個(gè) 64 位數(shù)據(jù)邏輯左移 3 位,假設(shè)這個(gè)數(shù)據(jù)已經(jīng)保存在 EDX.EAX 寄存器對(duì)中。解答; 代碼段mov ecx,3again: shl eax,1rcl edx,1loop again習(xí)題 3.28 編程將一個(gè)壓縮 BCD 碼變量(例如 92H )轉(zhuǎn)換為對(duì)應(yīng)的 ASCII 碼,然后調(diào)用 DISPC 子程序(在輸入輸出子程序庫(kù)中)顯示。解答; 數(shù)據(jù)段bcdbyte 92h; 代碼段mov al,bcdshr al,4add al,30hcall dispcmov al,bcdand al,0fhadd al,30hcall dispc習(xí)題 3.31

27、下面程序的功能是將數(shù)組 ARRAY1 的每個(gè)元素加固定值(8000H ),將和保存在數(shù)組 ARRAY2 。在空白處填入適當(dāng)?shù)恼Z(yǔ)句或語(yǔ)句的一部分。; 數(shù)據(jù)段array1 dword 1,2,3,4,5,6,7,8,9,10array2 dword 10 dup(?); 代碼段mov ecx,lengthof array1mov ebx,0again: mov eax,array1ebx*4add eax,8000hmov _add ebx,_loop again解答mov array2ebx*4,eaxadd ebx,1第 4 章 匯編語(yǔ)言程序設(shè)計(jì)習(xí)題 4.1簡(jiǎn)答題(3)為什么判斷無(wú)符號(hào)數(shù)大小和

28、有符號(hào)大小的條件轉(zhuǎn)移指令不同?(4)雙分支結(jié)構(gòu)中兩個(gè)分支體之間的JMP 指令有什么作用?(5)為什么特別強(qiáng)調(diào)為子程序加上必要的注釋?zhuān)浚?)子程序采用堆棧傳遞參數(shù),為什么要特別注意堆棧平衡問(wèn)題?(7)參數(shù)傳遞的“傳值”和“傳址”有什么區(qū)別?(8)INCLUDE 語(yǔ)句和 INCLUDELIB 有什么區(qū)別?解答 無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的操作影響兩組不同的標(biāo)志狀態(tài)位,故判斷兩個(gè)無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的大小關(guān)系要利用不同的標(biāo)志位組合,所以有對(duì)應(yīng)的兩組指令。 雙分支結(jié)構(gòu)中兩個(gè)分支體之間的 JMP 指令,用于實(shí)現(xiàn)結(jié)束前一個(gè)分支回到共同的出口作用。 完整的子程序注釋可方便程序員調(diào)用該子程序,子程序注釋包括子程序名、子

29、程序功能、入口參數(shù)和出口參數(shù)、調(diào)用注意事項(xiàng)和其他說(shuō)明等。 子程序保持堆棧平衡, 才能保證執(zhí)行 RET 指令時(shí)當(dāng)前棧頂?shù)膬?nèi)容是正確的返回地址。主程序也要保持堆棧平衡, 這樣才能釋放傳遞參數(shù)占用的堆??臻g,否則多次調(diào)用該子程序可能就致使堆棧溢出。 “傳值”是傳遞參數(shù)的一個(gè)拷貝,被調(diào)用程序改變這個(gè)參數(shù)不影響調(diào)用程序;“傳址”時(shí),被調(diào)用程序可能修改通過(guò)地址引用的變量?jī)?nèi)容。 INCLUDE 語(yǔ)句包含的是文本文件、是源程序文件的一部分; INCLUDELIB 語(yǔ)句包含的是子程序庫(kù)文件。習(xí)題 4.3填空題(1)JMP 指令根據(jù)目標(biāo)地址的轉(zhuǎn)移范圍和尋址方式,可以分成四種類(lèi)型:段內(nèi)轉(zhuǎn)移、 _,段內(nèi)轉(zhuǎn)移、 _和段

30、間轉(zhuǎn)移、 _,段間轉(zhuǎn)移、 _。(2)假設(shè)在平展存儲(chǔ)模型下, EBX 1256H,雙字變量 TABLE 的偏移地址是 20A1H ,線(xiàn)性地址 32F7H 處存放 3280H,執(zhí)行指令“ JMP EBX ” 后 EIP_,執(zhí)行指令“ JMP TABLEEBX ”后 EIP_。(3)“ CMP EAX,3721H ”指令之后是JZ 指令,發(fā)生轉(zhuǎn)移的條件是EAX _ ,此時(shí) ZF _ 。(去 E)( 5)循環(huán)結(jié)構(gòu)程序一般有三個(gè)部分組成,它們是_,循環(huán)體和_部分。( 7 )過(guò)程定義開(kāi)始是“ TEST PROC”語(yǔ)句,則過(guò)程定義結(jié)束的語(yǔ)句是_。宏定義開(kāi)始是“ DISP MACRO ”語(yǔ)句,則宏定義結(jié)束的語(yǔ)

31、句是_。(8)利用堆棧傳遞子程序參數(shù)的方法是固定的,例如尋址堆棧段數(shù)據(jù)的寄存器是 _。(9)MASM 匯編語(yǔ)言中,聲明一個(gè)共用的變量應(yīng)使用_偽指令;而使用外部變量要使用 _偽指令聲明。解答 相對(duì)尋址,間接尋址,直接尋址,間接尋址 1256H,3280H 3721H,1 循環(huán)初始,循環(huán)控制 TEST ENDP,ENDM EBP PUBLIC , EXTERN習(xí)題 4.6執(zhí)行如下程序片斷后, CMP 指令分別使得 5 個(gè)狀態(tài)標(biāo)志 CF、ZF、SF、OF和 PF 為 0 還是為 1?它會(huì)使得哪些條件轉(zhuǎn)移指令指令 Jcc 的條件成立、發(fā)生轉(zhuǎn)移?mov eax,20hcmp eax,80h解答CF1ZF

32、0SF1OF0PF1可以使得條件成立、發(fā)生轉(zhuǎn)移的指令有:JCJSJPJNZJNO習(xí)題 4.8在采用奇偶校驗(yàn)傳輸數(shù)據(jù)的接收端應(yīng)該驗(yàn)證數(shù)據(jù)傳輸?shù)恼_性。例如,如果采用偶校驗(yàn),那么在接收到的數(shù)據(jù)中,其包含“ 1”的個(gè)數(shù)應(yīng)該為 0 或偶數(shù)個(gè),否則說(shuō)明出現(xiàn)傳輸錯(cuò)誤。 現(xiàn)在,在接收端編寫(xiě)一個(gè)這樣的程序,如果偶校驗(yàn)不正確顯示錯(cuò)誤信息, 傳輸正確則繼續(xù)。 假設(shè)傳送字節(jié)數(shù)據(jù)、 最高位作為校驗(yàn)位,接收到的數(shù)據(jù)已經(jīng)保存在 Rdata 變量中。解答; 數(shù)據(jù)段Rdatabyte 57h; 保存接收的數(shù)據(jù)errorbyte Error !,0; 代碼段mov al,Rdataand al,0ffh; 標(biāo)志 PF反映“ 1

33、”的個(gè)數(shù)jp done; 個(gè)數(shù)為偶數(shù),正確繼續(xù)mov eax,offset error; 個(gè)數(shù)為奇數(shù),顯示出錯(cuò)call dispmsgdone:習(xí)題 4.10 編程,首先測(cè)試雙字變量 DVAR 的最高位,如果為 1,則顯示字母“ L”;如果最高位不為 1,則繼續(xù)測(cè)試最低位,如果最低位為 1,則顯示字母“ R”;如果最低位也不為 1,則顯示字母“ M”。解答; 數(shù)據(jù)段dvardword 57h; 代碼段 mov eax,dvartest eax,80000000hjnz nextltest eax,1jnz nextrmov al,Mjmp donenextl: mov al,Ljmp done

34、nextr: mov al,Rdone:call dispc習(xí)題 4.11 編寫(xiě)一個(gè)程序,先提示輸入數(shù)字“Input Number : 0 9”,然后在下一行顯示輸入的數(shù)字,結(jié)束;如果不是鍵入了 0 9 數(shù)字,就提示錯(cuò)誤 “ Error! ”,繼續(xù)等待輸入數(shù)字。解答; 數(shù)據(jù)段inmsgbyte Input number(09): ,0ermsgbyte 0dh,0ah,Error! Input again: ,0; 代碼段mov eax,offset inmsg;提示輸入數(shù)字call dispmsgagain: call readc;等待按鍵cmp al,0;數(shù)字 9 ?ja erdispca

35、ll dispcrlfcall dispcjmp doneerdisp:mov eax,offset ermsgcall dispmsgjmp againdone:習(xí)題 4.12 有一個(gè)首地址為 ARRAY 的 20 個(gè)雙字的數(shù)組, 說(shuō)明下列程序段的功能。mov ecx,20mov eax,0mov esi,eaxsumlp: add eax,arrayesiadd esi,4loop sumlpmov total,eax解答求這 20 個(gè)雙字的和,保存在TOTAL 變量,不關(guān)進(jìn)心進(jìn)位和溢出。習(xí)題 4.13 編程中經(jīng)常要記錄某個(gè)字符出現(xiàn)的次數(shù)。現(xiàn)編程記錄某個(gè)字符串中空格出現(xiàn)的次數(shù),結(jié)果保存在

36、SPACE 單元。解答; 數(shù)據(jù)段string byte Do you have fun with Assembly ?,0; 以 0 結(jié)尾的字符串spacedword ?; 代碼段mov esi,offset stringxor ebx,ebx;EBX 用于記錄空格數(shù)again: mov al,esicmp al,0jz donecmp al,20h; 空格的 ASCII 碼是 20Hjne next; 不相等、不是空格,轉(zhuǎn)移inc bx; 相等、是空格,空格個(gè)數(shù)加1next:inc esijmp again; 繼續(xù)循環(huán)done:mov space,ebx ;保存結(jié)果習(xí)題 4.14 編寫(xiě)計(jì)算

37、100 個(gè) 16 位正整數(shù)之和的程序。如果和不超過(guò)16 位字的范圍( 65535 ),則保存其和到 WORDSUM ,如超過(guò)則顯示 Overflow ! 。解答;數(shù)據(jù)段arrayword 2005,2008,98 dup (1394);假設(shè)100 個(gè)16 位正整數(shù)wordsumword ?errorbyte Overflow !,0;代碼段and ebx,0mov ecx,100xor ax,axagain: add ax,arrayebx*2jc overinc ebxloop againmov wordsum,axover:mov eax,offset errorcall dispmsg習(xí)

38、題 4.15 在一個(gè)已知長(zhǎng)度的字符串中查找是否包含“ BUG ”子字符串。如果存在,顯示“ Y”,否則顯示“ N”。解答; 數(shù)據(jù)段string byte If you find any error in the program, you can DEBUG it.count= sizeof stringbugbyte BUG;代碼段mov ecx,countmov edi,offset stringL1:mov esi,offset bugpush edimov edx,sizeof bugLN:mov al,esicmp edi,aljne L2inc esiinc edidec edxjn

39、e LNpop edimov al,Yjmp L3L2:pop ediinc ediloop L1mov al,NL3:call dispc習(xí)題 4.16 主存中有一個(gè) 8 位壓縮 BCD 碼數(shù)據(jù),保存在一個(gè)雙字變量中。 現(xiàn)在需要進(jìn)行顯示,但要求不顯示前導(dǎo) 0。由于位數(shù)較多,需要利用循環(huán)實(shí)現(xiàn),但如何處理前導(dǎo) 0 和數(shù)據(jù)中間的 0 呢?不妨設(shè)置一個(gè)標(biāo)記。編程實(shí)現(xiàn)。解答; 數(shù)據(jù)段bcddword 00371002h; 代碼段mov esi,bcdcmp esi,0jnz goonmov al,0call dispcjmp donegoon:mov ecx,8xor ebx,ebx; EBX 0,表

40、示可能是前導(dǎo) 0again: rol esi,4mov eax,esiand eax,0fh; EAX 低 4 位保存當(dāng)前要顯示的 BCD碼cmp ebx,0; EBX 0,說(shuō)明不是前導(dǎo) 0,要顯示jnz disp; EBX 0,說(shuō)明可能是前導(dǎo) 0cmp eax,0jz next; EAX 0,說(shuō)明是前導(dǎo) 0,不顯示mov ebx,1; EAX 0,沒(méi)有前導(dǎo) 0 了,令 EBX10disp:add al,30hcall dispcnext:loop againdone:習(xí)題 4.17 已知一個(gè)字符串的長(zhǎng)度,剔除其中所有的空格字符。請(qǐng)從字符串最后一個(gè)字符開(kāi)始逐個(gè)向前判斷、并進(jìn)行處理。解答; 數(shù)據(jù)

41、段string byte Let us have a try !,0dh,0ah,0; 代碼段mov ecx,sizeof stringcmp ecx,2jb donelea eax,string;顯示處理前的字符串call dispmsgmov esi,ecxdec esioutlp: cmp stringesi, ;檢測(cè)是否是空格jnz next;不是空格繼續(xù)循環(huán)mov edi,esi;是空格,進(jìn)入剔除空格分支dec ecxinlp:inc edimov al,stringedi;前移一個(gè)位置mov stringedi-1,alcmp edi,ecxjb inlpnext:dec esi;

42、繼續(xù)進(jìn)行cmp esi,0jnz outlp;為0結(jié)束lea eax,string;顯示處理后的字符串done:call dispmsg習(xí)題 4.19 請(qǐng)按如下說(shuō)明編寫(xiě)子程序:子程序功能:把用 ASCII 碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換為壓縮 BCD 碼入口參數(shù): DH 十位數(shù)的 ASCII 碼, DL 個(gè)位數(shù)的 ASCII 碼出口參數(shù): AL 對(duì)應(yīng) BCD 碼解答asctob procshl dh,4mov al,dhand dl,0fhor al,dlretasctob endp習(xí)題 4.21 編寫(xiě)一個(gè)源程序,在鍵盤(pán)上按一個(gè)鍵,將其返回的 ASCII 碼值顯示出來(lái),如果按下 ESC 鍵(對(duì)應(yīng) ASCII 碼是 1BH )則程序退出。請(qǐng)調(diào)用書(shū)中的 HTOASC 子程序。解答; 代碼段,主程序again: call readc cmp al,1bh jz done mov bl,almov al,:call dispcmov al,blrol al,4call htoasc;調(diào)用子程

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論