zoukankan      html  css  js  c++  java
  • 王爽《汇编语言》第三版 第八章 数据处理的两个基本问题

    引言

      本章中,我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理器都存在。

      reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;

      sreg的集合包括:ds、ss、cs、es。

     

    8.1 bx、si、di、bp

      在8086CPU 中,只有这4个寄存器(bx、bp、si、di)可以用在“[…]” 中来进行内存单元的寻址。 

      在“[…]” 中,这4个寄存器(bx、bp、si、di)可以单个出现,或只能以四种组合出现:bx和si、bx和di、bp和si、bp和di。

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


    8.2 机器指令处理的数据所在位置

      指令在执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口。

      


    8.3 汇编语言中数据位置的表达

      汇编语言中用三个概念来表达数据的位置。
      1、立即数(idata)
      2、寄存器
      3、段地址(SA)和偏移地址(EA)


    8.4 寻址方式

      当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址方式。

      


    8.5 指令要处理的数据有多长?

      8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作。

      1.通过寄存器名指明要处理的数据的尺寸。

      2.在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。

      有些指令如push与pop默认了访问的是字单元还是字节单元。

      
    8.6 寻址方式的综合应用


    8.7 div 指令

      div是除法指令(division),使用div作除法的时候:

      除数     被除数商余数

       8位      16位(AX)    ALAH

      16位     32位(DX+AX)AXDX

    8.8 伪指令 dd

      dd是用来定义dword (double word双字)型数据的。


    8.9 dup

      dup是一个操作符,在汇编语言中同db、dw、dd 等一样,也是由编译器识别处理的符号。

      它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复。

      db 3 dup (0) 定义了3个字节,它们的值都是0,相当于 db 0,0,0。

      db 3 dup (0,1,2)定义了9个字节,它们是0、1、2、0、1、2、0、1、2,相当于 db 0,1,2,0,1,2,0,1,2 。

    参考资料:《小甲鱼汇编零基础入门》

     

         《汇编语言》第三版

  • 相关阅读:
    面试-23种设计模式
    面试-类和对象的区别
    面试-链表和数组的区别
    Python强制抛出自定义异常
    Python中模拟C# Linq的一些操作
    python随机数seed用法
    Python目录常用操作
    Unity编辑器下获取动画的根运动状态并修改
    python字符串操作,以及对应的C#实现
    测试-一个unity的编译bug,初始化器
  • 原文地址:https://www.cnblogs.com/mubu/p/6360040.html
Copyright © 2011-2022 走看看