检测点9.3
assume cs:codecode segment
start: mov ax, 2000H
mov ds, ax
mov bx, 0
s: mov cl,
mov ch, 0
jcxz ok
inc bx
loop s
ok: dec bx
mov dx, bx
mov ax, 4c00H
int 21H
code ends
end start这题和上次9.2一样,不过就是把jmp无条件跳转转换为loop循环 如果的值为01H,赋给CL后,CX=0001H,执行,到LOOP时,CX=CX-1,loop失效,继续往下执行岂不是最后得到DX偏移地址是错误的? 同意2楼。
assume cs:code
code 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
这样比较正确。当(CX)=0时,inc cx;和loop s;会导致(CX)=0退出循环,得到偏移地址保存在DX中。 2,3楼很棒,感谢感谢终于懂了,我一直觉得那个空是多余的,现在懂了。 nulptr 发表于 2015-5-18 21:51
同意2楼。
这样比较正确。当(CX)=0时,inc cx;和loop s;会导致(CX)=0退出循环,得到偏移地址保存在DX中 ...
前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊 719871782 发表于 2017-12-15 22:36
前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊
我错了请见谅啊 719871782 发表于 2017-12-15 22:36
前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊
LOOP指令会先执行cx-1项,所以我觉得不存在你说的无法跳出循环吧 酿泉为酒 发表于 2018-1-25 11:18
LOOP指令会先执行cx-1项,所以我觉得不存在你说的无法跳出循环吧
666
布谷lyc 发表于 2018-5-10 09:49
666
3楼正解,3楼和7楼分析很棒,执行loop指令时,cx还会再减去1,所以不光是不存在跳不出循环的问题,而且这个inc cx用的精妙
页:
[1]