王爽汇编第9章检测点9.2简单小问题

时间:2021-06-13 17:37:20

assume cs:code

code segment

 start: mov ax,2000h

        mov ds,ax

        mov bx,0

     s: mov cl,ds:[bx];上面两行是原题答案。但是这里为什么要CH置为0?貌似不用这个语句,最后结果也是一样的啊!
        mov ch,0      ;上面两行是原题答案。但是这里为什么要CH置为0?貌似不用这个语句,最后结果也是一样的啊!
        ;mov al,[bx]  ; 下面自己写的这两行就是没用CH置为0,效果一样哦。

        ;mov cl,al    ; 下面自己写的这两行就是没用CH置为0,效果一样哦。

        jcxz ok        ;当cx=0时,CS:IP指向OK

        inc bx      

        jmp short s 

    ok: mov dx,bx

        mov ax ,4c00h

        int 21h

code ends

end start





3 个解决方案

#1


做题不能想当然,你要看一下cx初始只是多少。

你要想为什么效果一样?

#2


引用 1 楼  的回复:
做题不能想当然,你要看一下cx初始只是多少。

你要想为什么效果一样?

谢谢你的提醒! 我明白了。

#3


;mov al,[bx] 
 ;mov cl,al 

用上面两句,如果 ch 为 1    那么 jcxz ok 将永远跳转不到ok , 

因为 jcxz 指令是判断 cx 值为0 才跳转

mov cx,[bx] 也不行,  如果出现 00 01 的数据时,  cx = 0100  也将条状不了

#1


做题不能想当然,你要看一下cx初始只是多少。

你要想为什么效果一样?

#2


引用 1 楼  的回复:
做题不能想当然,你要看一下cx初始只是多少。

你要想为什么效果一样?

谢谢你的提醒! 我明白了。

#3


;mov al,[bx] 
 ;mov cl,al 

用上面两句,如果 ch 为 1    那么 jcxz ok 将永远跳转不到ok , 

因为 jcxz 指令是判断 cx 值为0 才跳转

mov cx,[bx] 也不行,  如果出现 00 01 的数据时,  cx = 0100  也将条状不了