




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學習-好資料第4章程序結構4.1 簡答題(1) CPUID指令返回識別字符串的首字符“ G”在哪個寄存器中?EBX的高8位(2)數據的直接尋址和指令的直接尋址有什么區(qū)別?數據的直接尋址給出數據所在的存儲器地址,指令的直接尋址給出指令所在的存儲器地址。(3)是什么特點決定了目標地址的相對尋址方式應用最多?指令代碼中提供目標地址相對于當前指令指針寄存器EIP的位移量,使得同一個程序被操作系統安排在不同的存儲區(qū)時,指令間的位移并沒有變化的特點。(4) Jcc指令能跳轉到代碼段之外嗎?不能,Jcc指令采用段內相對尋址方式(5)什么是奇偶校驗?數據通信時,數據的某一位用做傳輸數據的奇偶校驗位,數據中包括
2、校驗位在內的“1的個數恒為奇數,就是奇校驗;恒為偶數,就是偶校驗(6)助記符JZ和JE為什么表達同一條指令?兩個數相減,差值為 0 (JZ)與兩個數相等(JE)是一個含義(7)為什么判斷無符號數大小和有符號大小的條件轉移指令不同?判斷兩個無符號數的大小和判斷兩個有符號數大小關系要利用不同的標志組合。判斷有符號數的大小需要組合SF和OF標志,并利用ZF標志確定相等與否。判斷無符號數的高低利用 CF標志,利用ZF標志確定相等。(8)雙分支結構中兩個分支體之間的JMP指令有什么作用?用于跳過分支體2,避免進入分支體 2而出現錯誤。(9)如果循環(huán)體的代碼量遠超過128個字節(jié),還能用LOOP指令實現計數
3、控制循環(huán)嗎?不能,因為LOOP指令的目標地址采用相對短轉移,只能在128+ 127字節(jié)之間循環(huán)(10)什么是“先循環(huán)、后判斷”循環(huán)結構?指先執(zhí)行循環(huán)體,然后判斷是否繼續(xù)循環(huán)的結構,這種結構通常至少執(zhí)行一次循環(huán)體4.2 判斷題(1) 指令指針或者號包括代碼段寄存器值的改變將引起程序流程的改變。對(2) 指令的相對尋址都是近轉移。對(3) 采用指令的寄存器間接尋址,目標地址來自存儲單元。錯,(4) JMP指令對應高級語言的 GOTO語句,所以不能使用錯,需要使用(5) 因為條件轉移指令 Jcc要利用標志作為條件,所以也影響標志。錯(6) JA和JG指令的條件都是“大于”,所以是同一個指令的兩個助記
4、符。錯,JA針對無符號數,JG針對有符號數(7) JC和JB的條件都是CF= 1 ,所以是同一條指令。對。無符號小于(JB)必然借位(JC)(8)控制循環(huán)是否結束只能在一次循環(huán)結束之后進行錯(9)介紹loop指令時,常說它相當于dec ecx和jnz兩條指令。但是考慮對狀態(tài)標志的 影響,它們有差別。Loop指令不影響標志,而 dec指令卻影響除cf之外的其他狀態(tài)標志。 對(10)若ECX = 0,則LOOP指令和JECX指令都發(fā)生轉移。對4.3 填空題(1) JMP指令根據目標地址的轉移范圍和尋址方式,可以分成4種類型:段內轉移、(),段內轉移、()以及段間轉移、(),段間轉移、()。相對尋址
5、,間接尋址,直接尋址,間接尋址(2) MASM給短轉移、近轉移和遠轉移定義的類型名依次是和。SHORT, NEAR , FAR(3)假設在平展存儲模型下, EBX= 1256H,雙字變量TABLE的偏移地址是20A1H , 線性地址32F7H處存放3280H,執(zhí)行指令“ JMP EBX ”后EIP =,執(zhí)行指令“ JMP TABLEEBX " 后 EIP=。1256H, 3280H(4) “CMP EAX,3721H ”指令之后是JZ指令,發(fā)生轉移的條件是 EAX =, 此時ZF =。3721H, 1(5)執(zhí)行“ SHR EBX,4 "指令后,JNC發(fā)生轉移,說明 EBX的
6、D3=。0(6)在EDX等于0時轉移,可以使用指令“ CMP EDX,"、也可以使用“ TEST EDX,”構成條件,然后使用JE指令實現轉移。0, EDX(7)循環(huán)結構程序一般由三個部分組成,它們是()、循環(huán)體和()部分。循環(huán)初始,循環(huán)控制(8) JECXZ指令發(fā)生轉移的條件是(),loop指令不發(fā)生轉移的條件是()。Ecx=0, ecx 不等于 0(9) loop指令進行減1計數,實際應用中也常進行加1計數。針對例4-14程序,如果刪除其中的loop指令,則可以使用指令" cmp () ,ecx”和“ jb () ”替代。Ebx, jb again(10)小寫字母“ e
7、”是英文當中出現頻率最高的字母。如果某個英文文檔利用例4-16的異或方法進行簡單加密,統計發(fā)現密文中字節(jié)數據“ 8FH”最多,則高程序采用的字節(jié)密碼可能是()0EAh習題4.4已知van、var2、var3和var4是32位無符號整數,用匯編語言程序片段實現如下C+語句:var4=(var1*6)/( var2-7)+var3解答:mov eax,var1mov ebx,6mul ebx ;var1*6mov ebx,var2 sub ebx,7 ;var2-7 div ebx ;(var1*6)/( var2-7) add eax,var3 ;(var1*6)/( var2-7)+var3
8、mov var4,eax 習題4.5已知van、var2、var3和var4是32位有符號整數,用匯編語言程序片段實現如下C+語句:Var1=(var2*var3)/( var4+8)-47 解答: Moveax,var2Imulvar3Movebx,var4Addebx,8IdivebxSubeax,47Movvar1,eax習題4.6參看例4-1,假設N小于90000,這時求和結果只需要 eax保存,edx為0。修改例4-1 使其可以從鍵盤輸入一個數值 N(用readuid子程序),最后顯示累加和(用 dispuid子程序)。 解答:.dataMsg byte Input a number
9、(090000): ',0.codeStart:Mov eax,offset msgCall readuidCall dispcrlfMov ebx,eaxAdd ebx,1Imul ebxShredx,1Rcreax,1Call dispuid習題4.7定義COUNT (假設為10)個元素的32位數組,輸入元素編號(0COUNT-1 ),利用 DISPHD子程序輸出其地址、利用 DISPSID子程序輸出其值。解答:;數據段count = 10array dword 0,1,2,3,4,5,6,7,8,9 ;代碼段call readuid;輸入 N ,小于 10lea eax,arra
10、yeax*4;EAX =地址call disphd;顯示地址mov eax,arrayeax*4;EAX =變量值call dispsid;顯示數值習題4.10判斷下列程序段跳轉的條件(1) xor ax,1e1eh Je equal(2) test al,10000001b Jnz here(3) 3) cmp cx,64h Jb there 答:(1) zf= 1 (2) zf= 0 cf =1 習題4.11假設EBX和ESI存放的是有符號數,EDX和EDI存放的是無符號數, 條件轉移指令實現以下判斷:(1)若 EDX > EDI ,轉至ij above 執(zhí)行(2)若 EBX >
11、; ESI ,轉到 greater 執(zhí)行(3)若EBX = 0 ,轉到zero執(zhí)行(4)若EBX - ESI產生溢出 ,轉到overflow執(zhí)行(5)若 ESI <= EBX ,轉至ij less_eq 執(zhí)行(6)若 EDI<= EDX ,轉到 below_eq 執(zhí)行答: cmp ebx,edi Ja above(2) cmp ebx,esiJg greater(3) cmp ebx ,0 Je zero(4) cmp ebx,esi Jo overflow (5) cmp esi,ebx Jle less_eq(6) cmp edi,edxJbe below_eq習題4.12使用
12、“ shr eax,2”將eax中的D1位移入CF標志,然后用JC /JNC指令替換 成例4-6程序的功能。答:mov eax,56h請用比較指令和JZ /JNZ指令完Shr eax,2 jnc nommov eax,offset yes_msg jmp done nom:mov eax,offset no_msgdone:call dispmsg或mov eax,58hShr eax,2 jc yesm mov eax,offset no_msg jmp done yesm:mov eax,offset yes_msgdone:call dispmsg習題4.13將例4-7程序修改為實現偶校
13、驗,并進一步增加顯示有關提示信息的功能,使得程序具有更加 良好的交互性.答:.dataMsg1bytePlease input a char:",0Msg2byteAscii is : ',0Msg3byteParty is : ',0.codestart:mov eax,offset msg1call dispmsgcall readccall dispcrlflea eax,msg2call dispmsgcall dispbbcall dispcrlfand al,7fhjp nextor al,80hnext:pusheaxlea eax,msg3call d
14、ispmsg3pop eaxcall dispbbexit 0end start習題4.14在采用奇偶校驗傳輸數據的接收端應該驗證數據傳輸的正確性.例如,如果采用偶校驗那么在接受到的數據中,其包含“1”的個數應該為0或偶數個,否則說明出現傳輸錯誤?,F在,在接收端編寫一個的程序,如果偶校驗不正確顯示錯誤信息,傳輸正確則繼續(xù)。假設傳送字節(jié)數據、最高位作為校驗位,接收到的數據已經保存在Rdata變量中。答:.dataRdata byte a"Errmsg byte Data Error! ',0 .codeStart:Test rdata,0Jnp err Err:Lea eax,
15、errmsg Call dispmsg習題4.15IA-32處理器的指令 CDQ將EAX符號擴展到EDX。假若沒有該指令,編程實現該指 令功能。(1)按照符號擴展的含義編程,即: EAX最高為0,則EDX =0; EAX最高為1,則 EDX = FFFFFFFFH。編程實現指令CDQ,將EAX符號擴展到EDX(2)使用移位等指令進行優(yōu)化編程。答:test eax,8000h ;測試最高位jz next1 ;最高位為0,轉移 mov edxQffffffffh最高位為1,設置 EDX = FFFFFFFFHjmp done ;跳過另一個分支next1: mov dx,0 ;設置 EDX = 0
16、done:方法1:mov edx,eaxsar edx,31 方法2:rol eax,1rcr edx,1 sar edx,31 ror eax,1習題4.16編寫一個成旭,首先測試雙字變量 DVAR的最高位,如果為1,則顯示字母“ L” ;如果 最高位不為1,則繼續(xù)測試最低位,如果最低位為1則顯示字母“R”,如果最低位也不為1, 則顯示字母“ M ”。答: .data Dvardword 80000000h .code Testdvar,80000000hJnzdispLTestdvar,1JzdispMMov al,'R'Jmp dispdispL:mov al, '
17、;L' jmp dispdispM:mov al,'M 'disp: call dispc習題4.17編寫一個程序,先提示輸入數字“Input Number: 09”,然后在下一行顯示輸入的數 字,結束;如果不是鍵入了09數字,就提示錯誤" Error!”,繼續(xù)等待輸入數字。方法1:使用字符輸入輸出子程序 激據段inmsgbyte 'Input number(09): ',0ermsgbyte 0dh,0ah,'Error! Input again: ',0;代碼段mov eax,0fset inmsg;提示輸入數字call d
18、ispmsg方法1:使用字符輸入輸出子程序again:call readc ;等待按鍵cmp al,'0'數字 < 0? jb erdispcmp al,'9' ;數字 > 9? ja erdisp call dispcrlf call dispc jmp done erdisp: mov eax,offset ermsg call dispmsg jmp againdone:方法2:使用數字輸入輸出子程序again: call readuid ;call readsid cmp eax,0 ;數字 < 0 ?jb erdisp ;jl erd
19、isp cmp eax,9;數字 > 9 ?ja erdisp ;jg erdisp call dispuid ;call dispsid jmp done erdisp: mov eax,offset ermsgcall dispmsg jmp again 習題4.18有一個首地址為 Array的20個雙字的數據,說明下列程序段的功能。Mov ecx,20Mov eax,0Mov esi,eaxSum1p:Add eax,arrayesiAdd esi,4Loop sum1pMov total,eax答:累加Array數組,并將Z果存入 total變量習題4.19說明如下程序段的功能:
20、Mov ecx,16Mov bx,axNext:Shr ax,1Rcr edx,1Shr bx,1 Rcr edx,1 Loop next Mov eax,edx 答: 習題4.20編程將一個64位數據邏輯左移3位,假設這個數據已經保存在EDX.EAX寄存器對中。答:Mov ecx,3Next:shr edx,1Rcr eax,1 Loop next 習題4.21編程中經常要記錄某個字符出現的次數?,F編程記錄某個字符串中空格出現的次數,結果保存在 space單元。 答:space dword 0string byte 'this is a test string !' .cod
21、estart:;主程序mov eax,0mov ebx,eaxmov ecx,lengthof string nextchar:cmp stringebx,20hjnz nospaceinc eaxnospace:inc ebxloop nextcharmov space,eax call dispuid exit 0;子程序end start習題4.22將一個已經按升序排列的數組(地1個元素最小,后面的逐個增大)改為按照降序排列。 編程實現該功能。答:.data;數據定義ArrayUp dword -1,0,2,3,20,23,36,100,2048 .codestart:;主程序movec
22、x,lengthof ArrayUpaddecx,1rcrecx,1xoresi,esimovedi,(lengthof ArrayUp) -1exchange:moveax,ArrayUpesi* Type ArrayUpxchg eax,ArrayUpedi* Type ArrayUpxchg eax,ArrayUpesi* type ArrayUp inc esi dec edi loop exchangeexit 0;子程序end start習題4.23編寫計算100個16位正整數之和的程序。如果和不超過16位字的范圍,wordsum , 如果超過貝U顯示 " overflo
23、w !".答:.datacount = 100num word count dup(90) wordsum word 0 errmsg byte 'Overflow!'數據定義 .codestart:;主程序 xor eax,eax mov ebx,eax mov ecx,count sum:add ax,numebxjc over inc ebx inc ebx loop sum mov wordsum,ax call dispuiw jmp quitover:mov eax,01fset errmsgcall dispmsg quit:exit 0;子程序 end start 習題4.27在屏幕上顯示 ASCII表,現僅在數據段設置表格緩沖區(qū),編程將 ASCII 出位置的表格,然后調用顯示功能實現(需要利用雙重循環(huán))。答
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司演講感悟活動方案
- 公司新年大掃除活動方案
- 公司朗讀活動方案
- 2025年藥劑師執(zhí)業(yè)資格考試試卷及答案
- 2025年新媒體與網絡傳播課程核心知識考試試題及答案
- 2025年現代經濟學與區(qū)域發(fā)展考試試卷及答案
- 2025年數字圖書館建設與管理專業(yè)模擬考試卷及答案
- 2025年人際關系與溝通能力考試試題及答案
- 2025年數字版權管理師考試試卷及答案
- 2025年去中心化金融領域職業(yè)資格測試題及答案
- aopa無人機培訓管理制度
- 2025屆中考化學預熱模擬卷 【吉林專用】
- 小學生籃球課課件下載
- 2025年中國AI智能鼠標行業(yè)市場全景分析及前景機遇研判報告
- 2025年湖北省新華書店(集團)有限公司市(縣)分公司招聘筆試參考題庫含答案解析
- 2025至2030中國軍用推進劑和炸藥行業(yè)產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- EPC總承包管理實施方案
- 廣東省廣州市越秀區(qū)2023-2024學年五年級下學期數學期末考試試卷(含答案)
- 三副實習記錄簿附頁
- 工程認證背景下軟件工程專業(yè)實踐課程平臺研究與建設
- 2025年AI Agent+醫(yī)療行業(yè)研究報告
評論
0/150
提交評論