【匯編語言程序設計】期末考試-試卷及參考答案_第1頁
【匯編語言程序設計】期末考試-試卷及參考答案_第2頁
【匯編語言程序設計】期末考試-試卷及參考答案_第3頁
【匯編語言程序設計】期末考試-試卷及參考答案_第4頁
【匯編語言程序設計】期末考試-試卷及參考答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程編號: h61030005 課程名稱: 匯編語言程序設計 考試形式: 閉卷 學院: 信息工程 專業(yè): 計算機科學與技術 考試日期: 題號一二三四五六七八九十總分累分人 簽名題分2012182030 100得分考生注意事項:1、本試卷共7 頁,請查看試卷中是否有缺頁或破損。如有立即舉手報告以便更換。 2、考試結束后,考生不得將試卷、答題紙和草稿紙帶出考場。一、單項選擇題(每小題 2 分,共 20分) 1一個有128個字的數據區(qū),它的起始地址為12abh:00abh,請給出這個數據區(qū)第一個字單元的物理地址是( a )。a12b5bh ; b12b6bh ;c12c59h; d12bfeh。2

2、在下列指令的中,不能實現(xiàn)把ax寄存器內容清零的指令是( c )。a sub ax,ax;bxor ax,ax;cor ax,0000h;dand ax,0000h。3條件轉移指令jne的測試條件為( a )。azf=0 ; bcf0 ;czf=1 ; dcf=1 。48086cpu在基址加變址的尋址方式中,變址寄存器可以為(d )。abx或cx ; bcx或si ;cdx或si ; dsi或di。5設(ax)=1000h,neg ax not ax【匯編語言程序設計】期末考試-試卷及參考答案執(zhí)行上述兩條指令后,正確的結果是( b )。a(ax)=1001h; b(ax)=0fffh;c(ax)

3、=1000h; d(ax)=0111h。6串指令中的目的操作數地址一定是由_a_ _提供。( )aes:di ; bss:bp;cds:si ; dcs:ip。7將dx的內容除以2,正確的指令是( c )。adiv  2 ;bdiv   dx,2 ;csar  dx,1;dshl  dx,1。8. 用戶為了解決自己的問題,用匯編語言所編寫的程序,稱為( b )。 a目標程序; b匯編語言源程序; c可執(zhí)行程序; d匯編程序。9用一條指令僅實現(xiàn)將axbx+si的方法是( d )。a xchg ax,bxsi ;b mov ax,bx+si;clea ax,

4、bxsi ;dlea ax,bxsi。10設sp初值為2000h,執(zhí)行指令“push ax”后,sp的值是( c )。 a1fffh; b1998h;c1ffeh; d2002h。1.a 2. c 3.a 4.d 5.b 6.a 7.c 8.b 9.d 10.c二、指出下列指令的出錯原因,并改正。(每小題2分,共12分)1 mov bx,dl;操作數類型不匹配,改正為:mov bl,dl 或mov bx,dx 2 mov cs,ax;代碼段寄存器cs不能作目的操作數,改正為mov ds,ax3 add ax,ds;段寄存器ds的內容不能作為加法指令的操作數,改正為mov bx,dsadd ax

5、,bx 4 test bx,cx;不能使用cx實現(xiàn)寄存器間接尋址,改正為mov si,cxtest bx,si 5 sub bx,bp+si;兩個操作數不能同為存儲器操作數,且兩個操作數的數據類型 不確定,改正為:mov ax,bxsub ax,bp+si或:mov al,bxsub al,bp+si 6shl dx ;沒有給出移位次數,改正為shl dx,1或 shl dx,cl三、程序填空題(注意:每空只能填一條指令,并注釋說明所填指令的作用!每空3分,共18分)1 在表table處存放著n個無符號字節(jié)數,求表中前10個字節(jié)數的總和并保存在ax寄存器中。如果總和值超過ax寄存器的容量,則置

6、ax寄存器內容不變。請在程序中的空格處填入適當指令使其完整。lea  bx,table mov  cx,10 mov  sum,ax ;將ax的原值保存在sum單元中 mov al,00hmext:(1)add al,bx ; 實現(xiàn)將表table中的數據按字節(jié)累加到al中 adc  ah,0 jnc  done(2)mov ax,sum ; 總和值超過ax寄存器的容量,恢復ax的原值 jc  exitdone:inc bx (3)loop next ; 將計數器cx減1,并判斷是否繼續(xù)

7、下一次循環(huán) exit:hlt2 buffer為起始地址的存儲區(qū)域中存放有100個字節(jié)數據,現(xiàn)將其首、尾顛倒過來,重新排放這100個字節(jié)數據。請在程序中的空格處填入適當的指令使其完整。mov  cx,32h ;循環(huán)50次lea  si,buffermov  di,si(1) add di,99 ;di指向最后一個字節(jié)數據的存儲單元的偏移地址 next:mov  al,si (2) xchg al,di;交換si和di所指向單元的內容 mov  si,al(3) inc si ;使指針si加1,指向下一個字節(jié)的數據 dec  diloop

8、 nexthlt四、程序分析題(每小題4分,共20分)1 設(ax)= x,x是無符號數且0x< 6000,分析下面程序段,回答問題; shl ax,1 ;實現(xiàn)x乘2 mov bx,ax shl ax,1 shl ax,1 add ax,bx(1) 該程序段的功能是什么? 實現(xiàn)無符號數x乘10,結果存放在ax寄存器中。 2分(2) 該程序段執(zhí)行完后,(ax)= 10x ,(bx)= 2x 。2分2 現(xiàn)有一子程序段:sub1  proctest al,80hje plustest bl,80hjne exitojmp x

