《汇编语言》王爽 实验10 (3) 有一句,我不能理解,下面我贴出来,标记出来

2025-01-21 04:44:38
推荐回答(3个)
回答1:

s0: mov dx,0
div bx
add dx,30h
push dx
mov cx,ax
inc si
inc cx ;这里为什么要加???
loop s0
注意:1、下面这一句loop,它是循环指令,循环次数由计数寄存器CX指定。是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次。执行LOOP指令时,CPU自动将CX的值减1。
2、AX的值不确定,AX可能为0,mov cx,ax CX就有可以为0,为保证LOOP至少循环2次,除法的高低位才能计算完成,避免CX= -1,所以给CX+1,

回答2:

没有这一步的话,商为0时,0-1,CX就变成FFFF了,就无限循环了,用jmp short s0更灵活

回答3:

因为商为0时还要计算一步,输出余数,所以要多执行一步,Inc cx