求教一个简单的汇编语言编程问题
编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
.model small
.stack 200h
.data
M dw -1h,0h,33h,1h,-10h, 15 dup(-1h)
P dw 20 dup(0) ;正数 bx
N dw 20 dup(0) ;负数 dx
buffer db 'P: ,N: ',13,10,'$'
.CODE
START:
mov ax,@data
mov ds,ax
xor ax,ax
mov bx,ax
mov dx,ax
lea si,M
mov cx,20d
@loop:
lodsw
or ax,ax
js @n
jz @F
mov WORD ptr ds:[P+bx],ax
inc bx
jmp @f
@n:
mov WORD ptr ds:[N+dx],ax
inc dx
@@:
loop @loop
mov ax,bx
mov cl,10d
div cl
add ah,30h
mov ds:[buffer+3h],ah
xor ah,ah
div cl
add ah,30h
mov ds:[buffer+2h],ah
mov ax,dx
div cl
add ah,30h
mov ds:[buffer+8h],ah
xor ah,ah
div cl
add ah,30h
mov ds:[buffer+7h],ah
lea dx,buffer
mov ah,9h
int 21h
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
END START