zoukankan      html  css  js  c++  java
  • [转]汇编语言之寄存器使用(bx,si,di,bp)

    from:http://www.cnblogs.com/huzhongzhong/archive/2011/08/01/2123743.html

    这里对这几个寄存器总结一下。

    通用寄存器的主要用途

    寄存器的分类 寄存器

    主 要 用 途

    数据

     

    寄存器

    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)
  • 相关阅读:
    Cs231n课堂内容记录-Lecture1 导论
    Linux实时查询GPU使用命令
    导出excel的简单方法
    正则表达式的一些应用
    4、Python语法之变量
    javaScript中对typeof 和 instanceof 的使用及理解
    JavaScrpt 变量作用域
    真香的flex弹性布局
    css调试与样式优先级
    css3新样式
  • 原文地址:https://www.cnblogs.com/wucg/p/2320582.html
Copyright © 2011-2022 走看看