首页 > 其他分享 >asm:8086寄存器概述(intel - reg16bits)

asm:8086寄存器概述(intel - reg16bits)

时间:2023-01-11 06:00:10浏览次数:44  
标签:8086 intel di 变址 si 地址 寄存器 reg16bits ds

asm:8086寄存器概述(intel - reg16bits)

 

 

 


一、 4个16位段地址寄存器

 


1、8086对存储器采用分段管理,4个段寄存器分别用于存放4个当前段的起始地址,又称为段基址寄存器。

  CS(Code Segment) —— 代码段寄存器,CS用来存放“代码段”的地址,不能人工修改CS的值。

  DS(Data Segment) —— 数据段寄存器,DS用来存放“数据段”的地址。

  SS(Stack Segment) —— 栈段寄存器,SS用来存放“栈段”的地址。

  ES(Extra Segment) —— 扩展段寄存器,ES用来存放“扩展段”的地址。

 

 

 


二、 16位指令指针寄存器IP

 


  1、IP始终指向当前代码段CS所要取出的下一条指令的地址。每取出一个字节指令后,IP自动加1。可以用转移指令、调用指令及中断和复位等改变IP值。


  2、IP和CS配合使用。

 

 

 


三、 4个16位数据寄存器

 


1、AX、BX、CX、DX,可以分成8个8位寄存器使用。 AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。

  AX —— 累加寄存器,常用于运算。在乘除等指令中指定用来存放操作数。另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。

  BX —— 基址寄存器,常用于地址索引。

  CX —— 计数寄存器,常用于计数。常用于保存计算值,如在移位指令。循环(loop)和串处理指令中用作隐含的计数器。

  DX —— 数据寄存器,常用于数据传递。


2、基本说明:

  2.1、bx 是数据基址寄存器,它可以和 ds 或 es 段寄存器显式的联合使用。如:ds:[bx]、 es:[bx]。

 

 

 


四、 4个16位地址指针寄存器


1、地址指针寄存器用于存放操作数的地址,编程时通过修改寄存器的内容达到修改地址的目的。

  SP(Stack Pointer)堆栈指针寄存器 —— 堆栈指针寄存器,与SS配合使用。SS:SP永远指向栈顶位置;用来指示数据进栈和出栈的位置。

  BP(Base Pointer) 基址指针寄存器 —— 基址指针寄存器,可用作SS的一个相对基址位置;SS:BP,通过BP偏移,可以获取“栈段”内的数据。

  SI(Sourse Index) 源变址寄存器(这里不懂啊)—— 源变址寄存器,默认段是DS,SI用来确定“数据段DS”中某一存储单元的偏移地址。
  SI(Sourse Index) 源变址寄存器(这里不懂啊)—— SI是源变址寄存器,用于存放源操作数的偏移地址,并且SI的内容有自动修改的功能,故称为源变址寄存器。

  DI(Destination Index)目的变址寄存器(这里不懂啊) —— 目的变址寄存器,默认段是ES,SI用来确定“扩展段ES”中某一存储单元的偏移地址。
  DI(Destination Index)目的变址寄存器(这里不懂啊) —— DI是目的寄存器,用于存放目的操作数的偏移地址,并且DI的内容有自动修改的功能,故称为目的变址寄存器。


