| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:刚学汇编,请高手帮忙~急
只看楼主 加入收藏
hiwwr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-4-11
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
刚学汇编,请高手帮忙~急
我刚刚学汇编语言,现在有个问题请教各位~
某科室共9人,统计其工资在800——900之间的人数,并用十进制显示出来。
我编的代码如下:
程序代码:
.486
DATAS SEGMENT USE16
    GRADE DW 1000,1200,840,880,750,770,890,900,600,840;此处输入数据段代码 
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
BEG:
    MOV AX,DATAS
    MOV DS,AX
    MOV CL,0
    MOV CH,9
    MOV SI,OFFSET GRADE
AGAIN:
    MOV BX,[SI]
    CMP BX,800
    JNB LAST
    CMP BX,900
    JNA LAST
    INC CL
    INT 21H
    JMP LAST
LAST:
    INC SI
    DEC CH
    JNZ AGAIN    
    MOV AH,4CH
    INT 21H
CODES ENDS
   END BEG


执行结果是错误的:
Write fault error writing device PRN
Abort,Retry,Ignore,Fail?
请高手指教!O(∩_∩)O谢谢~
顺便问一下怎么把统计的人数以十进制显示出来?
还有我是用MASMPlus编译的,怎么解决窗口执行后立刻消失的问题?
新手,问的问题也许有点幼稚,让各位大侠见笑~
 
搜索更多相关主题的帖子: 汇编 
2010-04-14 20:10
codewriter
Rank: 2
等 级:论坛游民
帖 子:2
专家分:30
注 册:2010-4-7
收藏
得分:20 
DATAS SEGMENT USE16
    GRADE DW 1000,1200,840,880,750,770,890,900,600,840
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
BEG:
    MOV AX,DATAS
    MOV DS,AX
    MOV CL,00H
    MOV CH,09H
    mov al,00H
    MOV SI,OFFSET GRADE
AGAIN:
    MOV BX,[SI]
    CMP BX,800
    call  LAST
    loop AGAIN
    mov ax,4c00H
    mov al,cl
    int 10H
    mov ax,4c00H
    INT 21H
   
LAST:   
    cmp bx,900
    inc  cl  
    ret
CODES ENDS
   END BEG


我的思路不知你明白了没有,我大体说一下,是在主代码段判断某一人工资是否大于800,如果是大于800就调用子程序判断是否小于900,如果小于900那就是cl寄存器加1,然后返回到主代码段继续循环判断其他的工资是否大于800且小于900,如此循环就能够得到所要的人数,俺说的不知楼主是否清楚了,俺也没有调试,你自己调试吧,祝你顺利。
2010-04-15 20:53
快速回复:刚学汇编,请高手帮忙~急
数据加载中...
 
   



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

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