bx、si、di 和 bp

在 8086CPU 中,只有这 4 个寄存器可以用在 “[...]” 中来进行内存单元的寻址。

mov ax, [bx]
mov ax, [bx+si]
mov ax, [bx+di]
mov ax, [bp]
mov ax, [bp+si]
mov ax, [bp+di]

而下面的指令是错误的

mov ax, [cx]
mov ax, [ax]
mov ax, [dx]
mov ax, [ds]

这四个寄存器可以单个出现,或者以 4 种组合出现:bx 和 si,bx 和 di,bp 和 si,bp 和 di。

结合这条就比较好记上一条:只要在 [...] 中使用寄存器 bp,而指令中没有没有显式的给出段地址,那么段地址在 ss 中。因为如果在 [...] 中使用了寄存器 bx,而指令中没有显式的给出段地址的话,段地址在 ds 中,所以不可以将 bx 和 bp 作为组合,而 si,di 作为 bx 和 bp 的辅助寄存器,也不能单独将它俩放在一起。

下面的指令是错误的:

mov ax, [bx+bp]
mov ax, [si+di]

bx、si、di 和 bp的更多相关文章

  1. 汇编语言之寄存器使用bx si di bp

    转载自:https://www.cnblogs.com/youxin/archive/2012/05/29/2524780.html 如果你看到这篇博客时正在做第七章问题,强烈建议先去把8.1~8.4 ...

  2. 【汇编】SI DI 的用法

    一.汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就 ...

  3. bx, bp, si, di寄存器的使用规则

    首先,都可以单独使用. 另外,组合使用的情况下: 记住这张图片就行了=_= 意思就是,bx只能和si,di组合.bp只能和si,di组合.

  4. 汇编语言中,SP,BP ,SI,DI作用?

    这个很简单: sp:表示栈顶指针,指向栈顶地址.与SS相配合使用.ss为栈段. bp:是基址指针,段地址默认在SS中.可以定位物理地址,比如:"mov ax,[bp+si+6]/mov ax ...

  5. Notes on <Assembly Language step by step>

    By brant-ruan Yeah, I feel very happy When you want to give up, think why you have held on so long. ...

  6. 汇编学习(三)——汇编语言程序入门

    一.寻址方式 1.概念: 一条指令由操作码和操作数构成,操作码是系统定义好的符号,执行指定的操作,操作数即是指令的对象,而寻址方式就是操作数的指定方式 操作码 目的操作数,源操作数 2.寻址方式的三种 ...

  7. EAX、ECX、EDX、EBX寄存器的作用

    注意:在计算加法时,实在32位的累加器上进行,并注意类型之间的转换,数据的截取问题 一般寄存器:AX.BX.CX.DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器 ...

  8. X86汇编语言中的registers相关

    0.写在前面 本文中总结于王爽老师的汇编语言,建议有兴趣的都买一本,以支持王爽老师的辛勤付出.再者,这本书写的确实很nice. 8086CPU共有14个registers:AX, BX, CX, DX ...

  9. [汇编语言]-第二章寄存器(CPU工作原理)

    1- 对于汇编程序员来说,CPU中主要的部件是寄存器,这些寄存器是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW. 2- 8086CPU所有寄存器都是16位的, ...

随机推荐

  1. 向python文件传递参数

    1. 向python传递单个参数: import sys print sys.argv[0]  ##脚本名 print sys.argv[1]  ## 第一个参数 2. 向python传递数组: pr ...

  2. Net分布式系统之一:系统整体框架介绍

    一.设计目的 从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构.基于window平台搭建的大型分布式系统不多,之前了解过myspace.stackoverflow等大型网站.搭 ...

  3. VFP不同句柄 同一事务处理 统一提交或回滚

    SQLSetprop(m.lnAccHandle,[Transactions],2)SQLSetprop(m.lnSetHandle,[Transactions],2) SQLSetprop(m.ln ...

  4. Servlet学习五——流的分发

    在上一节中有提到,流的传输,可以考虑Stream,但如果需要同时分发流和其它信息,,就需要再考虑其它方式了. 在coding中,服务端查询结果都是以gson进行传输,当需要传输一个语音并且同时需要传输 ...

  5. String Start!

    (1)Ransom Note 解题思路: 题目叫做Ransom Note,勒索信.勒索信,为了不暴露字迹,就从杂志上搜索各个需要的字母,组成单词来表达的意思.这样来说,题目也就清晰了,判断杂志上的字是 ...

  6. 循序渐进Python3(十一) --5-- 同源策略

    一.什么是同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript ...

  7. php中$row=mysql_fetch_row()出错问题

    在写php时用到这样一个问题,代码如下: $sql="select * from sina"; mysql_connect("localhost"," ...

  8. 搭建MySQL MHA高可用

    本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/ MySQL MHA 高可用集群 环境: Linu ...

  9. c++常见面试题

    1.class和struct的区别? 在c++中,在class中声明的成员默认为private成员,而在struct中声明的成员默认为public成员,class的默认继承方式为private,str ...

  10. oracle定时器

    /* 每10秒钟执行一次 插入一条时间 */ -- 创建table create table tab_time( current_time timestamp ); -- 创建存储过程 create ...