求一组十进制无符号数(2位数)的最小值
,源码如下,为什么没有结果。由于是刚学汇编,调了很久也没找到问题所在,还请各位大虾帮帮忙
DATA SEGMENT PARA
BLOCK DB "52 ", "14 ", "56 ", "85 ", "34 "
DB "63 ", "38 ", "70 ", "18 ", "69 "
COUNT EQU $-OFFSET BLOCK
MAX DB 2 DUP(?)
DATA ENDS
CSEG SEGMENT PARA 'CODE '
START PROC FAR
ASSUME CS:CSEG, DS:DATA
MOV AX, DATA
MOV DS, AX
MOV SI, OFFSET BLOCK
MOV BX, OFFSET MAX
MOV CX, COUNT
MOV DH, [SI]
MOV DL, [SI+1]
INC SI
INC SI
COMP: LODSB
MOV AH, AL
LODSB
CMP AX, DX
JG NEXT
MOV DX, AX
NEXT: DEC CX
LOOP COMP
MOV [BX], DH
MOV [BX+1], DL
PRINT: MOV BX, OFFSET MAX
MOV DL, [BX]
MOV AH, 2
INT 21H
MOV DL, [BX+1]
INT 21H
MOV AH, 4CH
INT 21H
START ENDP
CSEG ENDS
END START
------解决方案--------------------------------------------------------
...
MOV CX, (COUNT-2) ;* n 个数据寻最大值, 只需要进行 (n-1) 次比较
MOV DH, [SI]
MOV DL, [SI+1]
INC SI
INC SI
COMP:LODSB
MOV AH, AL
LODSB
CMP AX, DX
JBE NEXT ;* 当前值比预置的最大值小时才直接转走. 否则就成了取最小值了
...
; 原来是取最小值, 又多了一个最后的 0000 值, 所以显示的是 00,00 就是没有显示了