关于检测点9.3问题
在检测点9.3中,assume cs:codecode segment
start:
mov ax,2000h
mov ds,ax
mov bx,0
s:
mov cl,
mov ch,0
inc cx;此条指令为题目要求补全的指令
inc bx
loop s
ok:
dec bx
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
我填inc cx读不懂,在此处认为应该是一条判断cx是否为0的语句。 本帖最后由 liuhui88126 于 2011-7-7 18:24 编辑
你用inc cx不就是死循环了嘛?应该是jczx ok,如果值为0,则跳到OK处执行。不为0,则继续循环检查。 你题目看清楚哦,判断偏移地址中的数值是否为哦,为0的话,将偏移地址放入DX 本帖最后由 陌路狂奔 于 2011-7-7 21:40 编辑
LOOP执行前,先执行CX=CX-1判断CX是否为0,如果为0就向下执行。如果用跳转指令JCXZ或者其它的,下面的DEC BX,应该就不用了, 个人感觉,这道题容易狗血的地方。
1.不是所有带有标号的指令都需要跳转或者调用
吃货YA鸭 发表于 2017-6-16 15:14
个人感觉,这道题容易狗血的地方。
1.不是所有带有标号的指令都需要跳转或者调用
是啊,他这里的OK完全没用,就是用来骗人的,前面也没讲标号可以随便标,要吐了
我上机试了下,死循环。。 的确,这个ok有没有都一样,不过程序没问题,基本思路是:
1.如果(bx)不为零,那么cx也不为零,程序执行到loop s处cx-1,此时cx不为零,程序继续循环往下找
2.一旦找到为0的值,那么cx=0,执行到loop时cx-1就不为零了,程勋还会循环执行。所以必须在之前再cx+1,才能保证到loop的时候cx-1=0,然后程序往下执行到ok处,但前面bx多加了个1,必须先减掉才是正确的偏移地址。
页:
[1]