美文网首页
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)寄存器冲突的问题

    寄存器冲突的问题 我们在子程序中使用的寄存器,很可能在主程序中也要使用,造成了寄存器使用上的冲突。解决的方法是,在...

  • 记一波汇编考前突击

    汇编问题列表 (1)8086CPU是多少位的?寄存器有哪些?名称是什么? 8086CPU是16位的 寄存器8个16...

  • 【8086汇编】-- 常用寄存器

    学习汇编最重要的是就是学习寄存器和指令,8086汇编拥有14个16位的寄存器,分别AX、BX、CX、DX、SI、D...

  • iOS 汇编Day01

    iOS 汇编 8086CPU 机器语言 由0和1组成 将寄存器BX的内容送入寄存器AX汇编语言 用符...

  • 十七.AT&T汇编

    之前将的都是8086汇编,现在聊一聊AT&T汇编,基本都是相同的汇编就是使用寄存器存储数据和操作内存; ios基本...

  • 8086汇编 - 寄存器

    寄存器 CPU的典型构成内部部件之间由总线相连 CPU的典型构成 对程序员来说,CPU中最主要部件是寄存器,可以通...

  • 汇编语言 学习笔记(一)

    汇编语言学习笔记 一、概论 8086,8088 构架 1. 寄存器 8个通用寄存器 AX [AH, AL] - 累...

  • 8086汇编之寄存器

    8086 有14个16位寄存器 一. 通用寄存器(8个) 1. 数据寄存器(4个) 特点:这4个16位的寄存器可以...

  • 笔记——第二章

    @(读书笔记)[汇编语言, 王爽] 前置知识 8086寄存器为16位,为了和以前的8位架构的CPU兼容,把寄存器可...

  • C/C++知识点分享(18)

    1.在8086 汇编下,逻辑地址和物理地址是怎样转换的? 答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器...

网友评论

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

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