求最小值为什么没有输出结果?
求一组十进制无符号数(2位数)的最小值
,源码如下,为什么没有结果。由于是刚学汇编,调了很久也没找到问题所在,还请各位大虾帮帮忙
DATASEGMENT PARA
BLOCKDB "52 ", "14 ", "56 ", "85 ", "34 "
DB "63 ", "38 ", "70 ", "18 ", "69 "
COUNTEQU $-OFFSET BLOCK
MAXDB2 DUP(?)
DATAENDS
CSEGSEGMENTPARA 'CODE '
STARTPROCFAR
ASSUMECS:CSEG, DS:DATA
MOVAX, DATA
MOV DS, AX
MOVSI, OFFSET BLOCK
MOVBX, OFFSET MAX
MOVCX, COUNT
MOVDH, [SI]
MOVDL, [SI+1]
INC SI
INC SI
COMP:LODSB
MOVAH, AL
LODSB
CMPAX, DX
JGNEXT
MOVDX, AX
NEXT:DECCX
LOOP COMP
MOV[BX], DH
MOV[BX+1], DL
PRINT:MOVBX, OFFSET MAX
MOV DL, [BX]
MOVAH, 2
INT21H
MOVDL, [BX+1]
INT21H
MOVAH, 4CH
INT21H
STARTENDP
CSEGENDS
ENDSTART
[解决办法]
...
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 就是没有显示了