如何解决如何理解下面的代码片段
针对上下文:由于存在在线课程,一些印度大学的计算机课程已减少为教师,他们只是给我们提供代码并期望我们死记硬背地学习。
程序将计算给定数组中+ ve和-ve的数量。 The entire code is here。
我的问题来自第45至59行(如下所示)
mov esi,arr
mov ecx,arr_size ;Array counter i.e. 6
mov ebx,0; ;counter for +ve nos
mov edx,0; ;counter for -ve nos.
next_num:
mov eax,[esi] ; take no. in RAX
rcl eax,1 ; rotate left 1 bit to check for sign bit
jc negative
positive:
inc ebx ; no carry,so no. is +ve
jmp next
negative:
inc edx ; carry,so no. is -ve
next:
add esi,4 ; 32 bit nos i.e. 4 bytes
loop next_num
在上面的代码中,据我所知,我将数组的起始位置存储在ESI寄存器中,并扫描每个元素并检查其是否为正值
但是,如何知道何时到达数组末尾?
代码正在维护ECX寄存器,但未使用它。那为什么为什么不连续运行呢?
是否还存在带有DEC ECX和JE 0指令的某种循环?
解决方法
是否还存在带有DEC ECX和JE 0指令的某种循环?
这几乎就是loop
instruction的作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。