zoukankan      html  css  js  c++  java
  • 汇编数据寻址方式

    数据寻址方式

    立即寻址

    操作数直接包含在指令机器码中紧跟在操作码的后面

    例如

    解释:把后面的操作数传送给ax,al寄存器

    mov ax,0a7fh
    mov al,5h
    

    寄存器寻址

    操作数是寄存器操作数(16位对16位,8位对8位)

    解释:一个寄存器的数给另一个寄存器

    mov ax,bx
    mov dl,cn
    

    存储器寻址

    直接寻址

    解释:把存储器里数据段ds(默认)的地址所对应的两个操作数传送给ds构成16位再给ax寄存器

     mov ax,[2000h]//通过ds数据段和偏移地址2000h求得物理地址,把该物理地址的内容传送到ax中
     非默认时:mov ax,es:[2000h]//指定了数据段
    

    物理地址求法:假如ds=3000h,那么内存地址是ds左移四位加[ ]里面的地址

    寄存器间接寻址

    [ ]里面的寄存器可以是bx,bp,si,di

    bx,si,di对应的数据段寄存器是ds,而bp对应的是ss

    mov ax,[bx]//物理地址=ds*16+bx
    mov bx,[si]//物理地址=ds*16+si
    mov [di],dx//物理地址=ds*16+di 这个是反向传,把寄存器内容传送到内存
    
    mov [bp],bx//物理地址=ss*16+bp
    

    此外可以用除开这几个寄存器之外的寄存器

    例如

    mov ax,es:[bx]//物理地址=es*16+bx
    mov ds:[bp],dx//物理地址+ds*16+bp
    

    相对寄存器寻址

    mov ax,3003h[si]//ax<-[si+3003h]  假如ds=3000h 则物理地址=3000h*10h+si+3003H
    
    mov si,08h[bx]//物理地址=ds*16+bx+08h
    mov ax,[bx+100h]//物理地址=ds*16+bp+100h
    mov al,[bp+o8h]//物理地址=ss*16+bp+08h
    mov 0200h[bp],ax//物理地址=ss*16+bp+0200h
    

    基址,变址寻址

    ea=基址寄存器+变址寄存器的内容

    mov ax,[bx][si]//物理地址=ds*10h+bx+si
    

    相对的基址/变址寻址

    在上一个的寻址方式的基础上加或者减16/8位的位移量

    mov ax,mask[bx][si]//物理地址=ds*10h+bx+si+mask
    
  • 相关阅读:
    349、两个数组的交集 | JS集合
    JS集合Set
    JS里的队列和链表
    使用链表指针获取JSON的节点值
    141、环形链表 | JS-链表
    83、删除排序链表中的重复元素 | JS-链表
    2、两数相加 | JS-链表
    事件循环与任务队列
    933、最近的请求次数 | JS-队列
    栈JS实现
  • 原文地址:https://www.cnblogs.com/chenguosong/p/11764400.html
Copyright © 2011-2022 走看看