一小段代码,不知道错在什么地方

flyswift 2003-08-30 01:15:03
datarea segment
data dw 03h,10h,67h,23h
datarea ends

prognam segment
main proc far
assume ds:data,cs:prognam
start:
push ds
mov ax,0
push ax

mov ax,datarea
mov ds,ax

cld
push di
mov cx,ds:[di]
add di,2
mov ax,10h
repne scasw
je delete
pop di
jmp short exit

delete:
jcxz dec_cnt
next_el:
mov bx,ds:[di]
mov ds:[di-2],bx
add di,2
loop next_el
dec_cnt:
pop di
dec word ptr ds:[di]
exit: ret
main endp
prognam ends
end start
程序目的是删除data字串中与ax中相同的元素,但总删不掉。请各位帮忙看一看,
谢谢
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
W32API 2003-08-30
  • 打赏
  • 举报
回复
repne scasw
je delete
......
delete:
jcxz dec_cnt
......
dec_cnt:
pop di
dec word ptr ds:[di]
exit: ret

不明白你的构想。。。

你不觉得你至少这里有问题吗?
flyswift 2003-08-30
  • 打赏
  • 举报
回复
那di就是0吧,运算后cx中等于03h
紫郢剑侠 2003-08-30
  • 打赏
  • 举报
回复
cld
push di
mov cx,ds:[di] ;di没有初始化罢?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