帮忙加工!急用! 谢谢!
(用汇编)编写一个程序,将一个包含有20个有符号数据的数组arrayM分成两个数组:正数数组arrayP和负数数组arrayN,并分别把这两个数组中的数据个数显示出来.谢谢大家了! 尽快!
DATA SEGMENT
NUM DB 1,2,...,20 ;这个你随便写20个字节的数据
P DB 20 DUP(?) ;正数组
PNUM DB 0 ;正计数
N DB 20 DUP(?) ;负数组
NNUM DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX ;初始化完毕
MOV BX,0
MOV SI,BX
MOV DI,BX
MOV CX,20 ;设置相关参数
LOP1: MOV AL,NUM [BX] ;取原始数组元素
CMP AL,0
JGE P1 ;为正则转P1
MOV N [DI],AL
INC DI
INC NNUM ;负数组增加,计数变化
JMP NEXT
P1: MOV P [SI],AL
INC SI ;正数组增加,计数变化
INC PNUM
NEXT: INC BX ;原始数组指针偏移
LOOP LOP1 ;循环20次--CX
RET ;结束
MAIN ENDP
CODE ENDS
END START
array_total db -1,2,-3,4,-5,6
array_plus db 6 dup(0)
array_negative db 6 dup(0)
plus dw 0000h
negative dw 0000h
dseg ends
cseg segment
assume cs:cseg,ds:dseg
start : mov ax,dseg
mov ds,ax
mov cx,06h
xor ax,ax
mov si,ax
mov di,ax ;初始化 si ,di
mov bx,offset array_total
again: mov al,[bx+si] ;保存数组array_total 里面的值 ,放在 AL
cmp byte ptr [bx+si],0h ; 通过 符号位判断 正负 or byte ptr [bx+si],01111111b
js t
mov di,plus ;plus 赋值数组的指针
mov byte ptr [bx+di+6h],al ; 把数 放的 数组(保存)里
inc di ; 指针下移
mov plus,di ;plus 保存数组的指针
jmp l
t: mov di,negative ; negative 赋值 数组的指针,
mov byte ptr [bx+di+0ch],al ; 把数 放的 数组(保存)里
inc di ; 指针下移
mov negative,di ; negative 保存数组的指针,
l: inc si ; si 加 1 指向下个 数字
loop again
cseg ends
end start
[[italic] 本帖最后由 kr^zHaYj 于 2007-12-3 14:06 编辑 [/italic]] 没有写,输出,这个也不知道 对不对
页:
[1]
