注册 登录
编程论坛 汇编论坛

新手问一个弱弱的问题,希望老师们指点下

wwt406 发布于 2012-06-08 09:02, 1007 次点击
3.38    在下列程序的括号中分别填入如下指令:
(1)  LOOP           L20
(2)  LOOPE        L20
(3)  LOOPNE    L20
试说明在三种情况下,当程序执行完后,AX、BX、
CX、DX四个寄存器的内容分别是什么?
TITLE        
CODESG        SEGMENT
ASSUME  CS:CODESG, DS: CODSEG, SS: CODSEG
ORG    100H
BEGIN:    MOV    AX, 01
MOV    BX, 02
MOV    DX, 03
MOV    CX, 04
L20:   
INC        AX
ADD    BX, AX
SHR        DX, 1
       (    )
RET
CODESG         ENDS
END  BEGIN




我不明白的是到LOOPE  L20 和LOOPNE L20 这二条指令放进排括号里,相等和不等循环,这上面没有二个数比较,怎么知道相等和不等呢?纠结啊,大牛们,指点下吧,我郁闷起的
5 回复
#2
zklhp2012-06-08 09:43
指令不熟

loop

(CX)=(CX)-1或(ECX)=(ECX)-1;
 如果(CX)≠0或(ECX)≠0,转向“标号”所指向的指令,否则,终止循环,执行该指令下面的指令。

LOOPE/LOOPZ

它们除了要受CX或ECX的影响外,还要受标志位ZF的影响。其具体规定如下:

(1)、(CX)=(CX)-1或(ECX)=(ECX)-1; (不改变任何标志位)

(2)、如果循环计数器≠0且ZF=1,则程序转到循环体的第一条指令,否则,程序将执行该循环指令下面的指令。
#3
wwt4062012-06-08 12:29
回复 2楼 zklhp
   要是括号里放的LOOPE,上面的操作要循环几回呢?这是相等的循环,又让谁和谁相等呢。第二版书上面的例子循环前都有一个二个数比较
#4
zklhp2012-06-08 12:47
你根据上面的分析一下啊 难道要我分析么 又不是我的学习。。

要靠自己啊
#5
wwt4062012-06-08 13:31
回复 4楼 zklhp
想明白了,完全是根据ZF在决定,板主 ,3Q
#6
zklhp2012-06-08 13:32
记得结题
1