微機原理與接口技術課后習題參考答案_第1頁
微機原理與接口技術課后習題參考答案_第2頁
微機原理與接口技術課后習題參考答案_第3頁
微機原理與接口技術課后習題參考答案_第4頁
微機原理與接口技術課后習題參考答案_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、微機原理與接口技術復習題第1章1 .簡述名詞的概念:微處理器、微型計算機、微型計算機系統(tǒng)。答:(1)微處理器:微處理器(Microprocessor)簡稱P或MP,或CPU。CPU是采用大規(guī)模和超大規(guī)模集成電路技術將算術邏輯部件ALU(ArithmeticLogicUnit)、控制部件CU(ControlUnit)和寄存器組R(Registers)等三個基本部分以及內部總線集成在一塊半導體芯片上構成的電子器件。(2)微型計算機:微型計算機(Microcomputer)是指以微處理器為核心,配上由大規(guī)模集成電路制作的存儲器、輸入/輸出接口電路及系統(tǒng)總線等所組成的計算機,簡稱微機。(3)微型計算機

2、系統(tǒng):微型計算機系統(tǒng)由硬件與軟件兩大部分組成,分別稱為硬件(Hardware)系統(tǒng)與軟件(Software)系統(tǒng)。其中,硬件(Hardware)系統(tǒng)由CPU、內存儲器、各類I/O接口、相應的I/O設備以及連接各部件的地址總線、數(shù)據總線、控制總線等組成。軟件(Software)系統(tǒng):計算機軟件(Software)是指為運行、維護、管理、應用計算機所編制的程序及程序運行所需要的數(shù)據文檔資料的總和。一般把軟件劃分為系統(tǒng)軟件和應用軟件。其中系統(tǒng)軟件為計算機使用提供最基本的功能,但是并不針對某一特定應用領域。而應用軟件則恰好相反,不同的應用軟件根據用戶和所服務的領域提供不同的功能。2 .簡述名詞的概念:

3、指令寄存器、地址寄存器、標志寄存器。答:(1)指令寄存器:指令寄存器(InstructionRegister,IR)用來保存計算機當前正在執(zhí)行或即將執(zhí)行的指令。當一條指令被執(zhí)行時,首先,CPU從內存取出指令的操作碼,并存入IR中,以便指令譯碼器進行譯碼分析。(2)地址寄存器:地址寄存器(AddressRegister,AR)被動地接受IP傳送給它的地址值(二進制地址),AR的作用是保持IP送來的地址,并且以并行方式連接輸出到CPU的地址引腳上,以便CPU訪問指定的內存單元。(3)標志寄存器:標志寄存器(Flags,F)是CPU中不可缺少的程序狀態(tài)寄存器,因此,也稱程序狀態(tài)字寄存器(PSW),所

4、謂狀態(tài)是指算術或邏輯運算后,結果的狀態(tài)以二進制的?;?在標志寄存器中標識出來,例如,運算結果有進位,則進位標志位CF=1,否則為0。3 .何謂IA-32處理器?答:Intel公司推出了32位結構的80386微處理器后,確定了80386芯片的指令集結構IInstructionSetArchitecture)為以后開發(fā)80X86系列處理器的標準,稱其為Intel32位結構(IntelArchitecture-32,IA-32),后來的80486、Pentium等微處理器統(tǒng)稱為IA-32處理器,或稱32位80X86處理器。4 .什么叫總線?總線包括哪三種?答:所謂總線,它將多個功能部件連接起來,并提

5、供傳送信息的公共通道,能為多個功能部件分時共享,CPU通過總線連接存儲器和I/O接口等,構成了微型計算機。這里指的總線(BUS)包括地址總線、數(shù)據總線和控制總線三種。5 .地址總線的作用是什么?答:地址總線(AddressBus,AB),通常是CPU用來發(fā)出地址信息的,用于對存儲器和I/O接口進行尋址。6 .什么叫溢出?判斷溢出的方法是什么?答:(1)溢出通常指計算機運算的結果超出了計算機所能允許的范圍。本章所講的溢出是指用補碼實現(xiàn)加/減運算后,若參與操作的兩數(shù)在定義域內,但運算結果超出了字長范圍內補碼所能允許表示的值,所計算出的結果產生了錯誤,稱之為溢出。(2)力口/減運算判斷溢出的方法:如

