| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 731 人关注过本帖
标题:NCRE 南开100题中有一题的答案我看不懂。。。
只看楼主 加入收藏
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
结帖率:100%
收藏
 问题点数:0 回复次数:3 
NCRE 南开100题中有一题的答案我看不懂。。。
一、请编制程序,其功能是:计算10个有符号字节数据的绝对值之和(字型),并找出绝对值最大的数及其所在的偏移地址,最后将它们依次存入指定的内存中,结果以FFH结束。
例如:
    内存中有 10H,01H,27H,00H,FEH,80H,00H,03H,FFH,01H
    结果为     BFH,00H,80H,05H,00H,FFH
    部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
    对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
程序代码:
         EXTRN    LOAD:FAR,SAVE:FAR
N        EQU      10
DSEG     SEGMENT
SOURCE   DB       N DUP(?)        
RESULT   DB       6 DUP(0)
MAX      DB       ?        
NAME0    DB       'INPUT1.DAT',0
NAME1    DB       'OUTPUT1.DAT',0
DSEG     ENDS
SSEG     SEGMENT STACK
         DB       256 DUP(?)
SSEG     ENDS
CSEG     SEGMENT
         ASSUME  CS:CSEG,SS:SSEG,DS:DSEG
START   PROC     FAR
        PUSH     DS
        XOR      AX,AX
        PUSH     AX
        MOV      AX,DSEG
        MOV      DS,AX
        MOV      ES,AX                ;置附加段寄存器
        LEA      DX,SOURCE            ;数据区起始地址
        LEA      SI,NAME0             ;原始数据文件名
        MOV      CX,N                 ;字节数
        CALL     LOAD                 ;从'INPUT1.DAT'中读取数据
;****BEGIN****
        LEA      SI,SOURCE
        LEA      DI,RESULT 
        MOV      DX,SI
        MOV      CX,N-1
        MOV      AL,[SI]
        ADD      AL,0
        JNS      P1        ;SF==0 正数
        NEG      AL            ;(1
P1:     MOV      MAX,AL
        ADD      [DI],AL
        ADC      [DI+1]            ;(2
GOON:   INC      SI
        MOV      AL,[SI]
        ADD      AL,0
        JNS      P2
        NEG      AL
P2:     ADD      [DI],AL
        ADC      [DI+1]            ;(3
        CMP      MAX,AL
        JAE      NEXT            ;(4
        MOV      MAX,AL
        MOV      DX,SI
NEXT:   LOOP     GOON
        ADD      DI,2
        MOV      AL,MAX
        MOV      [DI],AL
        INC      DI
        MOV      [DI],DX
        ADD      DI,2
        MOV      BYTE PTR [DI],0FFH    ;(5
;****END****
        LEA      DX,RESULT      ;结果数据区首址
        LEA      SI,NAME1       ;结果文件名
        MOV      CX,6           ;字节数
        CALL     SAVE           ;保存结果到文件
        RET
START   ENDP
CSEG    ENDS
        END    START

第二空和第三空的ADC指令为何只有一个参数?答案肯定错了,那么正确答案是什么?求解答。

[ 本帖最后由 Rexfield 于 2011-3-18 22:48 编辑 ]
搜索更多相关主题的帖子: 答案 源程序 绝对值 符号 
2011-03-18 22:47
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
收藏
得分:0 
找到原书了,不麻烦大家。

If you're not failing every now and again, it's a sign you're not doing anything very innovative.
2011-03-19 11:32
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
ADC [DI+1],0

技术问题,请不要以短消息方式提问
2011-03-19 15:08
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
ADC [DI+1],AH

技术问题,请不要以短消息方式提问
2011-03-19 15:09
快速回复:NCRE 南开100题中有一题的答案我看不懂。。。
数据加载中...
 
   



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

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