汇编入门学习笔记 分支程序举例
题目 设有三个单字节无符号数存放在BUFFFER开始的缓冲区中,写一个能将它按大到小重新排列的程序
代码如下:
DATAS SEGMENT ;此处输入数据段代码 BUFFER DB 87,234,123 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV SI,OFFSET BUFFER ;将BUFFER的偏移地址传给SI(源地址寄存器) MOV AL,[SI] ;分别将三个数放到三个寄存器中 MOV BL,[SI+1] MOV Cl,[SI+2] CMP AL,BL ;排序 ;CMP 作用于两个无符号数 a,b时 ;作减法,若a-b>0 符号位cf=0,零位 zf=0 ;若a-b=0 cf=0 zf=1 ;若a-b<0 cf=1 zf=0 JAE NEXT1 ;JAE 若cf=0,转移到后面对应的过程NEXT1去 ;否则按顺序往下执行 XCHG AL,BL ;通过XCHG交换寄存器中的数据,达到排序的效果 NEXT1:CMP AL,CL JAE NEXT2 XCHG AL,CL NEXT2:CMP BL,CL JAE NEXT3 XCHG BL,CL NEXT3:MOV [SI],AL ;按从大到小的顺序依次存回缓冲区 MOV [SI+1],BL MOV [SI+2],CL MOV AH,4CH INT 21H CODES ENDS END START