zoukankan      html  css  js  c++  java
  • 汇编语言-寻址和处理数据

    and和or指令

    • and 指令:逻辑与指令,按位进行与运算。
      • 例如:and al,11111110B ;将al的第0位设为0。
    • or 指令:逻辑或指令,按位进行或运算。
      • 例如:or al,00000001B ;将al的第0位设为1。

    ASCll码

    ASCLL码就是一种编码方案所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。比如说,我们按下键盘的 a 键,这个按键的信息被送入计算机,计算机用ASCLL码的规则对其进行编码,将其转化为61H存储在内存的指定空间中;文本编辑软件从内存中取出61H,将其送到显卡上的显存中;工作在文本模式下的显卡,用ASCLL码的规则解释显存中的内容,61H被当作字符 “a“,显卡驱动显示器,将字符 ”a“ 的图像画在屏幕上。

    bx, si, di 和 bp

    在8086CPU中,只有4个寄存器可以中在 [...] 中来进行内存单元的寻址。
    比如下面的指令都是正确的:

    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]
    

    [...] 中,这4个寄存器可以单个出现,或只能以4种组合出现: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]
    mov ax,[bp+di]
    mov ax,[bx+si+idata]
    mov ax.[bx+di+idata]
    mov ax,[bp+si+idata]
    mov ax,[bp+di+idata]
    

    下面的指令是错误的:

    mov ax,[bx+bp]
    mov ax,[si+di]
    

    只要在 [...] 中使用寄存器 bp,而指令中没有显性地给出段地址,段地址就默认在 ss 中。比如下面地址:

    mov ax,[bp+si+idata]    含义:(ax)=((ss)*16+(bp)+(bp)+(si)+idata)
    

    寻址方式

    段地址(SA),偏移地址(EA)

    • 直接寻址:
      • [idata]:EA=idata;SA=(ds)
      • 常用格式 [idata]
    • 寄存器间接寻址
      • [bx],[si],[di],[bp]
      • EA=(bx);SA=(ds)
      • 常用格式 [bx]
    • 寄存器相对寻址
      • [bx+idata],[si+idata],[di+idata],[bp+idata]
      • EA=(bx)+idata;SA=(ds)
      • 结构体常用 [bx].idata
      • 数组常用 idata[si],idata[di]
      • 二维数组常用 [bx][idata]
    • 基址变址寻址
      • [bx+si],[bx+di],[bp+si],[bp+di]
      • EA=(bx)+(si);SA=(ds)
      • 二维数组常用 [bx][si]
    • 相对基址变址寻址
      • [bx+si+diata],[bx+di+idata],[bp+si+idata],[bp+di+idata]
      • EA=(bx)+(si)+idata; SA=(ds)
      • 表格(结构)中的数组项常用 [bx].idata[si]
      • 二维数组常用 idata[bx][si]

    指令处理数据大小和div,dd,dup

    • 指令处理数据大小
      • word ptr:单元
      • byte ptr:字节单元
    • div指令
      • div是除法指令,使用div做除法的时候应注意以下问题。
      • 除数:有8位和16位两种,在一个寄存器或内存单元中。
      • 被除数: 默认放在AX或DX和AX中,如果除数为8位,被除数则为16为,默认在AX中存放:如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
      • 结果: 如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
    • 伪指令 dd
      • dd 是用来定义 dword(double word,双字)型数据的。
    • dup
      • dup 是一个操作符,它是和db,dw,dd 等数据定义伪指令配合使用的,用来进行数据的重复。
      • 比如:db 2 dup (0,1,2) ;定义了6个字节,它们是0,1,2,0,1,2
  • 相关阅读:
    CC2431 代码分析②-CC2431狂轰滥炸
    CC2431 代码分析①-CC2431 喊出第一声
    【开源GPS追踪】 之 手机端安卓版
    【开源GPS追踪】 之 服务器硬伤
    【开源GPS追踪】 之 为何费力不讨好
    【开源GPS追踪】 之 硬件开源
    【开源GPS追踪】 之 服务器端opengts安装
    Microsoft Office Excel cannot access the file, There are several possible reasons
    Dynamics CRM IFD部署后延长系统注销时间
    Dynamics CRM2013 Server2012R2下部署ADFS和IFD遇到的问题
  • 原文地址:https://www.cnblogs.com/chengmf/p/12442715.html
Copyright © 2011-2022 走看看