转载自:https://www.cnblogs.com/youxin/archive/2012/05/29/2524780.html

如果你看到这篇博客时正在做第七章问题,强烈建议先去把8.1~8.4看了,因为你在这章写代码踩的有关[...]的坑,在8.1~8.4都有说明, 下面都是8.1的内容

通用寄存器的主要用途

寄存器的分类 寄存器

主 要 用 途

数据

 

寄存器

AX

乘、除运算,字的输入输出,中间结果的缓存

AL

字节的乘、除运算,字节的输入输出,十进制算术运算

AH

字节的乘、除运算,存放中断的功能号

BX

存储器指针

CX

串操作、循环控制的计数器

CL

移位操作的计数器

DX

字的乘、除运算,间接的输入输出

变址
寄存器
SI

存储器指针、串指令中的源操作数指针

DI

存储器指针、串指令中的目的操作数指针

变址
寄存器
BP

存储器指针、存取堆栈的指针

SP

堆栈的栈顶指针

指令指针

IP/EIP  
标志位寄存器 Flag/EFlag  
32位

CPU的

段寄存器

16位CPU的

段寄存器

ES  附加段寄存器
CS  代码段寄存器
SS  堆栈段寄存器
DS  数据段寄存器
新增加的
段寄存器
FS  附加段寄存器
GS  附加段寄存器

这张表用来参照。

(1)在8086CPU中只有这四个寄存器可以在[...]中进行内存单元的寻址。
比如,下面的指令都是正确的:

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]

(2).在[...]中,这四个寄存器可以单独出现,或者只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。
比如下面都是正确的

mov ax,[bx]

mov ax,[si]

mov ax,[di]

mov ax,[bp]

mov ax,[bx+si]

mov ax,[bx+di]

mov ax,[bp+si]

mpv ax,[bp+di]

mov ax,[bx+si+idata]

mov ax,[bx+si+idata]

mov ax,[bp+si+idata]

mov ax,[bp+di+idata]

下面就是错误的

mov ax,[bx+bp]

mov ax,[si+di]

(3)只要在[....]中使用寄存器bp,而指令汇总没有显示给出段地址,段地址就默认在ss中。 比如下面的指令。

mov ax,[bp] 含义:(ax)=((ss)*16+(bp))

mov ax,[bp+idata] 含义:(ax)=((ss)*16+(bp)+idata)

mov ax,[bp+si] 含义:(ax)=((ss)*16+(bp)+(si))

mov ax,[bp+si+idata] 含义:(ax)=((ss)*16+(bp)+(si)+idata)

汇编语言之寄存器使用bx si di bp的更多相关文章

  1. 汇编语言标记寄存器标记位_NV UP EI NG NZ AC PE CY

    在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的 ...

  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. 汇编语言(学习笔记-----[bx]和loop)

    1.[bx]是什么??     和[0]有些类似,[0]表示内存单元,它的偏移地址是0      [bx]同样也表示一个内存单元,它的偏移地址在bx中,mov ax,[bx]  (字)   mov  ...

  6. [汇编语言]-第五章[bx]和loop指令

    1- [bx]和内存单元的描述 [0]表示内存单元, 他的偏移地址为0 mov ax,[0] 将一个内存单元的内容送入到ax.这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为0,段地址在d ...

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

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

  8. 汇编语言基于8086CUP(想学操作系统的前奏!!!)

    汇编语言基于8086CUP(想学操作系统的前奏!!!) 1.汇编语言的产生 1.1.思维图 1.2.单位转换 1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1 ...

  9. 8086 CPU 寻址方式

    8086 CPU 寻址方式灵活.有以下几种 idata 表示常量 1.   [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 ...

随机推荐

  1. linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思

    最近跟一个运维人员学了点新东西,感觉以前没怎么注意,但现在感觉很有用,特来记录一下. linux使用==ll==命令列出列表的时候,前面总是有一堆drwxr-xr-x ,这些代表什么意思从来还没有去在 ...

  2. 记录卸载5.7版本MySQL并安装5.6版本MySQL

    新版本有些问题很烦,也没时间去找解决办法,只好用回5.6,首先卸载6.7的MySQL: sudo apt-get autoremove --purge mysql-server-* apt remov ...

  3. git@github.com出现Permission denied (publickey)

    上传项目的时候出现Permission denied (publickey)这个问题 解决方案如下: 看本地的.git/config设置的仓库url地址和github使用的链接地址是否一致如下图,如u ...

  4. css 伪类选择器:checked实例讲解

    css :checked伪类选择器介绍 css :checked伪类选择器用于选择匹配所有被选中的单选按钮(radio)或复选框(checkbox),你可以结合:checked伪类选择器和:not选择 ...

  5. man mkfs

    ---恢复内容开始--- MKFS(8)                                                                MKFS(8) NAME/名称  ...

  6. URL编码表

    url编码是一种浏览器用来打包表单输入的格式. 定义 url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送 ...

  7. http各个状态码的含义

    http各个状态码的含义:由三位数字组成,第一位定义了状态码的类型 常见状态码及解决方法 404:找不到,地址错误 500:逻辑错误 400:一般是入参不匹配 504:超时 2开头:(请求成功)表示成 ...

  8. [CSP-S模拟测试96]题解

    以后不能再借没改完题的理由不写题解了…… A.求和 求$\sum \sum i+j-1$ 柿子就不化了吧……这年头pj都不考这么弱智的公式化简了…… 坑点1:模数不定,可能没有2的逆元,那么只要先把乘 ...

  9. SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6]

    SLF4J:你的SLF4J绑定请求的1.6版不兼容[1.5.5,1.5.6] 在lib中,此时slf4j的版本是1.5.6,而slf4j-log4j的版本是1.6.由于版本的不兼容性,导致了这个错误. ...

  10. 获取相应头信息Response Headers的内容类型Content-Type

    Content-Type内容类型,也是键值对的形式: 我们在代码中获取: package com.zhi.httpClient2; import org.apache.http.Header; imp ...