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
  • 相关阅读:
    [hdu5400 Arithmetic Sequence]预处理,容斥
    [hdu5399 Too Simple]YY
    [hdu5396 Expression]区间DP
    [hdu5392 Infoplane in Tina Town]置换的最小循环长度,最小公倍数取模,输入挂
    [bzoj2038 [2009国家集训队]小Z的袜子(hose)] 莫队算法
    [hdu1506 Largest Rectangle in a Histogram]笛卡尔树
    hdu5381 The sum of gcd]莫队算法
    [hdu5389 Zero Escape]数根的性质,DP
    [hdu5387 Clock]时钟夹角问题
    [CodeForces 300D Painting Square]DP
  • 原文地址:https://www.cnblogs.com/reasno/p/4880887.html
Copyright © 2011-2022 走看看