汇编初学者求助

Sergio_ly 2016-10-09 08:50:00
本人学校里初学汇编,遇到以下问题,不能发现代码错误,对debug功能还不是太熟悉。。。。

;分类统计字数组data中正数、负数和零的个数,
;并分别存入内存字变量Positive、Negative、Zero中,
;数组元素个数保存在其第一个字中,
;使用Debug查看Positive、Negative、Zero三个变量的数据
;13,-413,21,0,23,785,324,43,53,-34,23,0,0,-873
datarea segment
data dw 13,-413,21,0,23,785,324,43,53,-34,23,0,0,-873
Positive dw 0
Negative dw 0
Zero dw 0
datarea ends

code segment
assume cs:code,ds:datarea
start:
main proc far
push ds
sub ax,ax
push ax

mov ax,datarea
mov ds,ax

mov bx,0
mov cx,data[bx]
add bx,2
rotate:
cmp word ptr data[bx],0
add bx,2
jl nega
jg pos
je zer
loop rotate

nega:
inc Negative
jcxz exit
jmp short rotate
pos:
inc Positive
jcxz exit
jmp short rotate
zer:
inc Zero
jcxz exit
jmp short rotate
exit:
ret

main endp
code ends
end start

...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-10-10
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。
zara 2016-10-10
  • 打赏
  • 举报
回复
;  ...
mov bx,0
mov cx,data[bx]
rotate:
add bx,2 ;* 该指令影响标记位进而破坏cmp的结果
cmp word ptr data[bx],0
; add bx,2 ;*-
jl nega
jg pos

zer:
inc Zero

l_lp:
loop rotate

jmp exit ;*+

nega:
inc Negative
jmp l_lp

pos:
inc Positive
jmp l_lp

exit:
ret

main endp
code ends
end start

21,459

社区成员

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

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