匯編語言編程題目資料答案_第1頁
匯編語言編程題目資料答案_第2頁
匯編語言編程題目資料答案_第3頁
匯編語言編程題目資料答案_第4頁
匯編語言編程題目資料答案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、【精品文檔】如有侵權,請聯(lián)系網站刪除,僅供學習與交流匯編語言編程題目資料答案.精品文檔.5.1編寫程序,從鍵盤接收一個小寫字母,然后找出它的前導字符和后續(xù)字符,再按順序用大寫字母顯示這三個字符?!窘狻浚篗AIN PROC FARstart:push dssub ax,axpush axinput:mov ah,7Hint 21Hcmpe:cmp al,20HJE exitcmp al,61HJL inputcmp al,7AHJG inputprint:sub al,01Hmov dl,almov ah,02Hint 21Hadd al,01Hmov dl,almov ah,02Hint 21

2、Hadd al,01Hmov dl,almov ah,02Hint 21H;輸出換行回車mov dl,0AHmov ah,02Hint 21Hjmp inputexit :retMAIN ENDPEND start5.2  將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這4組數(shù)分別放在AL、BL、CL和DL中?!窘狻浚篋B 4 dup(?) .stack 100H .code MAIN PROC FAR start: push ds and 

3、ax,00H push ax mov ax,1234H mov cx,04H mov si,00H lop: push cx mov cl,04H rol ax,cl push ax and al,0FH mov BYTE PTR xsi,al pop ax pop cx add si,2 Loop

4、 lop mov al,X mov bl,X+2 mov cl,X+4 mov dl,X+6 print: mov ah,02H int 21H mov dl,al mov ah,02H int 21H mov dl,bl mov ah,02H int 21H mov dl,cl mov ah,02

5、H int 21H exit: ret MAIN ENDP END start5.3  試編寫一程序,要求比較兩個字符串STRING1和STRING2所含字符是否相同,若相同則顯示MATCH,若不相同則顯示NO MATCH。【解】:data segment   string1 db  "111111111",13,10,"$"  string2 db

6、0; "222222222",13,10,"$"  inf1    db  "match!",13,10,"$"  inf2    db  "no match!",13,10,"$"data endscode segmentmain proc far 

7、; assume ds:data,cs:code,es:codestart: push ds       mov  ax,0       push ax       mov  ax,data       mov 

8、0;ds,ax       mov  es,ax       lea  si,string1       lea  di,string2       mov  cx,9      

9、 repz cmpsb       jz   match       lea  dx,inf2       jmp  disp match:lea  dx,inf1 disp :mov  ah,09  

10、0;    int  21h       retmain endpcode endsend start       5.4  試編寫一程序,要求能從鍵盤接收一個個位數(shù)N,然后響鈴N次(響鈴的ASCII碼為07H)?!窘狻浚簃ain proc far start: push ds sub&#

11、160;ax,ax push ax input: mov ah,01H int 21H cmp al,20H je exit cmp al,30H jle input cmp al,3AH jge input sub al,30H mov cx,ax and cx,0FFH lop: mov dl,07H m

12、ov ah,2H int 21H loop lop jmp input exit : ret main endp end start5.5  編寫程序,將一個包含有20個數(shù)據的數(shù)組M分成兩個數(shù)組:正數(shù)數(shù)組P和負數(shù)數(shù)組N,并分別把這兩個數(shù)組中數(shù)據的個數(shù)顯示出來?!窘狻浚?#160; DATA SEGMENT     BUF DB -32,   25,   36,   -

13、18,   -64,   0,   -3     COUNT EQU $   -   BUF     PLUS DB ? ;   存放正數(shù)     MINUS DB ? ;   存放負數(shù)     DATA ENDS         CODE SEGMENT     ASSUME

14、CS:CODE,DS:DATA         START: MOV AX, DATA     MOV DS, AX     MOV BL, 0 ;   負數(shù)個數(shù)     MOV DL, 0 ;   正數(shù)個數(shù)     MOV SI, OFFSET BUF ;   首地址     MOV CX, CO

15、UNT ;   循環(huán)次數(shù)         LOP1: MOV AL, SI ;   取第一個數(shù)     CMP AL, 0 ;   和0比較     JGE NEXT0 ;   大于等于0,   轉     INC BL ;   小于0,   BL加1 

16、60;   JMP NEXT1 ;   轉   NEXT1         NEXT0: INC DL ;大于等于0,   DL加1           NEXT1: INC SI ;   指針增1     DEC CX ;   循環(huán)次數(shù)減1     JNZ LOP1 ;   C

