美文网首页
2018-10-14 汇编语言的一点小笔记

2018-10-14 汇编语言的一点小笔记

作者: 魔一方 | 来源:发表于2018-10-14 21:06 被阅读0次

    这篇文章还没写完,因为这个程序没看懂还。。。

    例:从键盘输入10个数,分别统计0~9、10~99、100~数的个数,并在显示器上显示。

    问题分析:

    1.输入:从键盘输入一个数,并转换成二进制形式;

    2.统计;

    3.重复 1.2.  10次;

    4.显示结果。

    数据定义:

    message  db   'input data please:',0dh,0ah,'$'  //0d 0a 一个是回车 一个是换行,回车将光标切换到行首,换行就是换行

    message2  db  'output:',0dh,0ah,'$'

    maxlen  db  6    ;此处输入数据段代码 

       db  0

       db  6 dup(9)

    display  db  ' 0~ 9:',?,?,0dh,0ah

      db  '10~99:',?,?,0dh,0ah

      db  '100~ :',?,?

    cr  db  0dh,0ah,'$'//其实我也不知道这句话在干嘛 ,明天问一下老师吧。。。

    count0  db  0

    count1  db  0

    count2  db  0

     ;输入并统计

      mov  cx,10

          lea  dx,message          ;把message的地扔到dx寄存器里

          mov  ah,9                            

          int  21h   //这是一个固定搭配,让显示器显示以下。

    next:  call  read_exch                     ;输入一个数据,结果在dx中,调用子程序了!

      cmp  dx,10      比较

      jae  g_10        如果大就去另外一个子程序

      inc  count0         ;//比10小就把这个计数器加一

      jmp  a_num_end

    g_10:  cmp  dx,100        

      jae  g_100

      inc  count1  ;10~99

      jmp  a_num_end

    g_100:inc  count2  ;100~

    a_num_end:

      loop  next      

    ;显示结果 

      lea  dx,message2

          mov  ah,9

          int  21h

      mov  bx,offset display //问题来了,这个是什么鬼

      mov  al,count0

      call  exch_to_asc10

      mov  [bx+6],ah

      mov  [bx+7],al

      mov  al,count1

      call  exch_to_asc10

      mov  [bx+16],ah

      mov  [bx+17],al

      mov  al,count2

      call  exch_to_asc10

      mov  [bx+26],ah

      mov  [bx+27],al

      mov  dx,bx

      mov  ah,9

      int  21h     //显示这个我完全没看懂。。。

    read_exch  procnear

          push  cx

      mov  dx,offset maxlen

          mov  ah,0ah

          int  21h

          lea  dx,cr

      mov  ah,9

      int  21h

          mov  ax,0

          mov  cl,maxlen+1

          mov  bx,offset maxlen

          add  bx,2

    again:  mov  dh,0

      mov  dl,[bx]

      and  dl,0fh

      mov  ch,10

      mul  ch

      add  ax,dx

      inc  bx

      dec  cl

      jnz  again

      mov  dx,ax

      pop  cx 

      ret

    read_exch  endp

    exch_to_asc10  proc  near

      mov  ah,0

      mov  dl,10

      div  dl

      or  ax,3030h

      xchg  ah,al

      ret

    exch_to_asc10  endp 

    exch_to_asc  proc  near

      push  ax

      mov  cl,4

      shr  al,cl

      or  al,30h

      cmp  al,39h

      jbe  is_data_h

      add  al,7

    is_data_h:

      mov  dh,al

      pop  ax

      and  al,0fh

      or  al,30h 

      cmp  al,39h

      jbe  is_DATA_L

      ADD  al,7

    is_data_l:

      mov  ah,dl 

      ret

    exch_to_asc  endp 

    相关文章

      网友评论

          本文标题:2018-10-14 汇编语言的一点小笔记

          本文链接:https://www.haomeiwen.com/subject/tqmtzftx.html