首页 > 编程语言 >汇编语言中的寄存器(8086)

汇编语言中的寄存器(8086)

时间:2024-12-22 19:57:58浏览次数:6  
标签:8086 汇编语言 MOV SI CX BP 寄存器 字符串

一:通用寄存器

1.数据寄存器

AX ,BX,CX, DX,这四个寄存器在操作中可以存放各种类型的数据,但是他们存放的数据都有一定的规范 ,当我们使用loop指令时,他的循环次数受到CX里面数据的影响,CX里面存了什么数,就循环多少次,每循环一次又会将CX里面的值减一,当我们使用MUL和DIV指令时,他们都是单操作数,这个时候就有很多人疑惑了,乘除不应该是双操作数吗,但是系统的处理是在这两个指令后面一般放BX,BX里面的是除数,而被除数在AX里面,最后的商放在AX里面,余数放在BX里面,还有当我们使用一些系统调用时,也会有类似的情况。并且这四个16位的寄存器每一个都可以被拆分为两个8位的寄存器,比如AX被拆分为ah和al,第一个存储的是高八位,第二个存储的是低八位。这样的寄存器也是经常被使用。

 

 2.地址指针寄存器

SP 栈指针寄存器,用于指向当前堆栈的栈顶。

SP的用法

; 假设我们要调用一个函数,并且需要保存当前的 BP 值
; 首先,将当前的 BP 值压入栈中
PUSH BP

; 然后,将 SP 的值移动到 BP,这样 BP 就指向了旧的栈顶
MOV BP, SP

; 现在,BP 可以用来作为新的栈帧的基地址
; 接下来,我们可以在栈上分配局部变量的空间
SUB SP, 10h ; 分配16字节的空间

; 函数结束后,恢复 BP 的值,并从栈中弹出旧的 BP 值
MOV BP, [BP - 2] ; 假设我们之前保存的 BP 值在 BP - 2 的位置
POP BP ; 从栈中弹出旧的 BP 值

BP 基址指针寄存器,用于存储堆栈的基地址。

BP的用法

; 假设我们有一个函数,需要使用 BP 来访问局部变量
MY_FUNCTION PROC
    PUSH BP       ; 保存旧的 BP 值
    MOV  BP, SP   ; 设置新的栈帧基地址

    ; 分配局部变量空间
    SUB  SP, 10h  ; 分配16字节的空间

    ; 访问局部变量
    MOV  AX, [BP - 4] ; 访问第一个局部变量
    MOV  [BP - 6], AX ; 将 AX 的值存储到第二个局部变量

    ; 恢复现场并返回
    MOV  SP, BP
    POP  BP
    RET
MY_FUNCTION ENDP

3.变址寄存器

SI:源索引寄存器,主要用于字符串操作。

si的使用

MOV CX, 10    ; 设置要处理的字符串长度
LEA SI, Source  ; 将源字符串的地址加载到 SI
LEA DI, Destination  ; 将目的字符串的地址加载到 DI

; 字符串复制循环
CopyLoop:
    MOV AL, [SI]  ; 将源字符串当前位置的字符加载到 AL
    MOV [DI], AL  ; 将 AL 中的字符存储到目的字符串当前位置
    INC SI        ; 源字符串索引加 1
    INC DI        ; 目的字符串索引加 1
    DEC CX        ; 计数器减 1
    JNZ CopyLoop  ; 如果 CX 不为 0,继续循环

DI:目标索引寄存器,主要用于字符串操作

di的使用

MOV CX, 10    ; 设置要处理的字符串长度
LEA SI, Source  ; 将源字符串的地址加载到 SI
LEA DI, Destination  ; 将目的字符串的地址加载到 DI

; 字符串复制循环
CopyLoop:
    MOV AL, [SI]  ; 将源字符串当前位置的字符加载到 AL
    MOV [DI], AL  ; 将 AL 中的字符存储到目的字符串当前位置
    INC SI        ; 源字符串索引加 1
    INC DI        ; 目的字符串索引加 1
    DEC CX        ; 计数器减 1
    JNZ CopyLoop  ; 如果 CX 不为 0,继续循环

二:段寄存器 

  1. CS:代码段寄存器,用于存储代码段的基地址。

  2. DS:数据段寄存器,用于存储数据段的基地址。

  3. SS:堆栈段寄存器,用于存储堆栈段的基地址。

  4. ES:附加段寄存器,可用于存储其他数据段的基地址。

