80x86 汇编语言:统计数据的个数

来源:互联网 发布:做淘宝客的步骤有哪些 编辑:程序博客网 时间:2024/06/05 06:49

;http://zhidao.baidu.com/question/241878508910823964.html


;题意不清。

;已知是20个,怎么还有《数据的个数》存在...


;下面按照N个数据,编程。


;N个测试数据,每个数据占用16位二进制数,

;数据的个数分别存放在缓冲区的前两个字节,

;现要求分别统计出大于0,等于0,小于0的个数,

;分别存放在GREATZ、ZERO、LITTLEZ单元中。

;在显示屏中显示:

;Name:

;No.1:

;DATA(20个数据)

;GREATZ:

;ZERO:

;LITTLEZ:

;===========================================

;---------------------------

ASSUME  CS:CC, DS:QQ

;---------------------------

QQ  SEGMENT

    M1  DB  13, 10, 'Name: HAO '

    M2  DB  13, 10, 'No.1: 1234567891 '

        DB  13, 10, 'DATA: $'

    M3  DB  13, 10, 'GREATZ: $'

    M4  DB  13, 10, 'ZERO: $'

    M5  DB  13, 10, 'LITTLEZ: $'


    DATA  DW   18

          DW   -1, 1, 0, -12, 31, 7, 2, -6, 0

          DW   12, 5, 99, -3, 82, 5, 22, 0, 8

    N_G   DW  0

    N_Z   DW  0

    N_L   DW  0


QQ  ENDS

;---------------------------

CC  SEGMENT

START:

    MOV   AX, QQ

    MOV   DS, AX

;---------------------------

    MOV   CX, DATA

    MOV   SI, 0

M_LP:

    CMP   DATA[SI + 2], 0

    JNZ   M_1

    INC   N_Z

    JMP   NEXT

M_1:

    CMP   DATA[SI + 2], 32768

    JB    M_2

    INC   N_L

    JMP   NEXT

M_2:

    INC   N_G

NEXT:

    ADD   SI, 2

    LOOP  M_LP

;---------------------------

    LEA   DX, M1

    MOV   AH, 9

    INT   21H


    MOV   CX, DATA

    MOV   SI, 0

M_LP1:

    PUSH  CX

    MOV   AX, DATA[SI + 2]

    CALL  OUTPUT

    ADD   SI, 2

    POP   CX

    LOOP  M_LP1


    LEA   DX, M3

    MOV   AH, 9

    INT   21H

    MOV   AX, N_G

    CALL  OUTPUT


    LEA   DX, M4

    MOV   AH, 9

    INT   21H

    MOV   AX, N_Z

    CALL  OUTPUT


    LEA   DX, M5

    MOV   AH, 9

    INT   21H

    MOV   AX, N_L

    CALL  OUTPUT

;---------------------------

EXIT:

    MOV   AH, 4CH

    INT   21H       ;返回DOS

;---------------------------

OUTPUT:

    CMP   AL, 128

    JB    OL0

    NEG   AL

    PUSH  AX

    MOV   AH, 2

    MOV   DL, '-'

    INT   21H

    POP   AX

OL0:MOV   BL, 10

    MOV   CX, 0

OL1:MOV   AH, 0

    DIV   BL

    MOV   DL, AH

    ADD   DL, '0'

    PUSH  DX

    INC   CX

    CMP   AL, 0

    JNZ   OL1

    MOV   AH, 2

OL2:POP   DX

    INT   21H

    LOOP  OL2

    MOV   DL, ' '

    INT   21H

    RET

;---------------------------

CC  ENDS

    END   START

;---------------------------

;===========================================


本程序执行后,显示如下:


Name: HAO

No.1: 1234567891

DATA: -1 1 0 -12 31 7 2 -6 0 12 5 99 -3 82 5 22 0 8

GREATZ: 11

ZERO: 3

LITTLEZ: 4





0 0
原创粉丝点击