首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

求最小值为什么没有输出结果?解决方法

2012-02-22 
求最小值为什么没有输出结果?求一组十进制无符号数(2位数)的最小值,源码如下,为什么没有结果。由于是刚学汇

求最小值为什么没有输出结果?
求一组十进制无符号数(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 就是没有显示了

热点排行