问题描述
试编写一完整的汇编语言程序,将一个包含有10个数据的数组M分成两个数组:正数数组P和负数数组N,并分别求出这两个数组中数据的个数。
源代码
data segment
m dw 1,-3,32,4,31,42,-53,53,-12,34;原数组
p dw 10 dup(?) ;正数数组
n dw 10 dup(?) ;负数数组
countp db 30h ;存放正数个数
countn db 30h ;存放负数个数
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,10
xor bx,bx
xor si,si
xor di,di
s: mov ax,m[bx]
cmp ax,0
jge s1 ;判断数的正负
mov n[si],ax
add si,2
add countn,1
jmp next
s1: mov p[di],ax
add di,2
add countp,1
next: add bx,2
loop s
mov ah,2
mov dl,countp ;显示正数个数
int 21h
mov ah,2
mov dl,20h ;显示空格
int 21h
mov ah,2
mov dl,countn ;显示负数个数
int 21h
mov ax,4c00h
int 21h
code ends
end start