




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)總線信號(hào)分成哪三組信號(hào)?(3)PC 機(jī)主存采用 DRAM 組成還是 SRAM 組成?(5)ROM-BIOS 是什么?(6)中斷是什么?(9)處理器的“取指譯碼執(zhí)行周期”是指什么?解答 總線信號(hào)分成三組,分別是數(shù)據(jù)總線、地址總線和控制總線。 PC 機(jī)主存采用 DRAM 組成。 ROM-BIOS 是“基本輸入輸出系統(tǒng)”,操作系統(tǒng)通過(guò)對(duì)BIOS 的調(diào)用驅(qū)動(dòng)各硬件設(shè)備,用戶也可以在應(yīng)用程序中調(diào)用BIOS 中的許多功能。 中斷是 CPU 正常執(zhí)行程序的流程被某種原因打斷、并暫時(shí)停止,轉(zhuǎn)向執(zhí)行事先安排好的一段處理程序, 待該處理程序結(jié)束后仍返回被中斷的指令
2、繼續(xù)執(zhí)行的過(guò)程。 指令的處理過(guò)程。處理器的“取指譯碼執(zhí)行周期”是指處理器從主存儲(chǔ)器讀取指令(簡(jiǎn)稱取指),翻譯指令代碼的功能(簡(jiǎn)稱譯碼),然后執(zhí)行指令所規(guī)定的操作(簡(jiǎn)稱執(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 也稱處理器,是微機(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è)備,也稱 I/O 設(shè)備。 I/O 設(shè)備通過(guò) I/O 接口與主機(jī)連接??偩€:互連各個(gè)部件的共用通道,主要含數(shù)據(jù)總線、地址總線和控制總線信.號(hào)。習(xí)題 1.7區(qū)別如下概念:助記符、匯編語(yǔ)言、匯編語(yǔ)言程序和匯編程序。解答助記符:人們采用便于記憶、 并能描述指令功能的符號(hào)來(lái)表
4、示機(jī)器指令操作碼,該符號(hào)稱為指令助記符。匯編語(yǔ)言:用助記符表示的指令以及使用它們編寫程序的規(guī)則就形成匯編語(yǔ)言。匯編語(yǔ)言程序: 用匯編語(yǔ)言書寫的程序就是匯編語(yǔ)言程序, 或稱匯編語(yǔ)言源程序。匯編程序:匯編語(yǔ)言源程序要翻譯成機(jī)器語(yǔ)言程序才可以由處理器執(zhí)行。 這個(gè)翻譯的過(guò)程稱為“匯編”,完成匯編工作的程序就是匯編程序( Assembler)。第 2 章 處理器結(jié)構(gòu)習(xí)題 2.1簡(jiǎn)答題(1)ALU 是什么?(2)8086 的取指為什么可以被稱為指令預(yù)?。浚?)堆棧的存取原則是什么?(5)標(biāo)志寄存器主要保存哪方面的信息?(6)執(zhí)行了一條加法指令后,發(fā)現(xiàn)ZF1,說(shuō)明結(jié)果是什么?(9)匯編語(yǔ)言源程序文件中,EN
5、D 語(yǔ)句后的語(yǔ)句會(huì)被匯編嗎?解答 ALU 是算術(shù)邏輯運(yùn)算單元,負(fù)責(zé)處理器所能進(jìn)行的各種運(yùn)算,主要是算術(shù)運(yùn)算和邏輯運(yùn)算。 取指是指從主存取出指令代碼通過(guò)總線傳輸?shù)教幚砥鲀?nèi)部指令寄存器的過(guò)程。 8086 分成總線接口單元和指令執(zhí)行單元,可以獨(dú)立操作。在執(zhí)行單元執(zhí)行一條指令的同時(shí), 總線接口單元可以讀取下一條指令, 等到執(zhí)行時(shí)不需要進(jìn)行取指了,所以稱為預(yù)取。 堆棧的存取原則是先進(jìn)后出(也稱為后進(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 類,分別被稱為 _、_和_。解答 段地址,偏移地址, EIP, IP 00100110,0 73C00H,73800H 立即數(shù)尋址、寄存器尋址和存儲(chǔ)器尋址習(xí)題 2.4 處理器內(nèi)部具有哪 3 個(gè)基本部分? 8086 分為哪兩大功能部件?其各自的主要功能是什么?
7、解答處理器內(nèi)部有 ALU 、寄存器和指令處理三個(gè)基本單元。8086 有兩大功能部件:總線接口單元和執(zhí)行單元??偩€接口單元:管理著 8086 與系統(tǒng)總線的接口,負(fù)責(zé)處理器對(duì)存儲(chǔ)器和外設(shè)進(jìn)行訪問(wèn)。 8086 所有對(duì)外操作必須通過(guò) BIU 和這些總線進(jìn)行。執(zhí)行單元 EU:負(fù)責(zé)指令譯碼、數(shù)據(jù)運(yùn)算和指令執(zhí)行。習(xí)題 2.5 8086 怎樣實(shí)現(xiàn)了最簡(jiǎ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)單的指令流水線技術(shù)。習(xí)題 2.8 什么是 8086 中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?請(qǐng)將如下邏輯地址用物理地址表達(dá)(均為十六進(jìn)制形式): FFFF0 40 17 2000 4500 B8214567 解答物理地址:在處理器地址總線上輸出的地址稱為物理地址。 每個(gè)存儲(chǔ)單元有一個(gè)唯一的物理地址。邏輯地址:在處理器內(nèi)部、程序員編程時(shí)采用邏輯地址,采用“段地址:偏移地址“形式。某個(gè)存儲(chǔ)單元可以有多個(gè)邏輯地址,即處于不同起點(diǎn)的邏輯段中,但其物理地址是唯一的。.邏輯地址轉(zhuǎn)換成物理地址:邏輯地址由處理器在輸出之前轉(zhuǎn)換為物理地址。將邏輯地址中的段地址左移二進(jìn)制 4 位(對(duì)應(yīng) 1
9、6 進(jìn)制是一位,即乘以 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(
10、5)mov edx,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ù)值
11、表達(dá)式看成是常量?(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)算為什么也稱為邏輯乘?解答 沒(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ì)
12、數(shù)值表達(dá)式計(jì)算,得到一個(gè)確定的數(shù)值,故稱數(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ī)則類似二進(jìn)制的乘法,所以稱其為邏輯乘。習(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è)是回車,其 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)用
14、DWORD 定義的一個(gè)變量 XYZ ,它的類型是 _,用“TYPEXYZ ” 會(huì) 得 到 數(shù) 值 為 _。 如 果 將 其 以 字 量使 用 , 應(yīng) 該 用_說(shuō)明。(6)數(shù)據(jù)段有語(yǔ)句“ ABC BYTE 1,2,3 ”,代碼段指令“ MOV CL, ABC+2 ” 執(zhí)行后, CL _。解答 BYTE ,OFFSET 97,61,小寫字母 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)
15、換為壓縮BCD 碼: 12 24 68 99解答 12H 24H 68H 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
16、 5AB0H 4AF4H ,有進(jìn)位 C051H 1234H BE1DH ,無(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解答my1bbyte Personal Computermy2bbyte 20my
17、3bbyte 14hmy4bbyte 00010100bmy5wword 20 dup(?)my6c= 100my7cequ .習(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 從低地址開始以字節(jié)為單位,用十六進(jìn)制形式給出下列語(yǔ)句依次分配的數(shù)值:byte ABC,10,10h,EF,3 dup(-1,?,3 dup(4)word 10h,-5,3 dup(?)解答41 42 43 0
18、A 10 45 46 FF 00 04 04 04 FF 00 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ù)
19、 3412H 相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù) 0A0H 與 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;
20、 EAX _, CF_(3)mov eax,100; EAX _add al,200; EAX _, CF_(4)mov al,7fh; AL _sub al,8; AL_,CF_,SF_sub al,80h; AL_,CF_,OF_sbb al,3; 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,7fh; AL
21、 7FHsub al,8; AL 77H, CF0,SF 0sub al,80h; AL F7H, CF1,OF 1sbb al,3; AL F3H, 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,89h; AL 89HCF ZF SF OF PFadd al,al; AL 12H10011.add al,9dh; AL 0AFH 00101cmp al,0bch; AL 0AF
22、H10101sub al,al; AL 00H01001dec al; AL 0FFH00101inc al; AL 00H01001習(xí)題 3.22 有兩個(gè) 64 位無(wú)符號(hào)整數(shù)存放在變量 buffer1 和 buffer2 中,定義數(shù)據(jù)、編寫代碼完成 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 ed
23、x,dword ptr buffer2+4習(xí)題 3.23 分別執(zhí)行如下程序片斷,說(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
24、,3; EAX _B,CF_(4)xor eax,eax; EAX _,CF _,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 給出
25、下列各條指令執(zhí)行后AX 的結(jié)果,以及狀態(tài)標(biāo)志CF、OF 、SF 、ZF 、PF 的狀態(tài)。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
26、 指令同“ 0”與實(shí)現(xiàn)復(fù)位, OR 指令同“ 1”或?qū)崿F(xiàn)置位, XOR 同“ 1” 異或?qū)崿F(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
27、 al,bcdand al,0fhadd al,30hcall dispc習(xí)題 3.31 下面程序的功能是將數(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,eaxa
28、dd ebx,1第 4 章 匯編語(yǔ)言程序設(shè)計(jì)習(xí)題 4.1簡(jiǎn)答題(3)為什么判斷無(wú)符號(hào)數(shù)大小和有符號(hào)大小的條件轉(zhuǎn)移指令不同?(4)雙分支結(jié)構(gòu)中兩個(gè)分支體之間的JMP 指令有什么作用?(5)為什么特別強(qiáng)調(diào)為子程序加上必要的注釋?(6)子程序采用堆棧傳遞參數(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è)分
29、支回到共同的出口作用。 完整的子程序注釋可方便程序員調(diào)用該子程序,子程序注釋包括子程序名、子程序功能、入口參數(shù)和出口參數(shù)、調(diào)用注意事項(xiàng)和其他說(shuō)明等。 子程序保持堆棧平衡, 才能保證執(zhí)行 RET 指令時(shí)當(dāng)前棧頂?shù)膬?nèi)容是正確的返回地址。主程序也要保持堆棧平衡, 這樣才能釋放傳遞參數(shù)占用的堆棧空間,否則多次調(diào)用該子程序可能就致使堆棧溢出。 “傳值”是傳遞參數(shù)的一個(gè)拷貝,被調(diào)用程序改變這個(gè)參數(shù)不影響調(diào)用程序;“傳址”時(shí),被調(diào)用程序可能修改通過(guò)地址引用的變量?jī)?nèi)容。 INCLUDE 語(yǔ)句 包 含 的是 文 本文 件 、 是源 程序 文 件的 一 部 分; INCLUDELIB 語(yǔ)句包含的是子程序庫(kù)文件。習(xí)
30、題 4.3填空題(1)JMP 指令根據(jù)目標(biāo)地址的轉(zhuǎn)移范圍和尋址方式,可以分成四種類型:段內(nèi)轉(zhuǎn)移、 _,段內(nèi)轉(zhuǎn)移、 _和段間轉(zhuǎn)移、 _,段間轉(zhuǎn)移、 _。.(2)假設(shè)在平展存儲(chǔ)模型下, EBX 1256H,雙字變量 TABLE 的偏移地址是 20A1H ,線性地址 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ò)程定義開
31、始是“ TEST PROC”語(yǔ)句,則過(guò)程定義結(jié)束的語(yǔ)句是_。宏定義開始是“ DISP MACRO ”語(yǔ)句,則宏定義結(jié)束的語(yǔ)句是_。(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 還是為
32、1?它會(huì)使得哪些條件轉(zhuǎn)移指令指令 Jcc 的條件成立、發(fā)生轉(zhuǎn)移?mov eax,20hcmp eax,80h解答CF 1ZF0SF1OF0PF 1可以使得條件成立、發(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)在,在接收端編寫一個(gè)這樣的程序, 如果偶校驗(yàn)不正確顯示錯(cuò)誤信息, 傳輸正確則繼續(xù)。 假設(shè)傳送字節(jié)數(shù)據(jù)、 最高位作為校驗(yàn)位,接收到的數(shù)據(jù)已經(jīng)保存在 Rdata 變量中。解答; 數(shù)據(jù)段Rdatabyte 57h; 保
33、存接收的數(shù)據(jù)errorbyte Error !,0; 代碼段mov al,Rdataand al,0ffh; 標(biāo)志 PF反映“ 1”的個(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,80000000hjn
34、z nextltest eax,1jnz nextrmov al,Mjmp donenextl: mov al,Ljmp donenextr: mov al,Rdone:call dispc.習(xí)題 4.11 編寫一個(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;
35、提示輸入數(shù)字call dispmsgagain: call readc;等待按鍵cmp al,0;數(shù)字 9 ?ja erdispcall 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è)雙字的和,保存在TOTA
36、L 變量,不關(guān)進(jìn)心進(jìn)位和溢出。.習(xí)題 4.13 編程中經(jīng)常要記錄某個(gè)字符出現(xiàn)的次數(shù)?,F(xiàn)編程記錄某個(gè)字符串中空格出現(xiàn)的次數(shù),結(jié)果保存在 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è)
37、數(shù)加1next:inc esijmp again; 繼續(xù)循環(huán)done:mov space,ebx ;保存結(jié)果習(xí)題 4.14 編寫計(jì)算 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 over
38、inc ebxloop againmov wordsum,axover:mov eax,offset error.call dispmsg習(xí)題 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 e
39、dimov edx,sizeof bugLN:mov al,esicmp edi,aljne L2inc esiinc edidec edxjne 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
40、esi,0jnz goonmov al,0call dispcjmp donegoon:mov ecx,8xor ebx,ebx; EBX 0,表示可能是前導(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
41、againdone:習(xí)題 4.17 已知一個(gè)字符串的長(zhǎng)度,剔除其中所有的空格字符。請(qǐng)從字符串最后一個(gè)字符開始逐個(gè)向前判斷、并進(jìn)行處理。解答; 數(shù)據(jù)段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 e
42、dimov al,stringedi;前移一個(gè)位置mov stringedi-1,alcmp edi,ecxjb inlpnext:dec esi;繼續(xù)進(jìn)行cmp esi,0jnz outlp;為 0 結(jié)束lea eax,string;顯示處理后的字符串done:call dispmsg習(xí)題 4.19 請(qǐng)按如下說(shuō)明編寫子程序:子程序功能:把用 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 編寫一個(gè)源程序,在鍵盤上按一個(gè)鍵,將其返回的 ASCII 碼值顯示出來(lái),如果按下 ESC 鍵(對(duì)應(yīng) ASCII 碼是 1BH )則程序退出。請(qǐng)調(diào)用書中的 HTOASC 子程序。解答;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (常考易錯(cuò)題)2022-2023學(xué)年三年級(jí)上冊(cè)期末核心考點(diǎn)數(shù)學(xué)試卷北師大版
- 2024年電子液壓萬(wàn)能試驗(yàn)機(jī)項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025年度招商引資人才引進(jìn)合作協(xié)議范本
- 2025年度房產(chǎn)獨(dú)家代理銷售與推廣協(xié)議
- 2025年度專業(yè)產(chǎn)后康復(fù)月嫂雇傭服務(wù)協(xié)議
- 2025年度商業(yè)空調(diào)拆除與安全防護(hù)責(zé)任合同
- 2025年度宅基地子女贈(zèng)與及后續(xù)土地開發(fā)利用合同
- 2025年甘肅有色冶金職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案
- 2025年度房地產(chǎn)租賃合同管理及市場(chǎng)調(diào)控合同
- 2025年度三方委托付款與物流運(yùn)輸合同
- 學(xué)生心理健康測(cè)量表
- GA745-2017銀行自助設(shè)備、自助銀行安全防范要求國(guó)標(biāo)
- 邯鄲市垃圾填埋場(chǎng)封場(chǎng)方案
- 2020閩教版信息技術(shù)四年級(jí)(下冊(cè))全冊(cè)教案
- introduction to pipeline pilot在處理數(shù)據(jù)中的一些應(yīng)用
- 智能中臺(tái)數(shù)據(jù)底座解決方案
- 突發(fā)性聾診療指南 (2015版)
- 光伏發(fā)電工程施工組織設(shè)計(jì)施工工程光伏發(fā)電工程光伏發(fā)電施工組織設(shè)計(jì)
- 11鋼的表面淬火解析
- 導(dǎo)數(shù)應(yīng)用舉例
- 第三講文獻(xiàn)的形成與流布1
評(píng)論
0/150
提交評(píng)論