| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 806 人关注过本帖
标题:求最大数问题。新人求教。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:10 
求最大数问题。新人求教。
RT 下面是书上的代码:

NAME SEARCH_MAX
STACK SEGMENT PARA STACK 'STACK'
  DB 1024 DUP(?)
STACK ENDS
DATA SEGMENT
BUFFER DB 1, 2, 4, 5, 3, 8
COUNT EQU $-BUFFER
MAX DB ?
DATA ENDS
CODE SEGMENT
START PROC FAR
  ASSUME CS:CODE, DS:DATA, SS:STACK
BEGIN: PUSH DS
  XOR AX, AX
  PUSH AX
  MOV DS, AX
  LEA BX, [BUFFER]
  MOV AL, [BX]
  INC BX
  MOV CX, COUNT
  DEC CX ;这里为什么要把CX减1?   
AGAIN: CMP AL, [BX]   
  JGE NEXT
  MOV AL, [BX]
NEXT: INC BX
  LOOP AGAIN
  MOV MAX, AL
  MOV AH, 09H ;显示不出最大数吗?
  INT 21H
  MOV AH, 4CH
  INT 21H
START ENDP
CODE ENDS
  END BEGIN
运行结果却是这个:
图片附件: 游客没有浏览图片的权限,请 登录注册
为什么?

2012-01-31 19:59
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
程序代码:

CODE SEGMENT
    START PROC FAR
        ASSUME CS:CODE, DS:DATA, SS:STACK
        BEGIN:
            mov ax,seg DATA
            mov ds,ax
            LEA BX, [BUFFER]
            MOV AL, [BX]    ;al = 1
            INC BX
            MOV CX, COUNT    ;cx = 6
            DEC CX ;这里为什么要把CX减1? 答 这里减1是5 循环次数
            AGAIN:
                CMP AL, [BX]  
                JGE NEXT    ;大于等于跳走
                MOV AL, [BX]    ;al小于[bx]里的数 存较大的数
            NEXT:
                INC BX
            LOOP AGAIN
            MOV MAX, AL
            mov dl,al
            add dl,'0'
            MOV AH, 02H ;显示不出最大数吗?
            ;功能09H
            ; 功能描述: 输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满
            ;入口参数: AH=09H
            ;DS:DX=待输出字符的地址
            ;说明:待显示的字符串以’$’作为其结束标志
            ;出口参数: 无
            ;功能02H
            ; 功能描述: 向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满
            ;入口参数: AH=02H
            ;DL=待输出字符的ASCII码
            ;出口参数: 无
            INT 21H
            MOV AH, 4CH
            INT 21H
    START ENDP
CODE ENDS
END BEGIN



建议 注意代码风格 这点对汇编尤其重要
2012-01-31 21:09
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
谢谢 你 得到正确结果了,

我应该用大写还是小写?

梅尚程荀
马谭杨奚







                                                       
2012-01-31 21:57
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
        
为什么要加上MOV   DL,AL
            ADD   DL, '0' ?
把mov ax,seg DATA的seg 去掉也行吧。

梅尚程荀
马谭杨奚







                                                       
2012-01-31 22:07
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
为什么要加上MOV   DL,AL
            ADD   DL, '0' ?

DL=待输出字符的ASCII码

0 和 '0' 不一样的 所以要加'0'

把mov ax,seg DATA的seg 去掉也行吧。

我喜欢这么写 去掉应该也对

我应该用大写还是小写?

呃 这个不好回答 你喜欢用大写就用大写 喜欢用小写就小写
2012-01-31 22:22
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
为什么要加上MOV   DL,AL
            ADD   DL, '0' ?

DL=待输出字符的ASCII码

0 和 '0' 不一样的 所以要加'0'

我把MOV DL, AL去掉后结果是6,为什么?

梅尚程荀
马谭杨奚







                                                       
2012-01-31 22:45
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
还有 如果把BUFFER DB 1, 2, 4, 5, 3, 8中的数改成大于等于10的数,程序就不在输出数而是输出一个字符

梅尚程荀
马谭杨奚







                                                       
2012-01-31 23:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
没赋值 是几都可能。。
2012-01-31 23:04
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用有容就大在2012-1-31 23:03:19的发言:

还有 如果把BUFFER DB 1, 2, 4, 5, 3, 8中的数改成大于等于10的数,程序就不在输出数而是输出一个字符

这是自然 因为没有好的输出函数 要输出复杂一点的得自己写了

因为你这里没有多位 我就简单处理了。。


[ 本帖最后由 zklhp 于 2012-1-31 23:14 编辑 ]
2012-01-31 23:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
哦 原来这样 谢谢Z版这么热心啊。

梅尚程荀
马谭杨奚







                                                       
2012-01-31 23:14
快速回复:求最大数问题。新人求教。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019393 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved