就像在上面 c 语言程序中的“loop6”和“loop10”就是为了配合 goto (跳转)语句而给某行程序起的名字(标号)。
例如下图:
它的意思是:当 q 的值等于 14时,跳转到标号为 loop6 的那条程序语句继续执行, 也就是打印出 "Hello world"。
扩展资料:
goto语句一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
如: label: i++
loop: while(x<7)
goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
参考资料来源:百度百科-goto语句
参考资料来源:百度百科-循环语句
这个程序循环一次,是由CX存放的。
cx中存放的是循环的次数
编程计算2^12:
assume cs:code
code segment
mov ax,2
mov cx,11
s:add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
执行loop s时,首先要将(cx)减1,若(cx)不为0,则前往s处执行add ax,ax。
CPU执行LOOP指令的时候,要进行两步 *** 作:
1 (cx)=(cx)-1
2 判断cx中的值,不为零则转移到标号处执行程序,如果为零,则向下执行
例1 计算2^2 结果放在AX
CODE SEGMENT
ASSUME CS:CODE
MOV AX,2
ADD AX,AX
MOV AX,4C00H
INT 21H
code ENDS
END
例2 计算2^3 结果放在AX
CODE SEGMENT
ASSUME CS:CODE
MOV AX,2
ADD AX,AX
ADD AX,AX
MOV AX,4C00H
INT 21H
code ENDS
END
扩展资料:注意:
计算ffff:0-ffff:b单元中的数据之和,结果存储在dx中。
运算后的结果会不会查过dx所可以承受的存储范围。ffff:0-ffff:b是字节型数据,范围在0-255,12个这样的数,即使都是255相加也不会超过65535
不可以直接将数据累加在dx中。因为ffff:0-ffff:b是字节型数据8位,dx中存放16位数据。
不可以直接将数据累加到dl中,因为dl是8位寄存器,所容纳的数据的范围在0-255之间,ffff:0-ffff:b中的数据也都是8位,若仅向dl累加12个8位数据,可能会引起进位丢失的这种情况。
参考资料:百度百科-Loop
loop通常用作循环处理,语法格式:loop标识。cou执行loop指令需要两步:
1、(cx)=(cs)-1;
2、cx不为0的时候转到标号出执行,把IP改为标号的
偏移地址
,为0的时候执行loop下一条指令;
cx一般放循环次数;
格式框架如下:
movcx,循环次数
标号:循环执行的代码
loop标号
扩展资料
汇编中LOOP的使用
例:
assumecs:code
codesegment
movax,10
movcx,3
A:addax,ax
loopA
movax,4c00h
int21h
codeends
end
addax,ax位置在IP=0006的地址上,执行loopA时看到换成loop0006说明标识“A”编译成addax,ax的地址,这时候要执行我前面说的loop执行的两个步骤,
(cx)=(cx)-1=3-1=2cx为2不为0转到ip=0006执行循环
如果有很多次循环,如1000次,这样
单步运行
就很烦,这时候可以用g+偏移地址命令直接运行到你想要的指令处或者运行到loop处用p命令直接运行到循环的下一条指令处
参考资料来源:
百度百科
—
goto语句
参考资料来源:百度百科—
循环语句
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)