code segment
assume cs:code
org 100h
start: jmp bbb
table dw 123,345,456,567,678,789,-987,-876,-765,-654,-543,-432,-321,0
n dw 14
count dw ?
bbb:
push cs
pop ds
push cs
pop es
mov cx,[n]
lea bx,table
mov word ptr[count],0
lp: cmp word ptr[bx],0
jge n1
inc word ptr [count]
mov ax,[bx]
neg ax
push bx
push cx
call dispnum
pop cx
pop bx
n1: inc bx
inc bx
loop lp
mov ax,[count]
call dispnum
;int 20h
mov ah,4ch
int 21h
; 显示十进制整型数值子程序
dispnum proc near
; 将要显示的数据放入AX中
mov dx,0
mov bx,10
div bx
mov byte ptr[y+6],dl ;保存个位
mov dx,0
div bx
mov byte ptr[y+5],dl ;保存十位
mov dx,0
div bx
mov byte ptr[y+4],dl ;保存百位
mov dx,0
div bx
mov byte ptr[y+3],dl ;保存千位
mov byte ptr[y+2],al ;保存万位
mov al,byte ptr[y+2]
add al,30h ;万位转ASC2
mov byte ptr[y+2],al
mov al,byte ptr[y+3]
add al,30h ;千位转ASC2
mov byte ptr[y+3],al
mov al,byte ptr[y+4]
add al,30h ;百位转ASC2
mov byte ptr[y+4],al
mov al,byte ptr[y+5]
add al,30h ;十位转ASC2
mov byte ptr[y+5],al
mov al,byte ptr[y+6]
add al,30h ;个位转ASC2
mov byte ptr[y+6],al
mov di,1
disp1:
inc di
cmp di,6
je dispexit
cmp byte ptr[y+di],'0'
jne dispexit
mov byte ptr[y+di],' '
jmp disp1
dispexit:
mov ah,9
lea dx,y
int 21h
ret
y db 10,13,0,0,0,0,0,'$'
dispnum endp
code ends
end start