注册 登录
编程论坛 汇编论坛

帮忙看个简单程序,干了什么事,考试中,快回.

gongdian 发布于 2012-06-02 08:56, 651 次点击
DATA SEGMENT
    D1 DB 2,-1,-3,5,6,9,18,-29,-72,8,122,-31,95,76,91,-2
    RS DB ?
DATA ENDS

STACK SEGMENT STACK
    DW 100H DUP(?)
STACK ENDS

CODE SEGMENT
    MAIN PROC FAR
        ASSUME CS:CODE,DS:DATA,SS:STACK
    START:      PUSH DS
        SUB AX,AX
        PUSH AX
        MOV AX,DATA
        MOV DS,AX
        LEA BX,D1
        MOV CX,LENGTH D1
        MOV DL,0
    LOP1:    MOV AL,[BX]
        CMP AL,0
        JGE JUS
        INC DL
    JUS:    INC BX
        DEC CX
        JNZ LOP1
        MOV RS,DL
        ADD DL,30H
        MOV AH,2
        INT 21H
        RET
    MAIN ENDP
CODE ENDS
END START
7 回复
#2
gongdian2012-06-02 09:21
是负数的个数,可是出来的结果是0,逻辑有总是,帮忙看一下,哪有问题
#3
zklhp2012-06-02 11:37
祝考试顺利
#4
于祥2012-06-02 13:11
程序代码:
DATA SEGMENT
    D1 DB 2,-1,-3,5,6,9,18,-29,-72,8,122,-31,95,76,91,-2
     RS DB ?
  //这里加一句d2 EQU RS-D1           把d2传给CX就可以了

 DATA ENDS

STACK SEGMENT STACK
     DW 100H DUP(?)

 STACK ENDS

CODE SEGMENT
     MAIN PROC FAR
         ASSUME CS:CODE,DS:DATA,SS:STACK
     START:      PUSH DS
         SUB AX,AX
         PUSH AX
         MOV AX,DATA
         MOV DS,AX
         LEA BX,D1
         MOV CX,LENGTH D1          //你的LENGTH没用对,它取的是各种类型的长度,比如DB 为1,DW为2,DD为4,而不是整个数据的长度
         MOV DL,0
     LOP1:    MOV AL,[BX]
         CMP AL,0
         JGE JUS
         INC DL
     JUS:    INC BX
         DEC CX
         JNZ LOP1
         MOV RS,DL
         ADD DL,30H
         MOV AH,2
         INT 21H
         RET
     MAIN ENDP

 CODE ENDS

 END START
祝考试顺利
#5
gongdian2012-06-02 19:07
版主太不厚道了,已经做完了,这一句有问题,masm不认识,算不出D1有16个值,把16赋给CX就对了
 MOV CX,LENGTH D1
#6
zklhp2012-06-02 19:18
考试中问 要是帮你 不就是帮作弊么
#7
于祥2012-06-02 19:55
我直接被忽略了
其实我那个就是你的本意
#8
powlin19912012-06-02 20:24
膜拜下楼主,考试中能打这么多代码。。。如果是上机考试还说的过去,如果是手机党。。。想必是骨灰级的。
1