一个8086的题目

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:34:43
ARRAY数组中有20个有符号字数据,编写程序将ARRAY数据中的数据按正,负分别存入PLUS和NEGA中,并统计正数和负数的个数分别存在NP和NN中

不是吧没人知道吗?8086汇编

xor si,si
mov cx,20
LP:test ARRAY[si],0ffffh
jz Next_One ;等于0,不计数
test ARRAY[si],8000h
jz @@Pos
inc NEGA ;负数计数
jmp Next_One
@@Pos:
inc PLUS ;正数计数
Next_One:
inc si
inc si
loop LP

;本程序经masm5.0调试通过....
Data segment
Tip db 'Program run successfully',0ah,0dh,'$'
ARRAY dw 12h,35h,7547h,9486h,0ab12h,35h,1247h,86h,12h,9235h,47h,86h,712h,435h,47h,86h,12h,35h,47h,86h
PLUS dw 20 dup(?)
NEGA dw 20 dup(?)
NP db ?
NN db ?
Data ends

Code segment
assume cs:Code,ds:Data
Start:mov ax,Data
mov ds,ax;把数据段地址送给ds

mov si,offset ARRAY
mov cx,20
xor bx,bx
xor di,di

next: mov dx,[si]
Test dx,8000h
jnz a001
mov PLUS[bx],dx
add bx,2
inc NP
jmp JM_loop
a001:mov NEGA[di],dx
add di,2
inc NN