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
谢谢你的提醒! 我明白了。
#3
;mov al,[bx]
;mov cl,al
用上面两句,如果 ch 为 1 那么 jcxz ok 将永远跳转不到ok ,
因为 jcxz 指令是判断 cx 值为0 才跳转
mov cx,[bx] 也不行, 如果出现 00 01 的数据时, cx = 0100 也将条状不了
;mov cl,al
用上面两句,如果 ch 为 1 那么 jcxz ok 将永远跳转不到ok ,
因为 jcxz 指令是判断 cx 值为0 才跳转
mov cx,[bx] 也不行, 如果出现 00 01 的数据时, cx = 0100 也将条状不了
#1
做题不能想当然,你要看一下cx初始只是多少。
你要想为什么效果一样?
你要想为什么效果一样?
#2
谢谢你的提醒! 我明白了。
#3
;mov al,[bx]
;mov cl,al
用上面两句,如果 ch 为 1 那么 jcxz ok 将永远跳转不到ok ,
因为 jcxz 指令是判断 cx 值为0 才跳转
mov cx,[bx] 也不行, 如果出现 00 01 的数据时, cx = 0100 也将条状不了
;mov cl,al
用上面两句,如果 ch 为 1 那么 jcxz ok 将永远跳转不到ok ,
因为 jcxz 指令是判断 cx 值为0 才跳转
mov cx,[bx] 也不行, 如果出现 00 01 的数据时, cx = 0100 也将条状不了