
这是个用汇编语言编写的循环程序段,我觉得他的原理有问题,特意向大家求证下!
自学汇编语言时,书上出现了下面的这个循环程序段,我觉得它的原理有问题程序如下:题目:实现自然数1~100的累加。...MOVCX,100MOVAX,0MOVBX,0AGA...
自学汇编语言时,书上出现了下面的这个循环程序段,我觉得它的原理有问题
程序如下:
题目:实现自然数1~100的累加。
.
.
.
MOV CX,100
MOV AX,0
MOV BX,0
AGAIN: ADD AX,BX
INC BX
LOOP AGAIN
.
.
.
循环指令“LOOP 标号”的功能是:(CX) <-- (CX) (-1,(CX)≠ 0,则转至标号处执行,直至(CX)= 0,继续执行后续程序。
这样按照程序推算下去,当(CX )由2减1变成1后,经条件判断,条件成立执行循环,此时自然数刚好轮到加99,可是加完99后,(CX )减1变成0,式子(CX)≠ 0不成立,所以循环停止,继续执行后续程序,那么就只是从1加到99,而没有加100。
这就是我的分析了,我想我的分析应该在哪里出了问题,但自己又难以发现,
所以向大家求助,希望各位帮帮忙,谢谢哒 - !-
很抱歉 我没有积分了。。。 展开
程序如下:
题目:实现自然数1~100的累加。
.
.
.
MOV CX,100
MOV AX,0
MOV BX,0
AGAIN: ADD AX,BX
INC BX
LOOP AGAIN
.
.
.
循环指令“LOOP 标号”的功能是:(CX) <-- (CX) (-1,(CX)≠ 0,则转至标号处执行,直至(CX)= 0,继续执行后续程序。
这样按照程序推算下去,当(CX )由2减1变成1后,经条件判断,条件成立执行循环,此时自然数刚好轮到加99,可是加完99后,(CX )减1变成0,式子(CX)≠ 0不成立,所以循环停止,继续执行后续程序,那么就只是从1加到99,而没有加100。
这就是我的分析了,我想我的分析应该在哪里出了问题,但自己又难以发现,
所以向大家求助,希望各位帮帮忙,谢谢哒 - !-
很抱歉 我没有积分了。。。 展开
2个回答
展开全部
分析的对
准确的说是从0加到99,加了100次
问题就在BX的初始值不正确
MOV CX,100
XOR AX,AX
MOV BX,1
AGAIN: ADD AX,BX
INC BX
LOOP AGAIN
准确的说是从0加到99,加了100次
问题就在BX的初始值不正确
MOV CX,100
XOR AX,AX
MOV BX,1
AGAIN: ADD AX,BX
INC BX
LOOP AGAIN
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询