欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言编程题目资料答案.doc

    • 资源ID:34798771       资源大小:22.39KB        全文页数:18页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言编程题目资料答案.doc

    5.1编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序用大写字母显示这三个字符。【解】:MAIN 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 21Hadd al,01Hmov dl,almov ah,02Hint 21H;输出换行回车mov dl,0AHmov ah,02Hint 21Hjmp inputexit :retMAIN ENDPEND start5.2  将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中。【解】:DB 4 dup(?) .stack 100H .code MAIN PROC FAR start: push ds and 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 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,02H int 21H exit: ret MAIN ENDP END start5.3  试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NO MATCH。【解】:data segment   string1 db  "111111111",13,10,"$"  string2 db  "222222222",13,10,"$"  inf1    db  "match!",13,10,"$"  inf2    db  "no match!",13,10,"$"data endscode segmentmain proc far  assume ds:data,cs:code,es:codestart: push ds       mov  ax,0       push ax       mov  ax,data       mov  ds,ax       mov  es,ax       lea  si,string1       lea  di,string2       mov  cx,9       repz cmpsb       jz   match       lea  dx,inf2       jmp  disp match:lea  dx,inf1 disp :mov  ah,09       int  21h       retmain endpcode endsend start       5.4  试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。【解】:main proc far start: push ds sub 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 mov ah,2H int 21H loop lop jmp input exit : ret main endp end start5.5  编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。【解】:  DATA SEGMENT     BUF DB -32,   25,   36,   -18,   -64,   0,   -3     COUNT EQU $   -   BUF     PLUS DB ? ;   存放正数     MINUS DB ? ;   存放负数     DATA ENDS         CODE SEGMENT     ASSUME CS:CODE,DS:DATA         START: MOV AX, DATA     MOV DS, AX     MOV BL, 0 ;   负数个数     MOV DL, 0 ;   正数个数     MOV SI, OFFSET BUF ;   首地址     MOV CX, COUNT ;   循环次数         LOP1: MOV AL, SI ;   取第一个数     CMP AL, 0 ;   和0比较     JGE NEXT0 ;   大于等于0,   转     INC BL ;   小于0,   BL加1     JMP NEXT1 ;   转   NEXT1         NEXT0: INC DL ;大于等于0,   DL加1           NEXT1: INC SI ;   指针增1     DEC CX ;   循环次数减1     JNZ LOP1 ;   CX不等于0,   转回     MOV MINUS, BL ;   存储负数个数     MOV PLUS, DL ;   存储正数个数         CODE ENDS     END START  5.6  试编写一汇编语言程序,要求从键盘接收一个4位的十六进制数,并在终端上显示与它等值的二进制数。【解】: 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,'$' data 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 bl,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,charsi 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 int 21h code ends end start5.7  设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUNXXXX”显示出次数。【解】: mov     Z,0        lea     esi,ENGlp1:    lodsblp2:    cmp     al,"$"        jz      toQuit        cmp     al,"S"        jnz     lp1        lodsb        cmp     al,"U"        jnz     lp2        lodsb        cmp     al,"N"        jnz     lp2        inc     Z        jmp     lp1toQuit:5.8  有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。【解】:stack 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,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,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 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 sort ENDP END start5.9  在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置0。【解】:           XOR EBX,EBX                MOV ESI,OFFSET STRING           MOV ECX,99START_LOOP:           LODSB            CMP AL,'0'           JC LOOP_NEXT           CMP AL,'9'           JNC LOOP_NEXT           OR BL,10HLOOP_NEXT:           LOOP START_LOOP            MOV CL,BL5.10  在首地址为TABLE的数组中按递增次序存放着100H个16位补码数。试编写一个程序把出现次数最多的数及其出现次数分别存放于AX和CX中。【解】:  data  segment     Table 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   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   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,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     cs:code,ds:data     start:     mov           ax,   data     mov ds,   ax     ;-     mov si,   offset   Table     mov ax,   si   ;   ax存放最大数     mov bx,   si   ;   bx存放最小数     mov cx,   199     ;   循环199次     C001:     inc si     inc si     mov dx,   si     cmp dx,   ax     jg C002     cmp dx,   bx     jl C003     jmp C004     C002:     mov ax,   dx     jmp C004     C003:     mov bx,   dx     C004:     loop C001         ;   保存结果     mov Result,   ax     mov Result+2,   bx     ;-         mov si,   offset   Table     mov cx,   200     C005:     mov ax,   si     xor dx,   dx     ;-     push cx         mov di,   offset   Table     mov cx,   200     C006:     mov bx,   di     cmp ax,   bx     jnz C007     inc dx     C007:     inc di     inc di     loop C006         pop cx     ;-     cmp dx,   Result+6     jle C008     mov Result+4,   ax     mov Result+6,   dx     C008:     inc si     inc si     loop C005     ;-                     mov           ax,4c00h                     int           21h     code                         ends                     end           start         ;   最后结果   Result   9,   -1,   5,   365.11  试编制一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的4个字节中。例如,当(AX)2A49H时,程序执行完后,MEM中的4个字节内容分别为39H,34H,41H和32H。【解】:data segment x db 'Y','$' y db 'N','$' data ends code segment assume cs:code,ds,data start:mov ax,data  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  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 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  已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组C中。【解】:DATA     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        DB 15 DUP (?)DATA     ENDSCODE     SEGMENT         ASSUME DS:DATA,CS:CODESTART:   MOV   AX,DATA         MOV   DS,AX         LEA   SI,A          LEA   BX,Z         MOV   CX,15         CLDLOP1:    LODSB         PUSH   CX(保存外环CX)         MOV    CX,20(内环次数)         LEA    DI,B(每次内环完,重新赋值)LOP2:    CMP   AL,DI         JE    LOP3(相等,退出内环)         INC   DI         LOOP  LOP2         JMP   LOP4(内环完毕而没有相等的就直接到外环)LOP3:    MOV   BX,AL         INC    BXLOP4:    POP   CX(外环出栈)         LOOP  LOP1         MOV   AH,4CH         INT   21HCODE     ENDS         END   START5.13  从键盘输入一系列字符(以回车符结束),并按字母、数字及其他字符分类计数,最后显示出这三类的计数结果。【解】:datarea   segment     count   dw   0,0,0                   ;分别存放字母、字母和其他字符的个数     datarea   ends     code   segment     main   proc   far         assume   cs:code,ds:datarea     start:push   ds                 sub   ax,ax                 push   ax                 mov   ax,datarea                 mov   dx,ax         next:   mov   ah,01                         ;判断是否为字母                 int   21h                 cmp   al,0dh                 jz     exit                 cmp   al,5ah                 jg     other                                           cmp   al,41h                 jl     shuzi                 add   count0,1       shuzi:cmp   al,39h                             ;判断是否为数字                   jg     other                   cmp   al,31h                   jl     other                   add   count1,1         other:add count2,1                 ;其他字符的个数加1                     jmp   next                                 mov   si,0             exit: mov   bx,countsi         ;打印输出count的内容,为16进制                   mov   ch,4         rotate:   mov   cl,4                   rol   bx,cl                   mov   al,bl                   and   al,0fh                   add   al,30h                   cmp   al,3ah                   jl     printit                   add   al,7h        printit:   mov   dl,al                   mov   ah,2                   int   21h                   dec   ch                   jnz   rotate                   add   si,1                   cmp   si,2                   jnz   exit                   ret           main   endp         code   ends             end   start  

    注意事项

    本文(汇编语言编程题目资料答案.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开