zoukankan      html  css  js  c++  java
  • 8086寄存器和7种寻址方式

    1. 8086处理器有以下寄存器:

    类别

    位数

    名称

    通用

    16

    AX,       BX,       CX,       DX

    8

    AH,AL,BH,BL,CH,CL,DH,DL

    指针

    16

    SP(stack pointer,堆栈指针),BP(base pointer,基址指针)

    索引(变址)

    16

    SI(source index,源索引),DI(destination,目的索引)

    16

    CS(code segment,代码段),DS(data segment,数据段),

    SS(stack segment,堆栈段),ES(extra segment,附加段)

    指令

    16

    IP(instruction pointer,指令指针/指令计数器)

    标志

    16

    FR(flag register,标志寄存器)

        其中:

        1). 段寄存器CS,DS,SS,ES分别保存端代码段,数据段,堆栈段,辅助数据段的起始地址,段寄存器只能由其他寄存器载入值,不能由主存直接载入.

        2). 基址寄存器BX,SP,BP用于保存相对段首地址的偏移地址,其中BX的默认段寄存器是DS,而SP,BP的默认段寄存器是SS.

        3). 索引寄存器(又叫变址寄存器)SI,DI,既可用于存放存储单元在段内的偏移量,又可用于存放在相对于段内偏移量的偏移量(详见下文寻址方式).

        4). 操作数相对于段首的偏移地址又称有效地址.

        (参考自《x86 PC 汇编语言,设计和接口》)

    2. 7种寻址方式(参考自http://student.zjzk.cn/course_ware/caiweb/huibian/Chap2/chap2-2-11.htm)

        1). 立即数寻址方式

        操作数作为指令的一部分,紧跟在操作码之后,该寻址方式执行得很快.

        将信息装载到除了段寄存器和标志寄存器以外的寄存器:

    MOV AX,2550H    ;将2550H装入AX
    MOV CX,625      ;将十进制数625装入CX
    MOV BL,40H      ;将40H装入BL
    View Code

        要将信息移到段寄存器,必须现将数据装载到通用寄存器,再移到段寄存器:

    MOV AX,2550H
    MOV DS,AX       ;正确
    MOV DS,2550H    ;错误
    View Code

        2). 寄存器寻址方式

        操作数在寄存器中,指令指定寄存器号.16位操作数的寄存器可以是 AX,BX,CX,DX,SI,DI,SP,BP等;8位操作数的寄存器可以是 AL,AH,BL,BH,CL,CH,DL,DH等.寄存器寻址方式和立即数寻址方式不涉及内存访问,因而可以取得较高的运算速度.

        如:

    MOV BX,DX    ;将DX的内容复制到BX
    MOV ES,AX    ;将AX中的内容复制到ES
    ADD AL,BH     ;将BH中的内容加到AL
    View Code

        3). 直接寻址方式

        操作数在内存,但操作数的有效地址作为指令的一部分,紧跟在操作码之后.默认段寄存器为DS().

        如:

    MOV DL,[2400]    ;将DS:2400H的内容移到DL
    MOV [3518],AL    ;将AL的内容移到DS:3518H
    View Code

         4). 寄存器间接寻址方式

         操作数在内存,但操作数的有效地址由SI,DI,BX,BP指定,其中SI,DI,BX默认的段寄存器是DS,BP默认的段是SS.

         如:

    MOV CL,[SI]    ;将DS:SI中的内容移到CL
    MOV [DI],AH   ;将AH的内容移到DS:DI
    View Code

         5).寄存器相对寻址方式

         操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16位位移量(displacement)之和.

         如:

    MOV CX,[BX]+10    ;[BX]+10也可以写作[BX+10]或10[BX]
    MOV AL,[BP]+5
    MOV DX.[SI]+5
    View Code

        6). 基址变址寻址方式

        操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,默认段寄存器为基址寄存器的默认段寄存器.

        如:

    MOV CL,[BX][DI]    ;将DS:BX+DI的内容移到CL

        7). 相对基址变址寻址方式(Relative based indexed addressing)

        操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量之和,这种寻址方式为像数组元素遍历等堆栈处理提供了方便.

        如:

    MOV CL,[BX][DI]+8    ;将DS:BX+DI+8的内容移到CL,[BX][DI]+8也可以写作[BX+DI+8]
    MOV CH,[BX][SI]+20
    View Code
  • 相关阅读:
    xls与csv文件的区别
    青音,经典爱情语录
    win7用户账户自动登录方法汇总
    How to using Procedure found Lead Blocker
    FTS(3) BSD 库函数手册 遍历文件夹(二)
    FTS(3) BSD 库函数手册 遍历文件夹(一)
    DisplayMetrics类 获取手机显示屏的基本信息 包括尺寸、密度、字体缩放等信息
    About App Distribution 关于应用发布
    FTS(3) 遍历文件夹实例
    OpenCV 2.1.0 with Visual Studio 2008
  • 原文地址:https://www.cnblogs.com/reasno/p/4880887.html
Copyright © 2011-2022 走看看