美文网首页
8086汇编(28)寄存器冲突的问题

8086汇编(28)寄存器冲突的问题

作者: 迷心迷 | 来源:发表于2019-04-04 17:52 被阅读0次

    寄存器冲突的问题

    我们在子程序中使用的寄存器,很可能在主程序中也要使用,造成了寄存器使用上的冲突。解决的方法是,在子程序的开始将子程序中所有用到的寄存器中的内容都保存起来,在子程序返回前再恢复。可以用栈来保存寄存器中的内容。

    以后,我们编写子程序的标准框架如下:

    子程序开始:

    子程序中使用的寄存器入栈

    子程序内容

    子程序中使用的寄存器出栈

    返回(ret、retf)

    示例:设计一个子程序,功能:将一个全是字母,以0结尾的字符串,转化成大写。

    assume cs:code
    
    data segment
             db     'word',0
             db     'unix',0
             db     'wind',0
             db     'good',0
    data ends
    
    code segment
    
    start:
                  mov ax,data
                  mov ds,ax
            mov bx,0
    
            mov cx,4
    s:
            mov si,bx
            call capital
            add bx,5
            loop s
    
            mov ax,4c00h
            int 21h
    
    capital:
            push cx
            push si
    change:
            mov cl,[si]
            mov ch,0
            jcxz ok
            and byte ptr [si],11011111b
            inc si
            jmp short change
    
    ok:
            pop si
            pop cx
            ret  
    
    code ends
    end start
    

    相关文章

      网友评论

          本文标题:8086汇编(28)寄存器冲突的问题

          本文链接:https://www.haomeiwen.com/subject/zimqiqtx.html