三:专用寄存器

  1. IP:指令指针寄存器,用于存储下一条要执行的指令地址。

  2. FLAGS:标志寄存器,用于存储某些条件码和状态信息,如进位标志、零标志、符号标志等。

标签:8086,汇编语言,MOV,SI,CX,BP,寄存器,字符串
From: https://blog.csdn.net/weixin_74994990/article/details/144631008

相关文章

  • 《计算机组成及汇编语言原理》阅读笔记:p28-p47
    《计算机组成及汇编语言原理》学习第3天,p28-p47总结,总计20页。一、技术总结1.VirtualMachine2.stack3.Thefetch-executeCycle在控制单元(ControlUnit,CU)里面有一个指令寄存器(InstructionRegister,IR)和一个程序计数器(ProgramCounter,PC)。PC保存下次要访问......
  • 学习汇编语言的第三天
     内容概述通过学习完栈的简单原理,以及相应的ss,sp寄存器的使用。现在已经学习了三种“段”,分别是数据段,代码段,栈段。对于我这种小白极其容易混淆,于是打算进行区分比较。(手把手投喂)1.数据段①对应需要的寄存器:DS②作用:通过将段地址存放到DS,输入访问内存单元的指令,CPU就将我......
  • 《计算机组成及汇编语言原理》阅读笔记:p9-p27
    《计算机组成及汇编语言原理》学习第2天,p9-p27总结,总计19页。一、技术总结1.quantumphysics(量子物理学)(1)quantum(量子)quantum的本意是:c.thesmallestamountofsth(量子)。Inphysics,aquantumistheminimumamountofanyphysicalentity(physicalprope......
  • 8086汇编(16位汇编)学习笔记00.DEBUG命令使用解析及范例大全
    转载自:https://bpsend.net/thread-99-1-1.html启动Debug,它是可用于测试和调试MS-DOS可执行文件的程序。Debug[[drive:][path]filename[parameters]]参数[drive:][path]filename指定要测试的可执行文件的位置和名称。parameters指定要测试的......
  • 大学8086汇编debug——关于int3断点之后继续调试的方法
    预先在汇编中打入int3,然后在debug中利用G,就可以一路运行到断点处。正文在断点上可以用U来查看上下代码的位置断点后运行然后用-g=xxxx:xxxx可以运行到下一个断点,或是直接运行至结束还可以用-t=xxxx:xxxx逐步运行注意:xxxx:xxxx是int3下一个命令的地址......
  • 《计算机组成及汇编语言原理》阅读笔记:p1-p8
    《计算机组成及汇编语言原理》学习第1天,p1-p8总结,总计8页。一、技术总结1.Intel8088microprocessor(微处理器),1979-1988。2.MS-DOSMicrosoftDiskOperatingSystem的缩写,是一个操作系统(operatingsystem)。3.Moore'sLaw&Moore'ssecondlaw(1)Moore'slawThe......
  • STM32F407VET6使用寄存器点亮LED
    一,目的:通过实验学会查看寄存器手册,学会通过寄存器驱动MCU1)下图是手册中对于GPIO输出的描述 2)在10类GPIO寄存器中选择需要配置的部分 3)注意时钟也要配置二,实验现象:PA6连接的LED闪烁三,实验步骤:1-查看《STM32F407中文手册(完全版)高清完整pdf版》和《Cortex-M4权威指南(英......
  • 调试Debug,读,写 GPIO 寄存器(含实例代码)
    以STM32G070CBT6PA8为例注:下面调试界面的打开方式为下面图中调试界面中的寄存器仅用于指明具体位置,并不代表实际的实验现象本文涉及寄存器的读写操作,不熟悉的可以移步STM32寄存器读写操作-CSDN博客MODER寄存器GPIOA->MODER作用:配置PA8的......
  • VHDL时序电路:D触发器/十进制加减可逆计数器/偶数分频器/位移寄存器
    时序电路概述什么是时序电路与时序电路相对的是组合逻辑电路,其没有记忆功能,输出取决于输入而时序电路有记忆功能,下一步的输出受被记忆的当前状态影响,还可以进一步分为两类Moore型下一状态的输出依赖于电路的当前状态,其状态变化依赖于时钟(只能同步更新)Mealy型输出......
  • 汇编语言
    图书:http://c.biancheng.net/view/3378.html视频:https://www.bilibili.com/video/BV1mt411R7Xv?from=search&seid=7216001317872532936思维导图:https://pan.baidu.com/s/1HAGT3w0dszhZhJf_a_ccHg提取码:9pmuXMind打开方式?习题答案:https://blog.csdn.net/heiyeleng/arti......