数据统计的结果没有显示
程序目的:100H单元开始写入00H-ffH的数据,并在DOS功能调用下显示数据块的内容,统计数据块中0元素 负元素 正元素个数,以下程序没有数据统计的结果为什么?请给一个完整的程序参考下。
DATA SEGMENT
ORG 100H;偏移量为100
BUF DB 256 dup (?)
ZR DB 0 ;0元素
ZH DB 0 ;正元素
FU DB 0 ;负元素
COUNT EQU $-BUF;长度
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
start: mov ax, data
mov ds, ax
mov si, offset buf ;设置数据块首地
mov cx, COUNT ;设数据块长度
cld ;地址修改为增量
xor al, al ;数据块第一个数据为0
nexta: mov [si], al ;向内存送256个数据
inc si
inc al
loop nexta
mov si, offset buf
mov cx, COUNT
done1: mov al, [si] ;显示数据块数据
call disp
inc si
loop done1
mov si, offset buf
mov cx, COUNT
_loop: test al, 80h ;测试是否为负数
jnz _FU ;是负数则转
or al,00h
jz _ZR ;是零转
inc ZH ;正数
inc si
loop _loop
_FU: inc FU
jmp _loop
_ZR: inc ZR
jmp _loop
bi : mov bl,ZR
call _Chg
mov bl,ZH
call _Chg
mov bl,FU
call _Chg
mov ah, 4ch
int 21h
disp proc
mov dl,al; xian shi
mov ah,2
int 21h
mov ah, 2 ; kong ge
mov dl, 20h
int 21h
Ret
disp endp
_Chg proc
mov ch,bl
mov cl,4
shr bl, cl
call dip
mov bl, ch
and bl, 0ah
call dip
ret
_Chg endp
dip proc
cmp bl, 0ah
js done1
add bl, 7
don1:add bl, 30h
mov dl, bl
mov ah, 02
int 21h
ret
dip endp
CODE ENDS
end start