编写程序,比较数组ARRAY中的三个16位补码数,并根据结果显示如下信息 :如果三个数都不相等则显示0 ;如果三个数有两个相等则显示1 ;如果三个数都相等则显示

版权声明: https://blog.csdn.net/weixin_42000150/article/details/80659465
;编写程序,比较数组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

猜你喜欢

转载自blog.csdn.net/weixin_42000150/article/details/80659465
今日推荐