ASSUME CS: CSEG, DS: DSEG
START: PUSH DS £»ÉèÖ÷µ»ØDOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX £»¸øDS¸³Öµ
BEGIN: MOV CX, COUNT
LEA BX, ARRAY
LEA SI, ARRAY1
LEA DI, ARRAY2
BEGIN1: MOV AX, [BX]
CMP AX, 0 £»ÊǸºÊýÂ룿
JS FUSHU
MOV [SI], AX £»ÊÇÕýÊý£¬´æÈëÕýÊýÊý×é
INC COUNT1 £»ÕýÊý¸öÊý+1
ADD SI, 2
JMP SHORT NEXT
FUSHU: MOV [DI], AX £»ÊǸºÊý£¬´æÈ븺ÊýÊý×é
INC COUNT2 £»¸ºÊý¸öÊý+1
ADD DI, 2
NEXT: ADD BX, 2
LOOP BEGIN1
LEA DX, ZHEN £»ÏÔʾÕýÊý¸öÊý
MOV AL, COUNT1
CALL DISPLAY £»µ÷ÏÔʾ×Ó³ÌÐò
LEA DX, FU £»ÏÔʾ¸ºÊý¸öÊý
MOV AL, COUNT2
CALL DISPLAY £»µ÷ÏÔʾ×Ó³ÌÐò
RET
MAIN ENDP
£»--------------------------------------------------------------------------
DISPLAY PROC NEAR £»ÏÔʾ×Ó³ÌÐò
MOV AH, 9 £»ÏÔʾһ¸ö×Ö·û´®µÄDOSµ÷ÓÃ
INT 21H
AAM £»½«(AL)ÖеĶþ½øÖÆÊýת»»Îª¶þ¸ö·ÇѹËõBCDÂë
ADD AH, ¡®0¡¯ £»±äΪ0¡«9µÄASCIIÂë
MOV DL, AH
MOV AH, 2 £»ÏÔʾһ¸ö×Ö·ûµÄDOSµ÷ÓÃ
INT 21H
ADD AL, ¡®0¡¯ £»±äΪ0¡«9µÄASCIIÂë
MOV DL, AL
MOV AH, 2 £»ÏÔʾһ¸ö×Ö·ûµÄDOSµ÷ÓÃ
INT 21H
LEA DX, CRLF £»ÏÔʾ»Ø³µ»»ÐÐ
MOV AH, 9 £»ÏÔʾһ¸ö×Ö·û´®µÄDOSµ÷ÓÃ
INT 21H
RET
DISPLAY ENDP £»ÏÔʾ×Ó³ÌÐò½áÊø
CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î
£»--------------------------------------------------------------------------
END START
5.7 ÊÔ±àдһ¸ö»ã±àÓïÑÔ³ÌÐò£¬Çó³öÊ×µØÖ·ÎªDATAµÄ100D×ÖÊý×éÖеÄ×îСżÊý£¬²¢°ÑËü´æ·ÅÔÚAXÖС£
´ð£º³ÌÐò¶ÎÈçÏ£º
BEGIN: MOV BX, 0
MOV CX, 100
COMPARE: MOV AX, DATA[BX] £»È¡Êý×éµÄµÚÒ»¸öżÊý
ADD BX, 2
TEST AX, 01H £»ÊÇżÊýÂð£¿
LOOPNZ COMPARE £»²»ÊÇ£¬±È½ÏÏÂÒ»¸öÊý
JNZ STOP £»Ã»ÓÐżÊý£¬Í˳ö

