| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:[求助]汇编程序错哪了
只看楼主 加入收藏
linhaice
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-28
收藏
 问题点数:0 回复次数:6 
[求助]汇编程序错哪了




下面是我编的程序
STACK SEGMENT
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
M DB 21H,09H,32H,2DH,12H
N DB 5
PRINT DB 'THE BIGGEST NUM. IS:',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET M
MOV AL,[BX]
MOV CL,N
TT1:INC BX
CMP AL,[BX]
JNA TT2
MOV AL,[BX]
TT2:DEC CL
JNZ TT1
MOV BX,OFFSET M
MOV AH,09H
LEA DX,PRINT
INT 21H
MOV AH,02H
MOV DL,AL
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

题目是:数据段中已定义了一个有N个字数据的数组M,求出M中绝对值最大的数,并显示。 我是新手,谁能帮我看看哪错了谢谢啊

搜索更多相关主题的帖子: 汇编程序 
2006-10-28 22:00
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 

程序有几个可疑之处:
MOV AL,[BX] 两者类型不同;
JNA TT2 应该是JA TT2;
MOV DL,AL 最好放在MOV AH,02H之前;
因为最开始已经MOV AL,[BX],所以N应该为4.




2006-10-29 10:16
linhaice
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-28
收藏
得分:0 
还是不行啊!!怎么都没人看看啊
2006-10-30 18:11
srl9973
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-9-18
收藏
得分:0 
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET M
MOV AL,[BX]
MOV CL,N
TT1:INC BX
CMP AL,[BX]
JNA TT2 ; 改为 JA TT2
MOV AL,[BX]
TT2:DEC CL
JNZ TT1
MOV BX,OFFSET M ;;这条语句无用

;; 后面加上
mov bl,al ;;作用是保护好求得的最大值.因为用DOS调用时会破坏AL中的值

MOV AH,09H
LEA DX,PRINT
INT 21H
;;后面加上
mov dl,bl
mov cl,4
shl dl,4 ;;高四位转换成对应十六进制的ASCII码
add dl,30h
cmp dl,39h
jna jjj1
add dl,7
jjj1:
MOV AH,02H
;; 删掉 MOV DL,AL
INT 21H
;;后面加上
mov dl,bl ;;低四位转换成对应的十六进制的ASCII
and dl,0fh
add dl,30h
cmp dl,39h
jna jjj2
add dl,7
jjj2: int 21h

MOV AH,4CH
INT 21H
CODE ENDS
END START
2006-10-30 20:45
srl9973
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-9-18
收藏
得分:0 

同时N的值应先减1

2006-10-30 20:47
linhaice
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-28
收藏
得分:0 

谢谢了啊

2006-10-31 12:19
linhaice
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-28
收藏
得分:0 
STACK SEGMENT
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
M DB 21H,09H,32H,2DH,12H
N DB 5
PRINT DB 'THE BIGGEST NUM. IS:',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET M
MOV AL,[BX]
MOV CL,N
TT1:INC BX
CMP AL,[BX]
JA TT2
MOV AL,[BX]
TT2:DEC CL
JNZ TT1
MOV BL,AL
MOV AH,09H
LEA DX,PRINT
INT 21H
MOV DL,BL
MOV CL,4
MOV DL,CL
ADD DL,30H
CMP DL,39H
JNA TT3
MOV AH,02H
INT 21H
TT3:MOV AH,4CH
INT 21H
CODE ENDS
END START
这是修改以后的 为什么输出老是为0啊
2006-10-31 18:56
快速回复:[求助]汇编程序错哪了
数据加载中...
 
   



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

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