汇编语言,从一个数组中找出所有奇数

汇编语言,从一个数组中找出所有奇数,第1张

       DATAS  SEGMENT

       ARRAY  DW        1234,2345,5678,7890,3455,1233,0ABCDH,0FFFFH

          N1  DW        ($-ARRAY)/2

      NUMBER  DW        ($-ARRAY)/2 DUP(?)

          N2  DW        0

       DATAS  ENDS

       

       CODES  SEGMENT

              ASSUME    CS:CODES,DS:DATAS

      START:  MOV       AX,DATAS

              MOV       DS,AX

               查找奇数              

              LEA       SI,ARRAY

              LEA       DI,NUMBER

              MOV       CX,N1

         @1:

              MOV       AX,[SI]

              MOV       BX,AX

              SHR       BX,1

              JC        @2

              JMP       @3

         @2:

              MOV       [DI],AX

              INC       WORD PTR N2

              ADD       DI,2

         @3:

              ADD       SI,2

              LOOP      @1

               输出奇数 

              LEA       SI,NUMBER

              MOV       CX,N2

         @4:

              LODSW

              CALL      DISPAX

              LOOP      @4

              

              MOV       AX,4C00H

              INT       21H

==============================================

      DISPAX  PROC      NEAR

              PUSH      BX

              PUSH      CX

              PUSH      DX

              PUSH      SI

              PUSH      DS

              PUSH      AX

              MOV       AH,2

              MOV       DL,' '

              INT       21H

              POP       AX

              PUSH      CS

              POP       DS

              MOV       BYTE PTR NZ,0

              PUSH      AX

              LEA       SI,DIVARR

              MOV       CX,5

        @@1:

              POP       AX

              MOV       DX,0

              MOV       BX,[SI]

              DIV       BX

              PUSH      DX

              CMP       AL,0

              JNE       @@2

              CMP       BYTE PTR NZ,1

              JE        @@2

              CMP       CX,1

              JE        @@2

              MOV       DL,20H

              JMP       @@3

        @@2:

              ADD       AL,30H

              MOV       DL,AL

              MOV       BYTE PTR NZ,1

        @@3:

              MOV       AH,2

              INT       21H

              INC       SI

              INC       SI

              LOOP      @@1

              POP       DX

              POP       DS

              POP       SI

              POP       DX

              POP       CX

              POP       BX

              RET

      DIVARR  DW        10000,1000,100,10,1

          NZ  DB        0

      DISPAX  ENDP

=============================================                    

       CODES  ENDS

              END       START

[1]p=a

[2]p=p+i //等同于 &a[i]

[3]*(p+i)%2 或 *(p+i)%2!=0 这二个都可以 //等同于a[i]%2 或 a[i]%2!=0,不能被2整除的就是奇数

[4]b[j]=*(p+i) //等同于 b[j]=a[i]

从上面可以看出这道题有多个答案。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8322559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存