欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三个数降序排列(汇编)

程序员文章站 2022-05-28 13:02:50
...

问题描述

将X、Y、Z三个数按降序排序

数据段定义

X DB 20H
Y DB 50H
Z DB 30H

大致思路

AH—最大值

AL—中间值

BH–最小值

  • 如果X > Y
    • 继续判断Y是否大于Z
      • 如果大于(X > Y > Z)
      • 如果小于
        • 判断X是否大于Z
          • 如果大于 (X > Z > Y)
          • 如果小于(Z > X > Y)

我将 AH放置最大值、AL放置中间值、BH放置最小值

不是C语言常规思路,将XYZ放置对应的值

完整代码

DATA SEGMENT
	X DB 20H
	Y DB 50H
	Z DB 30H
DATA ENDS
	
CODE SEGMENT 'CODE'
	ASSUME CS:CODE, DS:DATA
	
	START:
		MOV AX , DATA
		MOV DS, AX
		;----
			MOV CL , X
			CMP CL , Y
			JA JudgeYZ
			
		
		JudgeYZ:
			MOV CL , Y
			CMP CL , Z
			JA XYZ
			MOV CH , X
			CMP CH, Z
			JA XZY
			
			MOV AH , Z 
			MOV AL , X
			MOV BH , Y
		
		XYZ:
			MOV AH , X
			MOV AL , Y
			MOV BH , Z
			
		XZY:
			MOV AH , X
			MOV AL , Z
			MOV BH , Y
			
		;---
		MOV AH,4CH
		INT 21H
CODE ENDS
	END START
	

注意

  • 如果跳转了,不主动跳回不会自动顺序继续执行的,而是在跳转的位置继续执行
  • CMP 不能直接比较两个直接数(寄存器)