6、果把加/減法運算都變成補碼相加,則兩個正數(shù)相加可能產生正的溢出,兩個負數(shù)相加可能會產生負的溢出,正負兩數(shù)相加不會產生溢出。具體實現(xiàn)的方法是:兩個操作數(shù)運算后,用最高位和次高位產生的進位位異或,異或結果為1,則表示有溢出,結果為0,表示無溢出。例如:兩個8位數(shù)運算后,溢出標志OF=C6C77 .假設四種CPU主存地址分別為16根、20根、24根以及32根,試問每種CPU可尋址內存多少字節(jié)?解:每種CPU可尋址內存分別是:216=64KB、220=1MB、224=16MB、232=4GB。8 .在一般指令格式中,由哪兩部分組成?答:由操作碼和操作數(shù)組成。9 .設字長為16位,將下列十進制數(shù)轉換成二

7、進制數(shù)、十六進制數(shù)以及BCD數(shù)。65129257513解:65=01000000B=41H=(01100101)BCD129=10000001B=81H=(000100101001)BCD257=100000001B=101H=(001001010111)BCD513=1000000001B=201H=(010100010011)BCD10 .設字長為8位,寫出x、y的原碼、反碼和補碼,并且用補碼計算x+y,問是否有溢出?x=-78y=35x=-64y=-66解: x=-78y=35X原=11001110,X反=10110001,X補=10110010Y原=00100011,Y反=001000

8、11,Y補=00100011X補+Y補=10110010+00100011=11010101,無溢出。 x=-64y=-66X原=11000000,X反=10111111,X補=11000000Y原=11000010,Y反=10111101,Y補=10111110X補+Y補=11000000+10111110=01111110,有溢出。ASCn碼,還要寫出它們各自ASCn碼如表1所示。11 .試用8位二進制寫出以下數(shù)、字母以及控制命令的的奇校驗、偶校驗、標記校驗及空格校驗的ascn碼。B8CRNUL解:各自對應的奇校驗、偶校驗、標記校驗及空格校驗的表1數(shù)、字母以及控制命令的ASC口碼數(shù)、字母以

9、及控制命令奇校驗偶校驗標記校驗空格校驗B11000010010000101100001001000010800111000101110001011100000111000CR000011011000011011000110100001101NUL10000000000000000100000000000000012 .設兩個BCD數(shù)X=10001001,Y=01110101,試用列豎式的方法計算X+Y,注意要做加6修正運算。解:100010010111010111111110結果不正確110個位加6修正3/60100000100結果還不正確+110十位加6修正101100100結果正確13 .

10、若規(guī)格化32位浮點數(shù)N的二進制存儲格式為41360000H,求其對應的十進制數(shù)值。解:41360000H=01000001001101100000000000000000BN=(-1)SX(1.M)X2e-127=(-1)0X(1.011011)X2130-127=1.011011X23=1011.011=11.375D14 .微機中的存儲器是如何編址的?答:在微機中,存儲器均按字節(jié)(一字節(jié)由8位二進制信息組成)編址,即每個字節(jié)有一個二進制的地址編碼。給每個存儲單元分配的一個固定地址,稱為單元地址。15 .微型計算機的硬件系統(tǒng)由那些部件組成?答:微型計算機的硬件系統(tǒng)主要由運算器、控制器、存儲器

11、、輸入設備及輸出設備五大部分組成。16 .計算機的主要性能指標有哪些?答:字長、CPU的主頻、主存儲器的容量及外存儲器的容量等。第2章1 .微型計算機可以工作在哪三種工作模式下?答:微處理器可以工作在:實地址模式、保護模式及虛擬8086模式共三種。2 .如何從實模式轉變到保護模式?答:通過對CPU中的控制寄存器CR0中的b0位置1,即保護允許位PEM1,于是系統(tǒng)進入保護模式。這是由操作系統(tǒng)程序來實現(xiàn)的。3 .實模式有哪些特征?答:實地址模式(Real-AddressMode)也稱實模式,簡單地說,是指80286以上的微處理器所采用的8086的工作模式。在實模式下,采用類似8086CPU的體系結

12、構,其尋址機制,尤其是存儲器尋址,以及中斷處理機制均和8086相同。在實模式下,關鍵是CPU尋址空間只有1MB(00000HFFFFFH),也是采用分段管理存儲器的方式,將存儲器分成四種類型的段,每段存儲空間最大為64KB。將1MB的存儲空間保留兩個區(qū)域:一個是中斷向量表區(qū)(00000003FFH),這是1KB的存儲空間,用于存放256個中斷服務程序的入口地址(中斷向量),每個中斷向量占4字節(jié)。4 .16位微處理器有哪些通用寄存器?答:AX、BX、CX、DX、SI、DI、SP和BP。5 .16位微處理器有哪4個段寄存器?每個段寄存器的作用是什么?答:4個段寄存器分別是代碼段寄存器CS、數(shù)據段寄