2、 基本说明:

  2.1、bp 是栈基址寄存器,缺省时使用 ss 段寄存器。 bp 也可以和 ds、es段寄存器显式的联合使用。如:ds:[bp]、 es:[bp]。

  2.2、si 是源变址寄存器,默认段是 ds ; di 是目的变址寄存器,默认段是 es 。 si、di 均可以显式的和ds、es段寄存器联合使用。
    2.3.1、代码示例:
      mov al, [si]
      mov [di], al
      mov al, es:[si]
      mov ds:[di], al



  2.3、bx 和 si 或 di 可以联合使用,用于数据段中数组数据的处理; 或者 bp 和 si 或 di 可以联合使用,用于栈中数组数据的处理。如:[bx+si]、 [bx+di]。

 


  2.4、DI和SI
    2.4.1、这两个属于变址寄存器,可以和bx.bp联用,但是和bx连用时,段地址在DS中,和bp联用时,段地址在SS中,也可以单独使用,单独使用时,段地址默认在DS中,想要越段使用,加上段前缀即可。
    2.4.2、在串指令操作中,si和ds联用,确定目标源地址,di和es(附加段寄存器)联用,确定传送的目的地址,就是分别寻址数据段和附加段。在串指令中,si和di具有自加和自减功能。

 

 

 

 

五、参考资料:

 

 

  1、8086cpu中的寄存器(cs、ds、es、ss、ip、sp、bp、si、di): https://blog.csdn.net/weixin_42240667/article/details/104503184

  2、求问IBM8086汇编语言中各通用寄存器的默认段: https://zhidao.baidu.com/question/100343826.html

  3、bx,bp,si,di分别针对什么情况来使用: https://zhidao.baidu.com/question/1450486265262602420.html

  4、汇编语言中,SI DI 的作用是什么?: https://zhidao.baidu.com/question/429892276.html

 

标签:8086,intel,di,变址,si,地址,寄存器,reg16bits,ds
From: https://www.cnblogs.com/lnlidawei/p/17042721.html

相关文章

  • asm:操作数寻址的七种方式(intel8086 - masm.exe)
    asm:操作数寻址的七种方式(intel8086-masm.exe)    在汇编汇编语言中,很多命令需要“操作数(参数)”。“操作数”给出的方式,有三类。第一类,“直接”给出操作数;第......
  • IntelliJ 调试快捷键
        F9:恢复程序Alt+F10:显示执行断点F8:跳到下一步F7:进入到代码Alt+shift+F7:强制进入代码Shift+F8:跳到下一个断点Atl+F9:运行到光标处ct......
  • asm:segment -- assume:ds关联多个段(win_intel)
    asm:segment--assume:ds关联多个段(win_intel)    一、assume:ds关联多个段:程序源码 1;file_name=address.asm23456assumeds:datas......
  • asm: segment 的使用(win_intel)
    asm:  segment的使用(win_intel)    一、segment(段)的使用 1;file_name=segment.asm2;assumeds:data_s,ss:stack_s,cs:code_s34......
  • windows电脑上安装IntelliJ IDEA工具运行开源项目
    1工具下载官网下载地址:https://www.jetbrains.com/idea/download/#section=windows推荐大家使用社区版就行,这里下载这个工具的话,主要是为了后面在本地打开开源项目的源码并......
  • intel I350千兆网卡datasheet说明+intel core i53570说明
    I350的网卡特点:主控芯片是 I350 Gigabit Network Connection (rev 01) 。根据 IntelEthernetServerAdapterI350:ProductBrief :(也就是说每一个物理port支......
  • IntelliJ IDEA常见问题解决办法汇总
     mac上idea升级到2020.2.2后,发现versioncontrol中的localchanges不见了!解决办法:View—>ToolWIndows—>Commit【点击下,就会提示要把这个Commit放在IDEA面板那个位置,选择......
  • IntelliJ IDEA 不能识别 Java 项目
    解决办法需要把 src 目录标志为 SourceRoot——在 src 目录上点右键,选择 MarkDirectoryAs -> SourcesRoot:.java文件的图标会发生改变:EDIT在 Projec......
  • lombok在IntelliJ IDEA下的使用
       lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。代码越少,意味着出bug的......
  • intel更新13代桌面处理器产品线,更多核心更贵价格
    intel13代酷睿产品线更新带来了更多低于125wTDP的处理器。intel确认了10个65wTDP的SKU和6个35wTDP的SKU。13代酷睿包含新的RaptorLake和旧的AlderLake(Refresh)处理器。......