| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 967 人关注过本帖
标题:存储器中有N字数组Array,统计其中正数,负数和零的个数,并分别存放在DI, ...
取消只看楼主 加入收藏
紫色年华
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:103
注 册:2012-11-30
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:3 
存储器中有N字数组Array,统计其中正数,负数和零的个数,并分别存放在DI,SI,AX寄存器中的程序,有点问题,望高手指教!谢谢!
这是我自己写的一个在存储器中有N字数组Array,统计其中正数,负数和零的个数,并分别存放在DI,SI,AX寄存器中的程序,程序倒是可以运行,但运行结果有问题,希望大家可以帮我看一下!

data segment
    Array DW -1,3,0,1,-4,2,0,-5,6,8
    Zhengshu DW ?
    Fushu DW ?
    Ling DW ?
   
    pkey db "press any key...$"
ends

stack segment
    dw   128  dup(0)
ends

code segment  

start:
    mov ax, data
    mov ds, ax
    mov es, ax
   
    XOR DI,DI     
    XOR SI,SI         
    XOR AX,AX
    LEA BX,Array

LOP:
    MOV AL,[BX]                       
    CMP AL,00H
    JZ  END3
    JA  END2
   
    INC SI
    ADD Fushu,SI
    ADD BX,Array
    JMP LOP

END2:         
    INC DI
    ADD Zhengshu,DI
    ADD BX,Array
    JMP LOP

END3:         
    INC AX
    ADD Ling,AX
    ADD BX,Array   
    JMP LOP  
            
    lea dx, pkey
    mov ah, 9
    int 21h        ; output string at ds:dx
   
    ; wait for any key....   
    mov ah, 1
    int 21h
   
    mov ax, 4c00h ; exit to operating system.
    int 21h   
ends

end start ; set entry point and stop the assembler.
2012-11-30 19:26
紫色年华
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:103
注 册:2012-11-30
收藏
得分:0 
对于这个程序,我想的是
    MOV AL,[BX]  ;把数组的第一个位赋给AL                     
    CMP AL,00H   ;比较AL和0的大小
    JZ  END3     ;如果AL-0是0(AL等于0),跳到END3,统计0的个数
    JA  END2     ;如果AL-0>0(AL>0),跳到END2,统计正数的个数
否则的话,执行下面这段程序,是统计负数的个数   
    INC SI
    ADD Fushu,SI
    ADD BX,Array  ;我想的是取数组里面的下一个值,不知道对不
    JMP LOP
    运行的结果是对正数的统计结果是1个,对负数的统计结果总是显示0,对零的统计结果在不断增加,是个死循环,我也是刚开始学汇编,不知道统计个数的那三小段程序有没有问题。
2012-12-01 09:50
紫色年华
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:103
注 册:2012-11-30
收藏
得分:0 
嘿嘿,我初次学汇编,可能写程序有点不规范,不过我会努力的!谢谢你!
我还想问一下,那个比较结束标志数是不是随便选个大点的数就行呀,我试了一下结果是对的
2012-12-02 10:33
紫色年华
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:103
注 册:2012-11-30
收藏
得分:0 
知道了,谢谢!
2012-12-02 20:38
快速回复:存储器中有N字数组Array,统计其中正数,负数和零的个数,并分别存放在 ...
数据加载中...
 
   



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

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