17、X不等于0,   轉回     MOV MINUS, BL ;   存儲負數(shù)個數(shù)     MOV PLUS, DL ;   存儲正數(shù)個數(shù)         CODE ENDS     END START  5.6  試編寫一匯編語言程序,要求從鍵盤接收一個4位的十六進制數(shù),并在終端上顯示與它等值的二進制數(shù)?!窘狻浚?#1

18、60;stacks segment stack s db 20 dup(0) stacks ends data segment n equ 4 char db n+1 ;輸入內存字符db 0 db n+1 dup(0) input db 'Input the number:',0dh,0ah,'$' enter db 0dh,0ah,'$' output db 'Result is:',0dh,0ah,'$' dat

19、a ends code segment assume cs:code,ss:stacks,ds:data start: mov ax,data mov ds,ax lea dx,input mov ah,9 int 21h lea dx, char mov ah,0ah int 21h lea dx,enter mov ah,9 int 21h mov si,2 mov cx,4 l0: mov bl,charsi cmp b

20、l,30h jb start cmp bl,39h jbe l00 cmp bl,61h jb start cmp bl,66h ja start sub bl,57h jmp l333 l00: sub bl,30h l333:mov charsi,bl inc si dec cx jnz l0 lea dx,output mov ah,9 int 21h mov si,2 l000:mov bl,cha

21、rsi mov ch,4 mov cl,4 shl bl,cl ll00:test bl,80h jnz l1 mov dl,'0' mov ah,2 int 21h jmp l2 l1: mov dl,'1' mov ah,2 int 21h l2: shl bl,1 dec ch jnz ll00 inc si cmp si,6 jne l000 mov ah,4ch&#

22、160;int 21h code ends end start5.7  設有一段英文,其字符變量名為ENG,并以$字符結束。試編寫一程序,查對單詞SUN在該文中的出現(xiàn)次數(shù),并以格式“SUNXXXX”顯示出次數(shù)?!窘狻浚?#160;mov     Z,0        lea     esi,ENGlp1:    lodsblp2:  &#

23、160; cmp     al,"$"        jz      toQuit        cmp     al,"S"        jnz  

24、;   lp1        lodsb        cmp     al,"U"        jnz     lp2        lodsb 

25、       cmp     al,"N"        jnz     lp2        inc     Z        jmp &

26、#160;   lp1toQuit:5.8  有一個首地址為MEM的100D字數(shù)組,試編制程序刪除數(shù)組中所有為零的項,并將后續(xù)項向前壓縮,最后將數(shù)組的剩余部分補上零?!窘狻浚簊tack 100H .data mem dw 12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,

27、0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,45,7,5,1,2,0,2,4,0,2 .code MAIN PROC FAR start: push ds and ax,0 push ax mov ax,data mov ds,ax - mov ax,0H mov bx,64H mov cx,64H mov si,

28、0FFFEH repeat: ADD si,2H cmp MEMsi,0H JE calls loop repeat calls: INC ax call sort cmp ax,1H JE lastValue DEC cx jmp repeat exit : ret lastValue: mov membx,0H&#

29、160;DEC cx jmp repeat MAIN ENDP sort PROC NEAR push cx push si sub si,2H s: add si,2H mov dx,memsi mov memsi+2,dx loop s return: pop si pop cx ret sor

30、t ENDP END start5.9  在STRING到STRING+99單元中存放著一個字符串,試編制一程序測試該字符串中是否存在數(shù)字。如有,則把CL的第5位置1,否則將該位置0?!窘狻浚?#160;          XOR EBX,EBX                MOV ES

31、I,OFFSET STRING           MOV ECX,99START_LOOP:           LODSB            CMP AL,'0'        

32、;   JC LOOP_NEXT           CMP AL,'9'           JNC LOOP_NEXT           OR BL,10HLOOP_NEXT:       

33、;    LOOP START_LOOP            MOV CL,BL5.10  在首地址為TABLE的數(shù)組中按遞增次序存放著100H個16位補碼數(shù)。試編寫一個程序把出現(xiàn)次數(shù)最多的數(shù)及其出現(xiàn)次數(shù)分別存放于AX和CX中?!窘狻浚?#160; data  segment     Table dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,

34、5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9   &#

35、160; dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9     dw   5,5,5,5,5

36、,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1     Result dw   0,0,0,0     data    ends         code         segment                     assume     c

37、s:code,ds:data     start:     mov           ax,   data     mov ds,   ax     ;-     mov si,   offset   Table     mov ax,   si   ;   ax存放最大數(shù)  