13、存器DS、附加段寄存器ES及堆棧段寄存器SS。(1)代碼段寄存器CS是一個隨機存取存儲區(qū),用來保存微處理器使用的程序代碼。在8086系統(tǒng)中,代碼段寄存器CS定義了代碼段的起始地址。代碼段的最大存儲空間為64KB。(2)數(shù)據段寄存器DS也是一個隨機存取存儲區(qū),用來保存程序執(zhí)行過程中所使用的數(shù)據及存放程序運行后的Z果。數(shù)據段寄存器DS定義了數(shù)據段的起始地址,其最大存儲空間也是64KB。(3)附加段寄存器ES是為某些串操作指令存放操作數(shù)而附加的一個數(shù)據段。與數(shù)據段類似,附加段寄存器ES定義了附加段的起始地址,其最大存儲空間也為64KB。(4)堆棧段寄存器SS是一個特殊的隨機存取存儲區(qū),用來臨時保存程

14、序執(zhí)行過程中有關寄存器的內容、程序的地址信息及傳遞參數(shù)等。堆棧段寄存器SSf堆棧指針S時同確定堆棧段內的存取地址。其最大存儲空間為64KB。6 .如何理解32位微處理器的通用寄存器與16位的通用寄存器兼容?答:雖然32位微處理器將8086原來的8個16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP均擴展成(Extended)32位的寄存器,即EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。但是,它保留了原來的8個16位寄存器和8個8位的寄存器,仍然可以使用它們編程,當然,所編寫的程序仍然可以在32位機上運行。既可以用32位寄存器編程,還可以用16位及8位寄存器編程,

15、這就實現(xiàn)了寄存器的兼容。7 .什么叫段基地址?什么叫偏移地址?答:編程人員在編程時,只能涉及到邏輯地址,而不能涉及到實際地址。邏輯地址在實模式下,它由段基地址與段內偏移地址組成,習慣上寫為段基地址:偏移地址”,實模式下,段基地址與段內偏移地址都是16位,段基地址是段起始地址的高16位,說明每個段在主5/60存中的起始位置,段內偏移地址也稱褊移量”,是所要訪問存儲單元距離起始地址之間的字節(jié)距離。在32位段的情況下,偏移量是32位。8 .段寄存器與32位偏移地址寄存器的固定搭配如何?答:固定搭配如表2所示。表2段寄存器與32位偏移地址寄存器的固定搭配段寄存器偏移地址寄存器物理地址的用途CSEIP指

16、令地址DSEAX、EBX、ECX、EDX、ESI、EDI、8位、16位或32位二進制數(shù)數(shù)據段內地址SSESP、EBP堆棧段內地址ES只有串操作時默認EDI附加數(shù)據段內地址(目地址)FSr無固定搭配寄存器一般數(shù)據地址GS:無固定搭配寄存器J一般數(shù)據地址9 .8086CPU由哪兩部分組成?它們的主要功能各是什么?答:8086CPU內部結構從功能上看,它由兩大部件組成,分為總線接口部件BIU(BusInterfaceUnit)和執(zhí)行部件EU(ExecutionUnit)。(1)總線接口部件BIU的主要功能:它是8086CPU與外部存儲器和I/O端口的接口,提供了16位雙向數(shù)據總線和20位地址總線,負

17、責CPU與存儲器及I/O端口之間的數(shù)據傳送操作(包括物理地址的形成)。(2)執(zhí)行部件EU主要功能:從BIU中的指令隊列獲取指令,對指令進行譯碼分析并執(zhí)行,執(zhí)行指令所需要的操作數(shù)和運算結果的存儲,是由EU向BIU傳遞偏移地址,BIU只要收到EU送來的偏移地址,于是將送來的偏移地址與相應的段地址組成20位的物理地址,根據現(xiàn)行的20位物理地址,通過執(zhí)行存儲器的讀/寫總線周期來完成讀/寫操作,或者是通過執(zhí)行I/O端口的讀/寫總線周期來完成讀/寫I/O端口的操作。10 .8086CPU中的標志寄存器FLAGS有哪些狀態(tài)標志位?在什么情況下置位?狀態(tài)標志有6位:CF、PF、AF、ZF、SF和OF。CF(C

18、arryFlag),進位標志位。本次運算中最高位有進位或借位時,CF=1。PF(ParityFlag),奇偶校驗標志位。本次運算結果的低8位中1的個數(shù)為偶數(shù)時,PF=1。AF(AuxiliaryCarryFlag),輔助進位標志位。本次運算結果低4位向高4位有進位或借位時,AF=1。ZF(ZeroFlag),零標志位。若運算結果為0時,ZF=1。SF(SignFlag),符號標志位。當運算結果的最高位為1,則SF=1。OF(OverflowFlag),溢出標志位。當運算結果有溢出時,OF=1。11 .什么是邏輯地址?什么是物理地址?如何將邏輯地址轉換為物理地址?答:從8088/8086開始,C

