DATAS SEGMENT;此處輸入數據段代碼
MARRAY DW 1,2,3,4,5,-6,-7,-8,-9,-10,-11,12,13,14,-15,-16,-17,18,'$'
PARRAY DW 10 DUP(?)
NARRAY DW 10 DUP(?)
Z DB 10
DATAS ENDS
STACKS SEGMENT ;此處輸入堆棧段代碼
DW 100 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX ;此處輸入代碼段代碼
MOV DI,0 ;統計正數個數
MOV SI,0 ;統計負數個數
LEA BX,MARRAY
MOV DX,[BX]
MOV AX,0
MOV CX,0
BIJIAO: CMP DX,0
JG PARRAY1 ;大於跳轉
JL NARRAY1 ;小於跳轉
PARRAY1:
MOV AX,[BX]
MOV PARRAY[BX],AX
INC DI
ADD BX,2
MOV DX,[BX]
CMP DX,24H ;與結束符$比較,看是否結束
JNZ BIJIAO ;不相等跳轉到比較處
JZ SHUCHU ;相等時跳到輸出位置
NARRAY1:
MOV AX,[BX]
MOV NARRAY[BX],AX
INC SI
ADD BX,2
MOV DX,[BX]
CMP DX,24H ;與結束符$比較,看是否結束
JNZ BIJIAO ;不相等跳轉到比較處
JZ SHUCHU ;相等時跳到輸出位置
SHUCHU :MOV AX,0 ;輸出正數的個數
MOV AX,DI
DIV Z
PUSH AX
CMP AL,0
JZ AA
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
AA:POP AX
MOV AL,0
ADD AH,30H
MOV DL,AH
MOV AH,02H
INT 21H
MOV AX,0 ;輸出空格
ADD AL,20H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AX,0 ;輸出負數的個數
MOV AX,SI
DIV Z
PUSH AX
CMP AL,0
JZ BB
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
BB:POP AX
MOV AL,0
ADD AH,30H
MOV DL,AH
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
編寫將一個包含有20個數據的數組M分成兩個數組,正整數數組P和負數數組N ,分別把這兩個數組中的數據的個數顯示出來
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.