• 8086汇编 段寄存器


    8086汇编 段寄存器

    段寄存器存放内存中不同地址段的存储,专门的寄存器存放段地址来提供使用。

    8086CPU中主要使用4个段寄存器下面会有说明。

    三种段

    数据段

    将段地址放在 DS中用mov、add、sub等访问内存单元的指令时,CPU将我们定义的数据段中的内容当作数据段来访问;

    代码段

    将段地址放在 CS中,将段中第一条指令的偏移地址放在IP中CPU将执行我们定义的代码段中的指令;

    栈段

    将段地址放在SS中,将栈顶单元的偏移地置放在 SP 中CPU在需要进行栈操作(push、pop)时,就将我们定义的栈段当作栈空间来用。

    CS - 代码段寄存器

    一、说明

    1、寄存器说明

    CS 代码段寄存器、专门存储代码指令地址的寄存器、它与指针寄存器IP配合使用。

    • 功能:CS:代码段地址存储
    • 功能:IP:代码段偏移地址存储

    2、操作符start 

    start:定义指令开头
    功能:程序加载后,CS:IP指向要执行的第一条指令在start处!

    复制代码
    ; 定义程序第一行代码指令
    start: mov bx,0
        ...
        mov ax,0
    ; 程序结束
    end staret
    复制代码

    2、操作符offset

    格式:offset 标号
    功能:取得标号的偏移地址

    复制代码
    assume cs:codeseg
    codeseg segment
    ; start与s都为标号
    ; 相当于 mov ax,0
    start: mov ax,offset start 
          ; 相当于mov ax,3
          s: mov ax,offset s       
    codeseg ends
    end start
    复制代码

    3、nop指令

    使用:nop
    功能: nop的机器码占一个字节,起“占位”作用

    复制代码
    assume cs:codeseg
    codeseg segment 
           ..
          ; 占位一个字节
          nop
    codeseg ends
    end
    复制代码

    二、解析

    1、案例

      CS与IP根据地址计算得出内存地址,通过地址总线传输查找到内存地址中对应的3字节大小的指令,在通过数据总线取出发送给控制器执行,结果修改AX寄存器值。当任务执行完成后由于这条指令为3字节,IP的寄存器会加3、再次合成内存地址后会依次执行剩下指令。

     2、案例

      (1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(2)IP = IP + 所读取指令的长度,从而指向下一条指令;(3)执行指令。 转到步骤 (1),重复这个过程。

    DS - 数据段寄存器

    一、说明

    1、寄存器说明

    DS 数据段寄存器、专门存储数据内存地址的寄存器、它与DI变指寄存器配合使用。

    • 功能:DS:数据段地址存储
    • 功能:DI:数据段偏移地址存储
    • 功能:BX:可用于数据段偏移地址存储、默认指向DS的通用寄存器。

    2、定义数据大小

      dw:定义字型数据
        使用:dw 字单元数据1,字单元数据2
      db:定义字节型数据
        使用:db 字节型数据1,字节型数据2
      dd:定义双字型数据
        使用:dd 双字型数据1,双字型数据2

    3、dup 定义数据大小

    功能:dup和db、dw、dd 等数据定义伪指令配合使用,用来进行数据的重复

    dup的使用格式:

    • db 重复的次数 dup (重复的字节型数据)
    • dw 重复的次数 dup (重复的字型数据)
    • dd 重复的次数 dup (重复的双字数据)

    二、使用

    1、赋值使用

    复制代码
    ; ax 存放数据内存地址
    mov ax, 123BH
    ; 将 ax 内存地址 存入ds数据段
    mov ds, ax
    ; di 存入偏移地址0
    mov di, 0
    复制代码

    SS - 栈段寄存器

    一、说明

    1、寄存器说明

    SS 段段寄存器、专门存储栈数据的寄存器、它与BP变指寄存器配合使用。

    • 功能:SS:数据段地址存储
    • 功能:BP:数据段偏移地址存储

    二、使用

    https://www.cnblogs.com/xiangsikai/p/12467831.html

    ES - 附加段寄存器

    一、说明

    ES 附加段寄存器、专门配合数据内存地址的寄存器、它与DI变指寄存器配合使用。

    通常DS与SI取得数据的源地址、ES与DI取得数据的目标地址

    • 功能:ES:数据段地址存储
    • 功能:DI:数据段偏移地址存储

    二、使用

    说明:由于出现了两个段寄存器,如果想确认是哪个就需要加入段前缀 mov es:[bx],dl

    复制代码
    ; 使用附加段寄存器
    assume cs: code
    code segment
        moy ax 0ffffh
        moy ds, ax
        moy ax. 0020h
        mov es, ax
        mov bx, 0
        mov Cx. 12
       s: mov dl, [bx]
        mov es: [bx, d
        inc bx
        loop s
        moy ax, 4c00h
        int 21h
    code ends
    end
    复制代码
  • 相关阅读:
    Java High Level REST Client 中文API(仅供参考)
    3.2_springBoot2.1.x检索之JestClient操作ElasticSearch
    3.1_springboot2.x检索之elasticsearch安装&快速入门
    2.2_springboot2.x消息RabbitMQ整合&amqpAdmin管理组件的使用
    2.1_springboot2.x消息介绍&RabbitMQ运行机制
    1.2_springboot2.x中redis缓存&原理介绍
    1.1_springboot2.x与缓存原理介绍&使用缓存
    JavaWeb-----Get请求和Post请求
    Java基础(basis)-----TCP通信
    Java基础(basis)-----泛型详解
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12494072.html
Copyright © 2020-2023  润新知