9、changeplus: test bl,80h je exitoxchange:xchg al,blexito: retsub1  endp試回答:(1)子程序的功能是什么?答:子程序的功能是判別al和bl中的數是否為異號數,當為異號時交換,否則不變。 (2)若調用子程序前(al)=9ah,(bl)=77h,則返回主程序時,(al)=_77h_,(bl)=_9ah_。 請回答:(1) 該程序段占有的存儲單元字節(jié)數是多少?畫出所分配的存儲區(qū)的示意圖. 答:8個字節(jié), 0020h 12h da100h23h000024h 11h da2 21h0025h 3

10、1h da3 32h(2) 符號名da4的值是多少?符號名da5的值是多少? 答:da4=2,da5=1234h3 現(xiàn)有如下程序段:data  segment org  0020h da1  dw 12h,23h da2  db 11h,21h da3  db 31h,32h da4  equ  $-da3da5  equ  1234h data ends4 閱讀如下程序:adrr  db  xxh,xxh

11、,xxh;定義的字節(jié)數組元素num  equ $-adrrret_vlaue dw ? mov cx,nummov bx,-1next: inc bxcmp adrrbx,0loopnz next jz done mov bx,offhdone: mov ret_vlaue,bxhlt請問:(1)該程序完成的功能是什么?功能:在以adrr為起始地址的數組中,查找第一個是0的數據。(2)程序執(zhí)行后指出ret_vlaue單元中的內容是什么? 若找到,則將第一個是0的數據在數組中的

12、偏移量送入ret_vlaue單元中;若無0數據,則將0ffh送入ret_vlaue單元中。5 閱讀如下程序段,回答所提出的問題,假定x1,x2,xn為無符號數。 org 100h block  dw x1,x2,xn count  equ ($-block)/2 result dw  count,?lea bx,block-2mov cx,resultxor ax,axgo_on:add bx,2cmp ax,bxjae nextmov ax,bxnext: loo

13、p go_onmov result+2,ax程序段執(zhí)行完,回答下述問題:result+2字存儲單元的內容= max(x1,x2,xn ) ; bx = 100h + 2×(count-1) ; 程序循環(huán)次數 = count 。 五、編寫程序(30分)得分評閱人 1編寫一程序,在letter為首地址的26個單元中依此存放字母a、b、z。(本小題8分) data segment letter db 26 dup(?) count equ $-letter data ends code segment assume cs:code,da:data s

14、tart: mov ax,data mov ds,ax mov cx,count lea si,letter mov al,a next: mov si,al inc al inc si loop next mov ah,4ch int 21h code ends end start 2以buffer為首地址的存儲區(qū),存放有長度為n有符號字數組,編寫一程序求出其中負數的平均值(所有負數的和>-32768),并存放在m_average單元中。(本小題10分)data segment buffer dw xxxx,xxxx,xxxx;n個字 count equ ($-buffer)/2 m_

15、average dw ? data ends code segment assume cs:code,da:datacwd idiv bxmov m_average,ax;存負數的平均值mov ah,4ch int 21hdata ends end start start: mov ax,data mov ds,ax mov cx,count lea si, buffer xor ax,ax ;存負數的和 mov bx,ax ;存負數的個數next: test word ptr si,8000h je go_onadd ax,siinc bx go_on: add si,2 loop next

16、 3從鍵盤接收一串不多于99個字符的字符串,對其進行分類統(tǒng)計,顯示其中數字字符個數、大寫英文字母個數、小寫英文字母個數、以及其他字符的個數。要求使用子程序結構;數字字符的ascii碼為30h39h、大寫英文字母的ascii碼為41h5ah、小寫英文字母的ascii碼為61h7ah。(本小題12分)data segment msg db 0dh,0ah,輸入一串字符:$msg1 db 0dh,0ah,大寫字母個數:$msg2 db 0dh,0ah,小寫字母個數:$msg3 db 0dh,0ah,數字符號個數:$msg4 db 0dh,0ah,其它符號個數:$buffer db 99 db 0db

17、 99 dup(?)big db 0 ;大寫字母個數little db 0 ;小寫字母個數dig db 0 ;數字符號個數other db 0 ;其它符號個數 data ends code segment assume cs:code,da:datastart: mov ax,data mov ds,ax lea dx,msgmov ah,9 ;9號功能調用顯示提示信息int 21hlea dx,buffermov ah,10 ;10號功能調用從鍵盤接收一串字符int 21h mov cl,buffer+1;實際從鍵盤接收字符個數mov ch,0lea si,buffer+2again: cm

18、p byte ptr si,30h jb otherscmp byte ptr si,39hjbe digitalscmp byte ptr si,41hjb otherscmp byte ptr si,5ahjbe bigscmp byte ptr si,61hjb others cmp byte ptr si,7ahjbe littlesothers: inc other jmp okdigitals:inc dig jmp oklittles: inc little jmp okbigs: inc bigok: inc siloop again lea dx,msg1mov bh,bigcall dispdeclea dx, msg2mov bh,littlecall dispdec lea

溫馨提示

  • 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

提交評論