| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:新手求解,觉得汇编好难好难~~~~~~~~~~~~~~~
只看楼主 加入收藏
qiu1123
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:7
注 册:2011-6-10
结帖率:0
收藏
已结贴  问题点数:0 回复次数:4 
新手求解,觉得汇编好难好难~~~~~~~~~~~~~~~
题目。在内存已定义好一个容量为20B的数据组,请将数组中为0的项找出,统计0的个数,并删除数组中所有为0的项,将后续项向前压缩。。。
我做的··
START:
     BUF DB 12,21,32,54,0,65,32,65,26,0,32,55,88,97,46,2,9,84,25,96;
     MOV AX,DATAS
     MOV DS,AX
     MOV CX,20
     MOV BX,OFFSET BUF1
COMP:MOV AL,[BX]
     CNP AL,0
     INC BUF2
AGAIN:DX=CX
      [BX]=[BX+8]
      INC  8X
      LOOP AGAIN
      CX=DX
LOOP  CONP
      MOV AH,4CH
      INT 21H

我自己也知道很多错的~~~求给个正确的
搜索更多相关主题的帖子: 统计 
2011-06-12 22:38
qiu1123
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:7
注 册:2011-6-10
收藏
得分:0 
自己坐沙发,不客气了
2011-06-12 22:42
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:10 
做过的练习,改了一下。
程序代码:
assume    cs:code,ds:data
data    segment
mem    db    1,2,0,0,0,0,0,0,0,3,0,0,4,0,5,6,0,0,0,0,0,7
count    db    0
data    ends
code    segment
start:
    mov ax,data
    mov ds,ax

    mov bx,offset mem
    mov cx,lengthof mem
    push bx
    push cx
;
    mov ah,2
d1:
    mov dl,[bx]
    add dl,30h
    int 21h
    mov dl,20h
    int 21h
    inc bx
    loop d1

    mov dl,13
    int 21h
    mov dl,10
    int 21h

    pop cx
    pop bx
    
s1:
    push cx
    mov al,[bx]
    cmp al,0
    jz move
    jmp jx    
move:
    inc count
    mov si,bx
s2:
    mov al,[si+1]
    mov [si],al
    inc si
    
    loop s2
    dec bx
jx:
    pop cx
    inc bx
    loop s1
;
    mov cx,bx
    mov bx,offset mem
    mov ah,2
d2:
    mov dl,[bx]
    add dl,30h
    int 21h
    mov dl,20h
    int 21h
    inc bx
    loop d2
;
    mov ah,2
    mov dl,13
    int 21h
    mov dl,10
    int 21h
;
    mov al,count
    cmp al,9
    ja d3
    mov dl,al
    add dl,30h
    int 21h
    jmp done
d3:
    mov ah,0
    mov bl,10
    div bl
    push ax
    mov ah,2
    mov dl,al
    add dl,30h
    int 21h
    pop ax
    mov dl,ah
    mov ah,2
    add dl,30h
    int 21h    
done:    
    mov ah,4ch
    int 21h
code    ends
end    start

运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 ansic 于 2011-6-13 11:02 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-13 11:01
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:10 
assume cs:code

datas segment
BUF DB 12,21,32,54,0,65,32,65,26,0,32,55,88,97,46,2,9,84,25,96
buf2 db    lengthof BUF dup(?)
count db 0
datas ends


code segment
START:
     
     MOV AX,DATAS
     MOV DS,AX
    mov dx,0
     MOV CX,lengthof BUF
    mov si,offset buf2
     MOV BX,OFFSET BUF

COMP:MOV AL,[BX]
     CMP AL,0
    jne AGAIN

      INC  bx
    inc dx
   
AGAIN:
    mov ax,[bx]
    mov [si],ax
    inc si
    inc bx
    loop COMP

    mov count,dl

      MOV AH,4CH
      INT 21H

code ends
end start


上面这个程序能实现你的功能,但改动的比较大了

你的程序中,buf1没有定义,是buf啊
你把数据定义在代码段了,datas就无定义了啊
汇编中每条语句后边不用加 ;  
也没有 dx = cx 这样的赋值语句 ,赋值都用 mov dx,cx
另外你的循环好像实现不了你的功能

加油,我们都觉得汇编难,学进去就好了
2011-06-13 11:10
qiu1123
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:7
注 册:2011-6-10
收藏
得分:0 
真是谢谢了~~话说我学了半年,上课都是看小说的,上面那个还是自己看着乱编的。。
2011-06-13 15:17
快速回复:新手求解,觉得汇编好难好难~~~~~~~~~~~~~~~
数据加载中...
 
   



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

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