汇编语言上机2.3
编写一程序使其实现将1个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把两个数组显示出来。
代码
DATAS SEGMENT ;此处输入数据段代码
MARRAY DW ,,,,,-,-,-,-,-,-,,,,-,-,-,,,,'$'
PARRAY DW DUP(?)
NARRAY DW DUP(?)
str1 DB 'Positive numbers:$'
str2 DB 'Negative numbers:$'
DATAS ENDS
STACKS SEGMENT ;此处输入堆栈段代码
DW DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX ;此处输入代码段代码
MOV DI, ;统计正数个数
MOV SI, ;统计负数个数
MOV BP,
AGAIN:
CMP BP,
JZ DISP
LEA BX,MARRAY[BP]
ADD BP,
MOV DX,[BX]
BIJIAO: CMP DX,
JG PARRAY1 ;大于跳转
JL NARRAY1 ;小于跳转
PARRAY1:
MOV AX,[BX]
MOV PARRAY[DI],AX
ADD DI,
JMP AGAIN
NARRAY1:
MOV AX,[BX]
MOV NARRAY[SI],AX
ADD SI,
JMP AGAIN
DISP:
MOV BP,
MOV AH, ;提示
LEA DX, str1
INT H
POSA1:
LEA BX,PARRAY[BP]
MOV AX,[BX]
ADD BP,
ADD AX,H
MOV DL,AL
MOV AH ,H;输出正数
INT H
mov ah,;输出空格
mov dl,
int h
CMP BP,DI
JNE POSA1
MOV AH, ;换行
MOV DX, AH
INT H
MOV AH, ;提示
LEA DX, str2
INT H
MOV BP,
NEG1:
MOV AH,;输出负号
MOV DL,DH
INT H
LEA BX,NARRAY[BP]
MOV AX,[BX]
ADD BP,
NEG AX
ADD AX,H
MOV DX,AX
MOV AH ,H;输出数字
INT H
mov ah,;输出空格
mov dl,
int h
CMP BP,SI
JNE NEG1
MOV AH,CH
INT H
CODES ENDS
END START