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

汇编问题:统计一组数中的负数个数~~

hiwwr 发布于 2010-04-21 21:18, 936 次点击
程序代码:
.486
DATA SEGMENT USE16
BUF DB -19,28,37,-46,55,61,-70,255
DATA ENDS
CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA
BEG:   MOV AX,DATA
       MOV DS,AX
       MOV DL,0
       MOV CH,8
       MOV SI,OFFSET BUF
AGAIN: CMP BYTE PTR [SI],0
       JAE REPT
       INC DL
REPT:  INC SI
       INC SI
       LOOP AGAIN
       ADD DL,30H
       MOV AH,2
       INT 21H
       MOV AH,4CH
       INT 21H
CODE ENDS
     END BEG
统计8个数中的负数个数,
但执行结果为0
请问谁可以帮我修改一下?
谢谢~
3 回复
#2
hiwwr2010-04-21 22:14
没人?自己先顶一下~~
#3
ONEPROBLEM2010-04-21 23:29
BEG:   MOV AX,DATA
       MOV DS,AX
       MOV DL,0
       MOV CX,8
       LEA SI,BUF
AGAIN:
    MOV AL,DS:[SI]
    INC SI
    CALL _A
       CMP AL,0
       JE  _REPT
       INC DL
_REPT:
       LOOP AGAIN
       ADD DL,30H
       MOV AH,2
       INT 21H
       MOV AH,4CH
       INT 21H
_A:
       PUSH CX
       MOV CL,7
       SHR AL,CL
       POP CX
       RET
END BEG
好久不玩汇编了!
结果是4吧,因为255在8位中只能算是负数,这是补码中说的.
判断负数的方法是它是最高位是否为1啊.
#4
hiwwr2010-04-23 21:48
回复 3楼 ONEPROBLEM
真是太感谢了~~高人啊~~小弟刚学汇编,还请以后多多指教~~
1