7.23 王爽汇编语言(二十)

中间笔记

jcxz 指令为有条件转移指令,所有的有条件转移指令都是短转移; "jcxz 标号" 等价于 if ((cx) == 0) jmp short 标号;(这属于 c 语言和汇编语言的综合描述,只是为了方便理解)

检测点 9.2

自己写的代码如下:

assume cs:code

code segment

start:
    mov ax, 2000h
    mov ds, ax
    mov bx, 0
s:
    mov cx, [bx]
    jcxz ok
    add bx, 1
    jmp short s
ok:
    mov dx, bx
    mov ax, 4c00h
    int 21h

code ends

end start

解析:上述代码写错了,自己没注意,然后看了下面参考链接后顿悟。 自己没有注意需要查找的是一个字节,而直接将[bx]处的值 mov 到了 cx 中; jcxz指令判断的是cx,是一个字,所以需要将cx寄存器的高位设置为0;

参考链接:https://www.jianshu.com/p/be954bf24afe 正确代码如下:

assume cs:code

code segment

start:
    mov ax, 2000h
    mov ds, ax
    mov bx, 0
s:
    mov cl, [bx]
    mov ch, 0
    jcxz ok
    inc bx
    jmp short s
ok:
    mov dx, bx
    mov ax, 4c00h
    int 21h

code ends

end start

总结

检测点 9.2 完成了~,今天做梦想起以前些许伤感的事情。

蓦然回首,已是物是人非。

不过也更加坚定了向前的决心,我辈岂是蓬蒿人~

Last Updated:
Contributors: Hunter-0x07