[BX]和loop指令02 – 零基础入门学习汇编语言24

第五章:[BX]和loop指令02

让编程改变世界

Change the world by program

Loop指令

指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作:

(cx)=(cx)-1;

判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。

从上面的描述中,我们可以看到,cx中的值影响着loop指令的执行结果。

通常(注意,我们说的是通常)我们用loop指令来实现循环功能,cx 中存放循环次数。

这里我们讲解loop指令的功能,关于loop指令如何实现转至标号处的细节,将在后面的课程中讲解。下面我们通过一个程序来看一下loop指令的

具体应用:

任务1:编程计算2^2,结果存放在ax中。

任务1分析

设(ax)=2,可计算:(ax)= (ax)2,最后(ax)中为2∧2的值。N2可用N+N 实现。

程序代码:

assume cs:code

code segment

    mov ax,2

    add ax,ax

    mov ax,4c00h

    int 21h

code ends

end

任务2:编程计算2^3。

任务2分析

2^3=222,若设(ax)=2,可计算:(ax)= (ax)22,最后(ax)中为2^3的值。N*2可用N+N 实现。

程序代码:

assume cs:code

code segment

    mov ax,2

    add ax,ax

    add ax,ax

    mov ax,4c00h

    int 21h

code ends

end

任务3:编程计算2^12。

任务3分析

2^12=222222222222,若设(ax)=2,可计算:(ax)= (ax)22222222222,最后(ax)中为2^12的值。N*2可用N+N 实现。

程序代码:

assume cs:code

code segment

    mov ax,2

    ;做11次add ax,ax

    mov ax,4c00h

    int 21h

code ends

end

按照我们的算法,计算2^12需要11条重复的指令add ax, ax。我们显然不希望这样来写程序,这里,可用loop来简化我们的程序。

使用loop指令之后的代码

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

(1)标号在汇编语言中,标号代表一个地址,此程序中有一个标号s 。它实际上标识了一个地址,这个地址处有一条指令:add ax,ax。

(2)loop s

CPU 执行loop s的时候,要进行两步操作:

(cx)=(cx)-1;

判断cx 中的值,不为0 则转至标号s 所标识的地址处执行(这里的指令是“add ax,ax),如果为零则执行下一条指令(下一条指令是mov ax,4c00h)。

(3)以下三条指令

mov cx,11

s: ddd ax,ax

loop s

执行loop s时,首先要将(cx)减1,然后若(cx)不为0,则向前转至s处执行add ax,ax。所以,我们可以利用cx来控制add ax,ax的执行次数。

下面我们详细分析一下这段程序的执行过程,从中体会如何用cx 和loops 相配合实现循环功能。

视频下载
技术, IT技术, 汇编语言, 视频教程


风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部