assume cs:code
code segment
start:mov ax, 2000h
mov ds, ax
mov bx, 0
s:mov cl, [bx]
mov ch, 0
____________
inc bx
loop s
ok:dec bx
mov dx, bx
mov ax, 4c00h
int 21h
code ends
end start
=======================================================
(1)当[0]=0,cx=0
由于出现loop指令而不需循环,所以此空为inc cx
cx=1
bx=1
不执行loop指令
bx=0(刚好为其偏移地址)
dx=0
(2)当[1]=0
1)cx!=0(假设[0]=5,cx=0005)
第二次cx=0(由第一次inc bx后mov cl,[bx]得到)
2)(填inc cx)
3)bx=1第一次,第二次bx=2(不执行loop)
4)执行1次loop指令后,会出错(所以填inc cx)
5)bx=2-1=1(刚好为其偏移地址)
(2)当[2]=0
1)cx!=0(假设[0]=3,cx=0003;[1]=5,cx=0005)
第三次cx=0(由第二次inc bx后mov cl,[bx]得到)
2)(填inc cx)
3)bx=1第一次,第二次bx=2,第三次bx=3(不执行loop)
4)执行2次loop指令后,会出错(所以填inc cx)
5)bx=3-1=2(刚好为其偏移地址)