zoukankan      html  css  js  c++  java
  • 汇编第5~8章——基础知识梳理与总结

    第五章 [BX]和loop

    1.内存单元间接表示: [bx]

    mov  dl, [0];  dl  ←  ((ds)×16 + 0)

    mov  bx, 0

    mov  dl, [bx];  dl  ←  ((ds)×16 + (bx))

    可以使用bx间接访问内存单元。默认,段地址在ds。

    2.loop指令

    (1) 语法格式

         loop  标号

    (2) CPU执行指令过程

          ① (cx) ← (cx) - 1

          ② 判断cx的值是否为0。 如果(cx) ≠ 0,跳转到标号处执行; 如果(cx) = 0, 执行loop后面的其它指令。

    3.段前缀

    mov dl, [6];  dl  ←  ((ds)×16 + 6)

    mov ax, [bx];  ax  ←  ((ds)×16 + (bx))

    默认情形下,无论是直接给出的偏移地址,还是通过bx间接给出的偏移地址,都是取ds的值作为段地址来计算物理地址。 可以通过增加「段前缀」改变默认状况。

    4.安全内存空间

    计算机系统内存的使用并不是任意的,有些内存单元有专用用途,保留有系统重要数据。

    ① 在8086模式中,00200h ~ 002ffh这段空间一般不会被使用,视作用户可自由使用的安全空间。

    ② 现代操作系统大多使用CPU保护模式对内存使用进行管理,限制用户非法访问一些关键内存空间。

    第六章 包含多个段的程序

    ① 使用伪指令segment和ends定义逻辑段后,究竟是用作代码段、数据段还是栈,由程序员指定。

    ② 使用assume仅仅表示将某个逻辑段和某个段寄存器关联起来;真正当作特定的段使用,需要在代码段中设置相应的段寄存器值,如ds, ss。

    ③ 段名代表的是段地址,是常数。不能使用mov直接送入段寄存器。

    第七章 更灵活的定位内存地址方法

    1.汇编指令: and和or

    and指令:① and指令语法格式及对操作数要求与add指令同

                     ② 可以实现将操作数指定位设置为0

    or指令:① or指令语法格式及对操作数要求与add指令同

                  ② 可以实现将操作数指定位设为1

    2.汇编中的字符处理

    在汇编源程序中:既可以使用诸如‘a‘这样的字符写法,也可以使用ASCⅡ码形式的写法。

    在debug中: a命令中不支持诸如‘a‘这样的写法

                          e命令中支持诸如‘a‘这样的写法,也支持ASCⅡ码形式的写法

    3.其它灵活的内存地址表示

    用[bx + idata]表示表示内存单元。idata表示常数。

    用[si]表示表示内存单元。

    用[si + idata]表示表示内存单元。idata表示常量。

    用[di]表示表示内存单元。

    用[di + idata]表示表示内存单元。idata表示常量。

    用[bx+di], [bx+si]表示表示内存单元。

    用[bx+di+idata], [bx+si+idata]表示表示内存单元。

    第八章 数据处理的两个基本问题

    1.汇编指令中操作数的类型

    常数位于cpu内部,指令缓冲器;寄存器位于cpu内部,寄存器;内存单元位于cpu外部,内存

    2.汇编指令中内存单元操作数的地址表示

    在8086中,可用于表示内存偏移地址的寄存器只有: BX, SI, DI和BP。

    这些寄存器可以单个出现在[]中,也可以以特定组合方式出现。

    使用BX, SI, DI表示偏移地址时,默认段地址在DS中;

    使用BP表示偏移地址时,默认段地址在SS中。

    3.汇编伪指令: db, dw, dd, dup

    data segment

    db 1,2,3; 每个数据分配1个字节

    dw 1,2 3; 每个数据分配2个字节

    dd 1,2,3; 每个数据分配4个字节

    data ends

    data segment

    db 0,0,0,0,0,0,0,0

    db 8 dup(0); 预留8个字节单元,每个单元值为0

    dd 8 dup(?); 预留8个字节单元,每个单元值未分配

    data ends

  • 相关阅读:
    Hibernate Annotation 生成数据库表(UUId)
    Hibernate用注解生成表
    Java语言 链接Oracle数据库
    Oracle 启动监听命令
    java.lang.IllegalArgumentException异常 数据库别名问题
    java.lang.IllegalArgumentException异常 返回值类型的问题
    java.lang.IllegalArgumentException异常 配置文件的问题
    JUnit 异常处理
    DIV水平垂直布局
    Java 链接SQL Server 数据库
  • 原文地址:https://www.cnblogs.com/Vincent12/p/10191702.html
Copyright © 2011-2022 走看看