1、在屏幕上输出:
*********
*******
*****
***
*
解:code segment
      assume  cs:code
    start:    mov  bx,9
    rotate:    mov  dl,'*'
            mov  cx,bx
    print:    mov  ah,02h
        int  21h
        loop print
          mov  dl,0ah
        mov  ah,02h
        int  21h
        mov  dl,0ch
        mov  ah,02h
        int  21h
        sub  bx,2
        jns  rotate
        mov  ah,4ch
        int  21h
    code  ends
      end start
2、从键盘上接收一个字符,如果为小写字母则显示其对应的大写字母。
解:code  segment
      assume  cs:code
start:  mov  ah,01h
        int  21h
        cmp  al,'a'
        jl  exit
        cmp  al,'z'
        jg  exit
        mov  dl,al
        sub  dl,20h
        mov  21h
exit:    mov  ah,4ch
        int  21h
code  ends
      end start
(题1的)思路:令cx=9,dl='*',循环输出loop dl并且令cx自减2;使用换行语句;直到cx小于0,退出。此处注意dl的值是否改变,以免输出的不是’*’。
3、键盘接收一个小写字母,然后出它的前导字母和后续字母,按顺序显示这三个字符。
解:    code    segment
    assume    cs:code
    start:    mov  ah,01h
        int  21h
        mov  dl,al
        dec  dl
        cmp  al,'a'
        jne  print1
        mov  dl,'z'
    print1: mov  ah,02h
        int  21h
        mov  dl,al
        mov  ah,02h
        int  21h
        mov  dl,al
        inc  dl
        cmp  al,'z'
        jne  print2
        mov  dl,'a'
    print2:    mov  ah,02h
        int  21h
        mov  ah,4ch
        int  21h
    code      ends
        end  start
4、求z=[(w-x)*10+5]/(x+y),其中x,y,w为字节型的带符号数,数值分别为38H,28H,48H.
解:data    segment
        x    db  38h
        y      db  28h
        w    db  48h
        z    db  ?
    data    ends
    code    segment
      assume  cs:code,da:data
    start:    mov  ax,data
        mov  ds,ax
        mov  al,w
        sub  al,x
        mov  bl,10
        imul bl
        add  bl,y
        idiv bl
        mov  z,al
        mov  z+1,ah
        mov  ah,4ch
        int  21h
    code ends
        end  start
5、首地址BUF的内存单元存放的10个字节数,统计其中单元内容为0的单元个数,并将结果显示出来。
解:data    segment
      BUF    db  1,2,0,4,5,7,0,0,5,6,8   
    data        ends
    code    segment
      assume    cs:code,ds:data
    start:    mov  ax,data
        mov  ds,ax
        mov  cx,10
        mov  dl,0
        lea  bx,BUF
    rotate: cmp  [bx],0
        jne  next
        inc  dl
    next:    inc  bx
        loop rotate
        add  dl,30H
        mov  ah,02H
        int  21H
        mov  ah,4ch
        int  21h
    code  ends
          end  start
6、统计一个有10个人的班级中男女生的人数,男生人数放到变量x,女生人数放到变量y中。
解:data    segment
    stu    db  '0','1','0','0','1','1','1','0','1','0'
      x    db  ?
      y    db  ?
    data      ends
    code        segment   
      assume    cs:code,ds:data
    start:    mov  ax,data
        mov  ds,ax
        mov  cx,10
        lea  bx,stu
        mov  dh,0
        mov  dl,0
    next:    cmp  [bx],'0'
        ine  rotate
        inc  dl
        jmp  exit
    rotate: int  dh
    exit:    inc  bx
        loop next
        mov  x,dh
        mvo  y,dl
        mov  ah,4ch
        int  21h
    code  ends
          end  start
7、设首地址为BUF的存储单元,存放10个字数据,求出它们的和,并将结果存入变量sum中。
解:    data    segment
      buf      dw  10  dup(2)
      sum  dw  ?
    data    ends
    code    segment
      assume  cs:code,ds:data
    start:    mov  ax,data
        mov  ds,ax
        mov  cx,10
        mov  ax,0
        lea  bx,buf
    rotate: add  ax,[bx]
        add  bx,2
        loop rotate
        mov  sum,ax
        mov  ah,4ch
        int  21h
    code    ends
        end  start
8、在BUF1中和BUF2两个数据区中各定义10个带符号字符数据,将它们的对应项的绝对值取和,并将结果存入以sum为首地址的数据区中。(如BUF1的第一项和BUF2的第一项的绝对值之和存入sum的地址中)
解:data        segment
buf1  dw  -56,24,13, 3,-10,51,6,44,-14,-21
buf1  dw  4,-5,24,-19,- 6,61,25,27,-42,-17   
sum  dw  10    dup(?)
    data        end
    code      segment
      assume    cs:code,ds:data
    start:    mov  ax,data
        mov  ds,ax
        mov  cx,10
        mov  bx,0
    rotate: mov  ax,buf1[bx]
        cmp  ax,0
        jns  next1
汇编语言如何编程        neg  ax
    next1: mov  dx,buf2[bx]
        cmp  dx,0
        jns  next2
        neg  dx
    next2: add  ax,dx
        mov  sum[bx],ax
        add  bx,2
        loop  rotate
        mov  ah,4ch
        int  21h
    code      ends
          end  start

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。