西殴 发表于 2017-6-5 22:44:00

jcxz 跳转问题

本帖最后由 西殴 于 2017-6-5 23:18 编辑

{:5_104:} 不好意思问了个蠢问题   自己弄明白了   
assume cs:code

data segment
        db 'abcdef',0
        db 'oluyoy',0
        db 'edfggs',0
        db 'fdfdga',0
data ends

code segment
        start:        mov ax,data
                        mov ds,ax
                        mov si,0               ;指向ds字符串首地址
                        mov cx,4
        s:                push cx
                        ;push si                        ;这里为什么要push si 如果不要行不行
                        call capital
                        ;pop si                       ;pop si
                        pop cx
                        add si,7                  ;第一行字符串改写完成 后si +7
                        loop s
                        mov ax,4c00H
                        int 21H
                       
        capital:        mov cl,                ;第一行字符串完成后这里的 si 不是应该是 000D 么 si 为7的话 cx 应该是000D啊
                        mov ch,0
                        jcxz ok
                        and byte ptr ,11011111b; 将data字符串改写成大写
                        inc si
                        jmp short capital
        ok:                ret
        code ends
end start

如果不要push si第二的db数据就不会改写   ds:【000D】为0 所以jcxz就直接跳转了
页: [1]
查看完整版本: jcxz 跳转问题