;编写程序,比较数组ARRAY中的三个16位补码数,并根据结果显示如下信息
;如果三个数都不相等则显示0
;如果三个数有两个相等则显示1
;如果三个数都相等则显示
DATA SEGMENT
ARRAY DW 1,1,1
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,ARRAY
MOV AX,[SI]
ADD SI,2
MOV BX,[SI]
ADD SI,2
MOV CX,[SI]
CMP AX,BX ;此题先把全相等和全不相等两种情况导出结果后再考虑最后一种
JE L1 ;情况会容易做很多
JNE L3
L1: CMP AX,CX
JE L2
JNE L6
L2: MOV AH,2 ;L1->L2导出全相等
MOV DL,32H
INT 21H
JMP EXIT
L3: CMP AX,CX
JNE L4
JE L6
L4: CMP BX,CX
JNE L5
JE L6
L5: MOV AH,2 ;L3->L4->L5导出全部相等
MOV DL,30H ;最后一种情况在这两个结果的基础上进行分析会容易很多
INT 21H
JMP EXIT
L6: MOV AH,2
MOV DL,31H
INT 21H
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START
;如果三个数都不相等则显示0
;如果三个数有两个相等则显示1
;如果三个数都相等则显示
DATA SEGMENT
ARRAY DW 1,1,1
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,ARRAY
MOV AX,[SI]
ADD SI,2
MOV BX,[SI]
ADD SI,2
MOV CX,[SI]
CMP AX,BX ;此题先把全相等和全不相等两种情况导出结果后再考虑最后一种
JE L1 ;情况会容易做很多
JNE L3
L1: CMP AX,CX
JE L2
JNE L6
L2: MOV AH,2 ;L1->L2导出全相等
MOV DL,32H
INT 21H
JMP EXIT
L3: CMP AX,CX
JNE L4
JE L6
L4: CMP BX,CX
JNE L5
JE L6
L5: MOV AH,2 ;L3->L4->L5导出全部相等
MOV DL,30H ;最后一种情况在这两个结果的基础上进行分析会容易很多
INT 21H
JMP EXIT
L6: MOV AH,2
MOV DL,31H
INT 21H
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START