19、PU內部就有了對存儲器的分段機制,每個存儲單元可以看成兩種地址:邏輯地址與物理地址。(1)邏輯地址邏輯地址是編程時所使用的地址,在實模式下,它由段基地址與段內偏移地址組成,習慣上寫為段基地址:偏移地址”。(2)物理地址物理地址又稱為實際地址,它是信息在內存中存放的實際地址,是CPU訪問存儲器時實際發(fā)出的地址信息。(3)在實地址方式下,由CPU中的總線接口單元將段基地址左移4位后與16位的偏移地址相加,生成20位的物理地址??梢栽L問1MB的存儲空間。12 .設X=35H,丫=76H,進行X+Y和X-Y運算后,標志寄存器FLAGS的狀態(tài)標志位各是什么?答:(1) X+Y=35+76后,CF=0、A

20、F=0、SF=0、OF=0、ZF=0、PF=1。(2) X-Y=35-76后,CF=1、AF=1、SF=1、OF=0、ZF=0、PF=1。13 .什么叫存儲器地址交叉?微機的存儲器為什么要用存儲器地址交叉技術?答:(1)在一個物理存儲芯片內部所有存儲單元的地址編號都不是連續(xù)的,而在相鄰存儲芯片之間的物理地址是相連接的,例如,16位的微處理器8086/80286把內存地址分為偶地址的字節(jié)數(shù)據、奇地址的字節(jié)數(shù)據,因此,分為偶字庫和奇字庫,即在一個物理存儲芯片內所有存儲單元的地址編號都是奇地址,另一物理存儲芯片內所有存儲單元的地址編號都是偶地址,這就稱為地址交叉。(2)偶地址存儲體與數(shù)據總線的低8位

