求最小值为什么没有输出结果?

dyz_1984 2007-06-18 09:29:18
求一组十进制无符号数(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
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyz_1984 2007-06-19
  • 打赏
  • 举报
回复
谢谢啊,按你思路运行了一下把JBE改为JGE就可以求出最小值了
zara 2007-06-19
  • 打赏
  • 举报
回复
...
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 就是没有显示了

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