| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:南开的题,不明白阿
只看楼主 加入收藏
aaazzzzz
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-1-5
结帖率:75%
收藏
 问题点数:0 回复次数:1 
南开的题,不明白阿
我也是,先提个问!
请编制程序PROG1.ASM, 其功能是: 内存中连续存放着十六个12位无符号二进制数DB[11]DB[10]…DB[0],其存放格式均为DB[11] DB[10] DB[9] DB[8] DB[7] DB[6] DB[5] DB[4]│←─────── 低地址字节?───────→│DB[3] DB[2] DB[1] DB[0]  0  0  0  0│←──── 高地址字节 ────→│请判别这十六个12位二进制数是否大于800H;若大于800H,则相应地在内存中存入01H;否则,存入00H。最后存放这十六个12位二进制数中大于800H的数的个数n(n用一个字节表示)。
      例如:
      内存中有 12H,30H,84H,50H,80H,00H,……
      结果为   00H,01H,00H,… (共十六个字节),后跟n部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到OUTPUT1.DAT文件中。填空BEGIN和END之间已给出的源程序使其完整 (空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可), 或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。对程序必须进行汇编, 并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
          EXTRN      LOAD:FAR,SAVE:FAR
N         EQU         16
STAC      SEGMENT   STACK
           DB          128  DUP (?)
STAC      ENDS
DATA     SEGMENT
SOURCE  DB           N*2 DUP(?)
RESULT  DB           N+1 DUP(0)
NAME0   DB           'INPUT1.DAT',0
NAME1   DB           'OUTPUT1.DAT',0
DATA    ENDS           
CODE    SEGMENT      
          ASSUME    CS:CODE,DSATA,SS:STAC
START    PROC        FAR
           PUSH       DS
           XOR        AX,AX
           PUSH       AX
           MOV        AX,DATA
           MOV        DS,AX
           LEA        DX,SOURCE        ; 数据区起始地址
           LEA        SI,NAME0         ; 原始数据文件名
           MOV        CX,N*2           ; 字节数
           CALL       LOAD             ; 从 'INPUT1.DAT'中读取数据
;  **** BEGIN ****           
           MOV        CH,N
           MOV        CL,00H           ; 大于800H的数的个数n
           MOV        BX,0
           MOV        DX,0100H
           mov        di,offset result
           ;MOV        DI,_____________
PRO:       MOV        AH,[BX]
           MOV        AL,[BX+1]
           cmp        ax,8000h
           jbe        c_0
           ;CMP        AX,_________
           ;JBE        ___                 ; <=800H
           MOV        [DI],DH              ; >800H
           INC        CL
           INC        DI
           JMP        JUMP
C_0:       MOV        [DI],DL
           INC        DI
JUMP:      ADD        BX,2
           DEC        CH
           JNZ        PRO
           mov        [di],cl
           ;MOV        [DI],__
; ****  END  ****
           LEA        DX,RESULT    ; 结果数据区首址
           LEA        SI,NAME1     ; 结果文件名
           MOV        CX,N+1       ; 结果字节数
           CALL       SAVE         ; 保存结果到文件
         RET
START    ENDP
CODE     ENDS
END       START

input1.dat 内容如下:
FF F0 FF 00 F0 F0 0F F0 F0 00 0F 00 00 F0 00 00 00 50 05 00 50 00 0A A0 A0 A0 AA 00 AA A0 55 50
output1.dat 内容应当如下:
01 01 01 00 01 00 00 00 00 00 00 00 01 01 01 00
07


这一句cmp        ax,8000h
以为应该是cmp ax,0800h但这样一来output1.dat 当的结果就不一样了.大家给个说法?
搜索更多相关主题的帖子: 二进制 符号 
2011-03-02 23:39
tornodo
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-3-8
收藏
得分:0 
看看
2011-03-07 10:37
快速回复:南开的题,不明白阿
数据加载中...
 
   



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

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