21、(D7D0)相連,奇地址存儲體與數(shù)據總線高8位(D15D8)相連,可以由偶地址有效選中偶字庫(例A0=0),由奇地址有效選中奇字庫(例(BHE-=0)o原因是:便于CPU可以只訪問偶地址一個字節(jié),也可以只訪問奇地址一個字節(jié),還可以訪問一個字(2字節(jié))。在CPU的外部數(shù)據總線為32位的情況下,CPU不僅可能只訪問一個字節(jié)、一個字,還可能訪問一個雙字,因此,把內存分成4個存儲體,實現(xiàn)存儲器地址的4體交叉。14 .請將實模式下邏輯地址轉變成物理地址。(1) FFFFH:0000H(2)0045H:0018H(3) 2000H:4600H(4)B821H:3456H7/60解:(1)(2)(3)(4)

22、FFFFH:0045H:2000H:B821H:0000H,0018H,4600H,3456H,物理地址物理地址物理地址物理地址=FFFFHX16+0000H=FFFF0H=0045Hx16+0018H=00468H=2000HX16+4600H=24600H=B821Hx16+3456H=BB666H=0,說明當前CPU要訪問哪15 .在8086系統(tǒng)中,CPU執(zhí)行訪問存儲器指令時,BHE一個存儲體?答:當BHE=0時,CPU要訪問奇地址的存儲體。3.1 按照16位微處理器的尋址方式看,分別指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式。解:(1) movax,0;源操作數(shù):立即尋址,目的操作數(shù)

23、:寄存器尋址(2) movsi,ax;源操作數(shù):寄存器尋址,目的操作數(shù):變址尋址mov2di,bx;源操作數(shù):寄存器尋址,目的操作數(shù):相對變址尋址(4)mov2bx+si,dx尋址;源操作數(shù):寄存器尋址,目的操作數(shù):相對基址(加)變址(5)movax,1000h;源操作數(shù):直接尋址,目的操作數(shù):寄存器尋址(6) movdx,bxsi;源操作數(shù):基址(加)變址尋址,目的操作數(shù):寄存器尋址(7) movax,bx;源操作數(shù):基址尋址,目的操作數(shù):寄存器尋址(8)movdx,bp+8;源操作數(shù):相對基址尋址,目的操作數(shù):寄存器尋址3.2 按照32位微處理器的尋址方式看,分別指出下列指令中源操作數(shù)和目

24、的操作數(shù)的尋址方式。解:(1) moveax,01h;源操作數(shù):立即尋址,目的操作數(shù):寄存器尋址(2) movesi,ax;源操作數(shù):寄存器尋址,目的操作數(shù):基址尋址(3) movesi*2,bx尋址;源操作數(shù):寄存器尋址,目的操作數(shù):比例變址(4) movebx+esi,dx例變址尋址(5) moveax,1000h(6) movdx,ebx+esi*8寄存器尋址(7) movedx,eax(8) movdx,ebp*2+8寄存器尋址(9) movdx,ebx+8器尋址(10) movax,ebx+esi*2+78h作數(shù):寄存器尋址;源操作數(shù):寄存器尋址,目的操作數(shù):基址加比;源操作數(shù):直接

25、尋址,目的操作數(shù):寄存器尋址;源操作數(shù):基址加比例變址尋址,目的操作數(shù):;源操作數(shù):寄存器尋址,目的操作數(shù):寄存器尋址;源操作數(shù):比例變址加位移尋址,目的操作數(shù):;源操作數(shù):基址加位移尋址,目的操作數(shù):寄存;源操作數(shù):基址加比例變址加位移尋址,目的操3.3 指出下列指令的錯誤原因解:(1) incsi(2) moveax,bx(3) mov2,ax(4) movebx,edi(5) movax,bx+bp(6) movax,si+dimovah,300(8) movcs,1000h(9) pushal(10) shlax,8(11) movax,bx+di(12) movip,bx(13) m

26、oves,ds(14) movsp,ax;目的操作數(shù)類型不明確;源操作數(shù)和目的操作數(shù)類型不匹配;立即數(shù)不能作目的操作數(shù);源操作數(shù)和目的操作數(shù)不能同時為存儲器操作數(shù);基址變址尋址方式不能同時為基址寄存器;基址變址尋址方式不能同時為變址寄存器;300超出了ah可以容納的數(shù)據范圍;cs不能由程序員賦值,它由系統(tǒng)自動賦值;push要求操彳乍數(shù)為16位或32位;當移位次數(shù)超過1時,先將移位次數(shù)送cl,再移位;基址變址尋址方式缺少一對方擴號;ip不能由程序員賦值,它由系統(tǒng)自動賦值;源操作數(shù)和目的操作數(shù)不能同時為段寄存器;入棧只能用push指令實現(xiàn)3.4 比較下列兩條指令,指出他們的區(qū)別。解:moveax,

27、si;從內存讀數(shù)據送eaxmovsi,eax;把eax的值寫入至U內存9/603.5假設(EAX)=12345678H,寫出下面每條指令單獨執(zhí)行后,(EAX)=?解:andeax,0000ffffh;(eax)=00005678h(2)testeax,1;(eax)=12345678h(3)xoreax,eax;(eax)=0(4)subeax,eaxaddeax,1(6) oreax,1(7) cmpeax,0000ffffh(8) inceax(9) deceax(10) subeax,8;(eax)=0;(eax)=12345679h;(eax)=12345679h;(eax)=1234

28、5678h;(eax)=12345679h;(eax)=12345677h;(eax)=12345670h3.6假定(AX)=1234H,(BX)=00FFH,回答每條指令單獨執(zhí)行后,(AX尸?(BX尸?解:(1)andax,bx;(ax)=0034h(bx)=00ffh(2)testax,bx;(ax)=1234h(bx)=00ffh(3)xorax,bx;(ax)=12cbh(bx)=00ffh(4)xchgax,bx;(ax)=00ffh(bx)=1234h(5)addax,bx;(ax)=1333h(bx)=00ffh(6)subbx,ax;(ax)=1234h(bx)=0eecbh(

29、7)orbx,ax;(ax)=1234h(bx)=12ffh(8)cmpax,bx;(ax)=1234h(bx)=00ffh3.7假設(EAX)=11223344H,(EBX)=11225566H,寫出下面程序段每條指令執(zhí)行后(EAX)=?(EBX尸?解:addeax,ebx;(eax)=224488aaH,(ebx)=11225566Haddeax,00000088h;(eax)=22448932H,(ebx)=11225566Hsubeax,ebx;(eax)=112233ccH,(ebx)=11225566Hincebxandebx,0000ffffh;(eax)=112233ccH,(

30、ebx)=11225567H;(eax)=112233ccH,(ebx)=00005567H3.8已知(DS=1000H,(BX=0100H,(SI)=0004H,存儲單元10100H10107H依次存放11H22H33H44H55H66H77H88H,10004H10007H依次存放2AH2BH2CH2DH說明下列每條指令單獨執(zhí)行后Am的內容。;(AX=2211H;(AX=2211H;(AX=2B2AH;(AX=4433H;(AX=2B2AH;(AX=2D2CH;(AX=6655H;(AX=8877H解:1.1 MOVAX,0100H1.2 MOVAX,BX(3)MOVAX,0004H(4)

31、MOVAX,0102H(5)MOVAX,SI(6)MOVAX,SI+2(7)MOVAX,BX+SI(8)MOVAX,BX+SI+23.9 已知(DS)=1000H,(EBX=0100H,(ESI)=0004H,存儲單元10100H10107H依次存放11H22H33H44H88H77H66H55H,10004H10007H依次存放8AH8BH8CH8DH說明下列每條指令執(zhí)行后EAX中的內容。解:(1)MOVEAX,0100H;(EAX=44332211H(2)MOVEAX,EBX;(EAX=44332211H(3)MOVEAX,EBX+4;(EAX=55667788H4)MOVEAX,0004

32、H;(EAX=8D8C8B8AH5)MOVEAX,ESI;(EAX=8D8C8B8AH6)MOVEAX,EBX+ESI;(EAX=55667788H3.10 什么是堆棧?它的工作原理是什么?它的基本操作有哪兩個?答:堆棧是在內存RA忡開辟的一段空間,利用“先進后出”或“后進先出”的原則存取數(shù)據。如果把數(shù)據壓入堆棧,則堆棧指針的值是減少的,即所謂的向下生成堆棧。由SS:SP(16位)或SS:ESP(32位)指向棧底(???或棧頂(棧不空)地址。它的基本操作有數(shù)據入棧指令PUSH數(shù)據出棧指令POP3.11 設SS=1000HSP=0100Hl指出下列每條指令執(zhí)行后,(AX)=?(BX)=?(SP尸

33、?并且回答堆棧中的內容如何?解:MOVAX,2233H;(AX)=2233H,(BX)不確定,(SP)=0100H11/60PUSHAX;(AX)=2233H,(BX)不確定,(SP)=00FEHMOVBX,4455H;(AX)=2233H,(BX)=4455H,(SP)=00FEHPUSHBX;(AX)=2233H,(BX)=4455H,(SP)=00FCHPOPAX;(AX)=4455H,(BX)=4455H,(SP)=00FEHPOPBX;(AX)=4455H,(BX)=2233H,(SP)=0100H這段指令執(zhí)行后將A期DB刈勺值互換。3.12 什么是16位段?它有何特點?答:32位微

34、機在上電或復位后,微處理器首先工作在實地址模式,它與8086/80186的工作方式具有相同的基本結構,也只能尋址1M韻理存儲空間,分段最大只能是64KB,但是,在實地址模式下,32位X86CPU1以使用16位寄存器和16位尋址方式,這與8086CPUB容,32位X86CPO可以使用32位寄存器和32位尋址方式,處理32位數(shù)據及執(zhí)行32位的新增指令,但是,段基地址和偏移量都只用16位,6個段寄存器仍然當作16位的段寄存器使用,對于偏移地址來說,如果是32位,則高16位應該為0,只有低16位偏移地址有效,相當于可以進行32位數(shù)處理的快速8086,所以稱之為“16位段”。3.13 什么是32位段?它

35、與16位段的主要區(qū)別如何?答:32位X86CP由實地址模式可以進入保護工作模式,它是一個增強了80286保護模式功能的32位保護工作模式。在保護工作模式下,32位微處理器不僅具有段式存儲器管理功能,而且還有頁式存儲器管理功能,支持虛擬存儲器,段基地址和段內偏移量都是32位,稱之為“32位段”,使用全部32條地址線,可以尋址的物理存儲器達到4GB只有在保護模式下,32位X86CPU能發(fā)揮全部功能。而32位段的程序只能在32位Windows境中執(zhí)行。3.14 16位存儲器尋址中,分為哪幾種尋址方式?答:(1)直接尋址(2)基址尋址(包括相對基址尋址)(3)變址尋址(包括相對變址尋址)(4)基址(加

36、)變址尋址(5)相對基址(加)變址尋址3.1532位存儲器尋址中,分為哪幾種尋址方式?答:(1)直接尋址(2)基址尋址(3)基址加位移尋址(4)比例變址尋址(5)比例變址加位移尋址(6)基址加比例變址尋址(7)基址加比例變址加位移尋址3.16對于立即尋址白指令,有8位、16位及32位的立即尋址的指令,各列舉2條指令(一條是傳送指令,另一條是加法指令)。解:8位立即尋址指令(1) MOVAH,2(2) ADDAL,316位立即尋址指令(1) MOVAX,1234H(2) ADDDX,3456H32位立即尋址指令MOVEAX,12345678H(3) ADDEDX,12345678H(4) 7用移

37、位指令將ESI中內容移入EDI中,如何實現(xiàn)?解:.modelsmall.386.code.startupmovesi,11223344hmovedi,12345678hshrdedi,esi,16rolesi,16shrdedi,esi,1613/60.exitEnd(5) 8將EBm存放的值清零,實現(xiàn)的方法有哪一些?解:(1) SUBEBX,EBX(2) ANDEBX,0(3) XOREBX,EBX第4章1.該數(shù)據段在內存中的分配圖如下。變量內容EA01234Buf一152637num34h812h9point105h1000h11point208h1200h13data1415str一31

38、h1632h1733h180ffh1902h200ffh2102h222 .將下列程序段所定義字符串中的小寫字母均改為大寫字母,并放回原處,原大字母不變,最后,用DOS的9號功能顯示這串大寫字符,請完善下列程序。.modelsmall.dataxdb'HelloEVEryBODY!','$'.code.startup解:程序如下:.modelsmall.386.dataxdb'HelloEVEryBODY!','$'.code.startupleabx,x.repeatmoval,bx.ifal>='a'&a

39、mp;&al<='z'subal,20hmovbx,al.endifincbx.untilal='$'leadx,xmovah,915/60int21h.exitend3 .設變量名VAL1、VAL2及SUM的數(shù)據類型屬性都是雙字屬性,別存放了一個32位的加數(shù)和被加數(shù),SUM用于存放和數(shù)。(1)選用簡化段格式編程,實現(xiàn)兩個32位數(shù)相加,結果存放到單元。(2)選用完整段格式編程,實現(xiàn)上述相同的功能。提示:只能使用解:程序一,簡化段格式編程,實現(xiàn)兩個32位數(shù)相加,結果存放到單元。.modelsmall.386.dataval1dd12345678hva

40、l2dd87654329hsumdd?.code.startupmoveax,val1addeax,val2movsum,eax.exitend程序二,完整段格式編程,實現(xiàn)兩個32位數(shù)相加,結果存放到單元。datasegmentval1dd12345678hval2dd87654329hsumdd?dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovax,wordptrval1VAL1和VAL2中分SUM變量所指的存儲16數(shù)相加。SUM變量所指的存儲SUM變量所指的存儲addax,wordptrval2movwo

41、rdptrsum,axmovax,wordptrval1+2addax,wordptrval2+2movwordptrsum+2,axmovah,4chint21hcodeendsendstart4 .將數(shù)據段內的一串字符傳送到附加的數(shù)據段內,并將傳送到附加數(shù)據段內的字符顯示出來,要求用完整段和簡化段兩種格式分別編程實現(xiàn)。解:程序一,簡化段格式編程,實現(xiàn)將數(shù)據段內的一串字符傳送到附加的數(shù)據段內,并將傳送到附加數(shù)據段內的字符顯示出來。.modelsmall.386.dataxdb'HelloWorld!','$'nequ$-xydb100dup(?).code.s

42、tartupmovax,dsmoves,axmovcx,nleasi,xleadi,yrepmovsbmovah,9leadx,yint21h.exitend注意:在簡化段模式編程時,數(shù)據段和附加數(shù)據段是同一段,在使用字符串指令時,用指令movax,ds、moves,ax將DS和ES保持一致。程序二,完整段格式編程,實現(xiàn)將數(shù)據段內的一串字符傳送到附加的數(shù)據段內,并將傳送到附加數(shù)據段內的字符顯示出來。datasegment17/60xdb'HelloWorld!','$'nequ$-xdataendsedatasegmentydb100dupedataendsco

43、desegmentassumecs:code,ds:data,es:edatastart:movax,datamovds,axmovax,edatamoves,axleasi,xleadi,ymovcx,nrepmovsbmovah,9leadx,yint21hmovah,4chint21hcodeendsendstart5 .設有一個數(shù)組存放了40名學生的成績(0100分),設數(shù)組位于變量名為SCORS的存儲單元,編程統(tǒng)計059分、6069分、7079分、8089分及90100分的人數(shù),并分另I存放至USCOREE、SCORED、SCOREC、SCOREB、SCOREA存儲單元中。解:程序一

44、,簡化段格式編程.modelsmall.386.datascoredb90,23,56,67,98,78,10,45,87,100db65,78,89,100,45,30,99,69,59,60db0,59,60,69,70,79,80,89,90,99db100,61,68,71,78,81,88,91,98,0n=$-scorescoreedb0scoreddb0scorecdb0scorebdb0scoreadb0.code.startupleasi,scoremovcx,nmovdl,10.whilecx!=0movah,0moval,sidivdlsubal,5.ifsbyteptr

45、al<=0incbyteptrscoree.elsemovah,0.ifal=5moval,4.endifmovbx,axincbyteptrscoreebx.endifincsideccx.endw.exitend程序二,完整段格式編程datasegmentscoredb90,23,56,67,98,78,10,45,87,100db65,78,89,100,45,30,99,69,59,60db0,59,60,69,70,79,80,89,90,99db100,61,68,71,78,81,88,91,98,019/60n=$-scorescoreedb0scoreddb0score

46、cdb0scorebdb0scoreadb0dataendscodesegment'code'assumecs:code,ds:datastart:movax,datamovds,axleasi,scoremovcx,nmovdl,10class:movah,0moval,sidivdlsubal,5jggreatincbyteptrscoreejmpnextgreat:movah,0cmpal,5jnzstoremoval,4store:movbx,axincbyteptrscoreebxnext:incsiloopclassmovah,4chint21hcodeendsen

47、dstart6 .已知兩個字的定義如下,比較這兩個字的大小,將較大的數(shù)存放到Z單元,如果兩數(shù)相等,則把其中任意一數(shù)存入Z單元。要求用簡化段格式編程:(1)按照無符號數(shù)比較與編程。(2)按照有符號數(shù)比較與編程。XDW1234HYDW9678HZDW?解:(1)按照無符號數(shù)比較與編程。.modelsmall.386.dataxdw1234hydw9678hzdw?.code.startupmovax,xmovbx,y.ifax>bxmovz,ax.elsemovz,bx.endif.exitend(2)按照有符號數(shù)比較與編程。.modelsmall.386.dataxdw1234hydw96

48、78hzdw?.code.startupmovax,xmovbx,y.ifswordptrax>swordptrbxmovz,ax.elsemovz,bx.endif.exit21/60end7 .已知兩個字的定義如第6題,編程求X-Y,結果存入Z單元。要求用簡化段格式編程,并回答存入Z單元的數(shù)是多少?解:.modelsmall.386.dataxdw1234hydw9678hzdw?.code.startupmovax,xsubax,ymovz,ax.exitend存入Z單元的數(shù)是7bbch。把指令subax,y改為subswordptrax,y結果不變。8 .用完整段格式編程,鍵盤每

49、輸入一個字符,用二進制形式(0/1)顯示出該字符的ASCII碼值。解:datasegmentasciidb7dup(?),'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axrp:movah,1int21hcmpal,27;可重復輸入,Esc鍵結束jzfinimovbl,2leasi,ascii+6lopl:movah,0divbladdah,30hmovsi,ahdecsicmpal,0jnzloplleadx,asciimovah,9int21hmovah,2movdl,0dhint21hmo

50、vdl,0ahint21hmovcl,7leasi,asciiini:movbyteptrsi,''incsideccljnzinijmprpfini:movah,4chint21hcodeendsendstart9 .設10名評委在010的整數(shù)范圍內給選手打分,10個分值已經存入X存儲單元,計算選手的最終得分,計分方法是:10個得分中,去掉一個最高分(如有兩個以上的相同最高分也只去掉一個),去掉一個最低分(如有兩個以上的相同最低分也只去掉一個),剩下8個得分。(1)用簡化段編程求剩下8個得分之和。(2)用簡化段編程求平均值,精確到小數(shù)點后面1位。提示:用AX/BL(8),商在

51、AL中,余數(shù)在AH中。將余數(shù)乘以10傳送給AL,再除以8,所得商是小數(shù)點后的一位值。解:.modelsmall.386.stack.dataxdb7,8,9,8,10,10,9,8,7,10n=$-x.data?23/60sumdb?averagedb0,'.',0,'$maxdb?mindb?.code.startupmovdl,xmovmax,dlmovmin,dlmovcx,n-1movbx,1.whilecxmoval,xbxadddl,al.ifal>maxmovmax,al.endif.ifal<minmovmin,al.endifincbxde

52、ccx.endwmovsum,dl;保存總分,對本題數(shù)據來說,總分86subdl,maxsubdl,minmovah,0moval,dl10;去掉一個最低分7;剩下的總分為69,除以8為選手最后得分8.6movbl,8divbladdal,30hmovaverage,al;整數(shù)8moval,ahmovah,0movbl,10mulblmovbl,8divbladdal,30hmovaverage+2,al;小數(shù)6leadx,average;將8.6輸出movah,9int21h.exitend10 .將下列循環(huán)結構的程序段全部改用微處理器指令實現(xiàn)。.modelsmall.386.databuf

53、dw20(0).code.startupleabx,bufmovcx,0.whilecx!=20movbx,cxincbxincbxinccx.endw.exitend解:.modelsmall.386.databufdw20(0).code.startupleabx,bufmovcx,0rp:cmpcx,20jgfinimovbx,cxincbxincbx25/60inccxjmprpfini:.exitend11 .將下列循環(huán)結構的程序段全部改用微處理器指令實現(xiàn)。.modelsmall.386.databufdw20(0).code.startupleasi,bufmovax,0.repeatmovsi,axincsiincsiincax.untilax=20.exitend解:.modelsmall.386.databufdw20(0).code.startupleas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論