zoukankan      html  css  js  c++  java
  • 8086 CPU 寻址方式

    8086 CPU 寻址方式

    http://blog.csdn.net/daiyutage/article/details/9141251

    8086 CPU 寻址方式灵活。有以下几种

             idata 表示常量

           1.   [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 mov ax, ds:[0]  ,表示把 ds 寄存器中所在段的地址+偏移地址 0 的内存单元中的值赋给ax  , 不能用

    mov  ax, [0] ,这样在masm 中会当作mov ax, 0,   在windows的 debug 和 nasm 中可以用 mov ax, [..] 的方式定位内存,段地址默认放在 ds 中。

         2.   [bx]  用一个变量来表示内存地址,可用于间接定位一个内存单元。 比如 mov ax, [bx] ,段地址默认放在ds 中

         3.  [bx+idata]  用一个变量加常量表示内存地址,可在一个其实地址的基础上用变量间接定位一个内存单元

            比如:

              mov  ax, [bx+idata]

              mov ax, [idata+bx]

              mov ax, idata[bx]

             都是等价的,相当于高级语言中的数组表示方法。

          4.   [bx+si] 用两个变量表示地址。

          5.   [bx+di] 等价于 [bx+si].

          6.   [bx+si+idata]  用两个变量和一个常量表示地址。

          7    [bx+di+idata] 等价于 [bx+si+idata].

            关于 bx,si,di,bp

          在 8086 CPU 中,只有这四个寄存器可以用在 [...] 中进行内存单元的寻址,比如

           mov  ax, [bx]

           mov ax,  [bx+si]

           mov ax, [bx+di]

           mov  ax,[ bp]

           mov ax, [bp+si]

           mov ax, [bp+di]

         在[..]中,bx,di,si,bp,可以单个出现,但是只能以四种组合方式出现

            bx和si,  bx和di,  bp和si, bp和di

           比如

           mov  ax,[bx+bp]

           mov  ax,[si+di]

           这两条指令是错误的。

         只要在[...]中使用寄存器bp, 而指令中没有显实的给出段地址,段地址默认在 ss 中

           mov ax, [bp]         段地址在 ss中

            mov ax,[bp+idata]      段地址在 ss中

           mov ax,[bp+si]           段地址在 ss中

           mov ax, [bp+si+idata]      段地址在 ss中

           也可以显实的指定段寄存器

                 mov ax, ds:[bp]

                 mov ax, es:[bx]

                 mov ax, ss:[bx]

                 mov ax ,cs:[bx+si]

          -------------------------------------------------------------------------------------------------        

            寻址方式总结

                    寻址方式                                                                              名称

                    [idata]                                                                                直接寻址

                    [bx]                                                                                      寄存器间接寻址

                    [si]                                                                                       寄存器间接寻址

                    [di]                                                                                       寄存器间接寻址

                    [bp]                                                                                      寄存器间接寻址
                  

                    [bx+idata]                                                                            寄存器相对寻址
                    [ si+idata]                                                                            寄存器相对寻址

                    [di +idata]                                                                           寄存器相对寻址

                    [bp+ idata]                                                                           寄存器相对寻址

                    [bx+si]                                                                                 基址变址寻址

                    [bx+di]                                                                                 基址变址寻址

                    [bp+si]                                                                                 基址变址寻址

                    [bp+di]                                                                                 基址变址寻址

                   

                    [bx+si+idata]                                                                        相对基址变址寻址

                    [bx+di+idata]                                                                        相对基址变址寻址

                    [bp +si +idata]                                                                      相对基址变址寻址

                    [bp+di+idata]                                                                        相对基址变址寻址

  • 相关阅读:
    Cpython支持的进程与线程
    进程理论基础
    网络编程-之-----粘包现象
    dTree的简单使用
    DWR的简单使用
    strut2+Inteceptor实现简单的登录拦截
    保留两位小数
    冒泡+封装
    springmvc-入门
    添加ssh框架之后出现 class 'org.springframework.orm.hibernate3.LocalSessionFactoryBean' not found解决办法
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/8948160.html
Copyright © 2011-2022 走看看