工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1208|回复: 4

考高程的进来看看-讨论这个程序!我觉得有问题!

[复制链接]
发表于 2003-9-4 16:19 | 显示全部楼层 |阅读模式
这是人民邮电出版社出版的《CASL汇编语言基础知识与试题精解》一书中讲解循环结构的一个例题,在书的52页!原题目如下:
#############################
在一数目确定的数据序列中找出最大数与最小数。假设数据的个数为256个,全部为无符号整数,无序存放在存储区域DATA中,要求将最大数存放在GR1中,将最小数存放在GR2中。
给出的程序如下:
START
LEA GR3, 255
LEA GR1, #0
LEA GR2, #FFFF
BEG CPL GR1, DATA, GR3
JMI FNDG
CPL GR2, DATA, GR3
JZE STOP
JPZ FNDL
FNDG LD GR1, DATA, GR3
JMP STOP
FNDL LD GR2, DATA, GR3
STOP LEA GR3, -1, GR3
JPZ BEG
DATA DS 256
END
#############################
我认为上面的程序有很大的漏洞,主要是指在FNDG行的前一行,应该加一个无条件跳转至BEG行,因为如果不加的话,假设所取值(GR3+DATA)为介于GR1和GR2之间,那么程序流程会发生错乱,比如现在(GR1)=25;(GR2)=3,((GR3)+DATA)=7,那么程序会一直FNDG上一行,由于没有跳转指令回到BEG行,所以将执行FNDG行,最后改变GR1中的值,而这一改变是错误的!
所以我认为正确的程序应该是:
#############################
在一数目确定的数据序列中找出最大数与最小数。假设数据的个数为256个,全部为无符号整数,无序存放在存储区域DATA中,要求将最大数存放在GR1中,将最小数存放在GR2中。
给出的程序如下:
START
LEA GR3, 255
LEA GR1, #0
LEA GR2, #FFFF
BEG CPL GR1, DATA, GR3
JMI FNDG
CPL GR2, DATA, GR3
JZE STOP
JPZ FNDL
JMP BEG '《====
FNDG LD GR1, DATA, GR3
JMP STOP
FNDL LD GR2, DATA, GR3
STOP LEA GR3, -1, GR3
JPZ BEG
DATA DS 256
END
#############################
不知道分析得是否正确,请高手加以指点!谢谢
发表于 2003-9-5 03:04 | 显示全部楼层
应该是JMP STOP吧
不然那样是无限循环阿
回复

使用道具 举报

发表于 2003-9-7 10:48 | 显示全部楼层
汇编有点难哦,,死了
回复

使用道具 举报

发表于 2003-9-9 19:43 | 显示全部楼层
CASL,上一年考过的,全忘光光了[em05]
回复

使用道具 举报

发表于 2003-10-28 02:24 | 显示全部楼层
我还没考呢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-5-29 05:12

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表