38、   mov bx,   si   ;   bx存放最小數(shù)     mov cx,   199     ;   循環(huán)199次     C001:     inc si     inc si     mov dx,   si     cmp dx,   ax   

39、;  jg C002     cmp dx,   bx     jl C003     jmp C004     C002:     mov ax,   dx     jmp C004     C003:     mov bx,   dx     C004:   

40、60; loop C001         ;   保存結果     mov Result,   ax     mov Result+2,   bx     ;-         mov si,   offset   Table     mov cx,   200  &

41、#160;  C005:     mov ax,   si     xor dx,   dx     ;-     push cx         mov di,   offset   Table     mov cx,   200     C006:     mov

42、bx,   di     cmp ax,   bx     jnz C007     inc dx     C007:     inc di     inc di     loop C006         pop cx     ;-     cmp

43、 dx,   Result+6     jle C008     mov Result+4,   ax     mov Result+6,   dx     C008:     inc si     inc si     loop C005     ;-         

44、0;           mov           ax,4c00h                     int           21h     code                     &#

45、160;   ends                     end           start         ;   最后結果   Result   9,   -1,   5,   365.11  試編制一個程序,把AX中的十六進制數(shù)轉換為ASCII碼,并將對

46、應的ASCII碼依次存放到MEM數(shù)組中的4個字節(jié)中。例如,當(AX)2A49H時,程序執(zhí)行完后,MEM中的4個字節(jié)內容分別為39H,34H,41H和32H?!窘狻浚篸ata segment x db 'Y','$' y db 'N','$' data ends code segment assume cs:code,ds,data start:mov ax,data 

47、60;mov ds,ax  mov ah,01  int 21h  cmp al,'a'  ja abc abc: cmp al,'z'  jb abc1  ret abc1:mov dl,offset x  mov ah,9  int 21h  

48、ret   cmp al,'A'  ja ab ab: cmp al,'Z'  jb ab1  ret ab1: mov dl,offset x  mov ah,9  int 21h  ret  cmp al,'z'  ja

49、0;ac  cmp al,'A'  jb ac ac: mov dl,offset y  mov ah,9  int 21h  ret  mov ah,4ch  int 21h code ends  end start5.12  已知數(shù)組A包含15個互不相等的整數(shù),數(shù)組B包

50、含20個互不相等的整數(shù)。試編制一程序,把既在A中又在B中出現(xiàn)的整數(shù)存放于數(shù)組C中?!窘狻浚篋ATA     SEGMENTA        DB 1,3,4,6,10,12,15,21,33,2,40,42,46,48,55B        DB 2,3,6,21,33,41,55,88,8,66,21,10,22,23,56,48,50,51,89,100Z  &#

51、160;     DB 15 DUP (?)DATA     ENDSCODE     SEGMENT         ASSUME DS:DATA,CS:CODESTART:   MOV   AX,DATA       

52、0; MOV   DS,AX         LEA   SI,A          LEA   BX,Z         MOV   CX,15   

53、0;     CLDLOP1:    LODSB         PUSH   CX(保存外環(huán)CX)         MOV    CX,20(內環(huán)次數(shù))         

54、;LEA    DI,B(每次內環(huán)完,重新賦值)LOP2:    CMP   AL,DI         JE    LOP3(相等,退出內環(huán))         INC   DI     &

55、#160;   LOOP  LOP2         JMP   LOP4(內環(huán)完畢而沒有相等的就直接到外環(huán))LOP3:    MOV   BX,AL         INC    BXLOP4:   

56、; POP   CX(外環(huán)出棧)         LOOP  LOP1         MOV   AH,4CH         INT   21HCODE    

57、60;ENDS         END   START5.13  從鍵盤輸入一系列字符(以回車符結束),并按字母、數(shù)字及其他字符分類計數(shù),最后顯示出這三類的計數(shù)結果。【解】:datarea   segment     count   dw   0,0,0                   ;分別存放字母、字

58、母和其他字符的個數(shù)     datarea   ends     code   segment     main   proc   far         assume   cs:code,ds:datarea     start:push   ds              

59、  sub   ax,ax                 push   ax                 mov   ax,datarea                 mov   dx,ax       

60、60; next:   mov   ah,01                         ;判斷是否為字母                 int   21h                 cmp   al,0dh  &#

61、160;              jz     exit                 cmp   al,5ah                 jg     other                  

62、                         cmp   al,41h                 jl     shuzi                 add   count0,1       s

63、huzi:cmp   al,39h                             ;判斷是否為數(shù)字                   jg     other                   cmp   al,31h                   jl     other                   add   count1,1  

溫馨提示

  • 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

提交評論