zoukankan      html  css  js  c++  java
  • 【笔记】【汇编语言】第7章 更灵活地定位内存的方法

    7.1 and 和 or 指令
      (1) and 指令:逻辑与指令,按位进行与运算。
      示例:
      mov al,01100011B
      and al,00111011B
      执行结果:(al)=00100011B
     
      (2) or 指令:逻辑或指令,按位进行或运算。
      示例:
      mov al,01100011B
      or al,00111011B
      执行结果:(al)=01111011B
     
    7.2 关于ASCII码
      简单的说,所谓编码方案,就是一套规则,它约定了在计算机中,用什么样的信息来表示现实对象。ASCII就是一种编码方案。
     
    7.3 以字符形式给出的数据
      我们可以在汇编程序中,用'......'的形式指明数据是以字符的形式给出的,编译器将把它们转化为相对应ASCII码。
     
    示例程序:
    assume cs:code,ds:data
    data segment
      db 'unIX'
      db 'foRK'
    data ends

    code segment
      start:mov al,'a'
            mov bl,'b'
            mov ax,4c00h
            int 21h
    code ends

    end start
     
      注:程序中,“db”表示定义字节型数据,“db 'unIX'”表示“db 75H,6EH,49H,58H”
     
    7.4 大小写转换问题
      Tips:“A”的十六进制编码为“41H”,二进制编码为“01000001B”,“a”的十六进制编码为“61H”,二进制编码为“01100001B”,所有英文字母的二进制编码中,从左数第三位为“0”的,是大写字母,为“1”的,是小写字母,可利用and或or的指令对字母进行大小写转换。
     
    7.5 [bx+idata]
      [bx+idata]也可以写成idata[bx]或者[bx].idata,表示((ds)*16+(bx)+idata)
     
    7.6 用[bx+idata]的方式进行数组的处理

    7.7 SI和DI
      SI和DI是8086CPU中和BX功能相近的寄存器,SI和DI不能够分成两个8位的寄存器来使用。

    7.8 [bx+si]和[bx+di]
      也可以写为:[bx][si]和[bx][di]
      [bx+si]=((ds)*16+(bx)+(si))
      [bx+di]=((ds)*16+(bx)+(di))
     
    7.9 [bx+si+idata]和[bx+di+idata]

    7.10 不同的寻址方式的灵活应用
      (1) [idata]用一个常量来表示地址,可用于直接定位一个内存单元
      (2) [bx]用一个变量来表示内存地址,可用于间接定位一个内存单元
      (3) [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元
      (4) [bx+si]用两个变量表示地址
      (5) [bx+si+idata]用两个变量和一个常量表示地址
     
      注:一般来说,在需要暂存数据的时候,我们都应该使用栈。
     
    实验6 实践课程中的程序
      略

  • 相关阅读:
    读取Excel还用POI?试试这款开源工具
    Maven optional 关键字透彻图解
    Java 8 Stream Api 中的 peek 操作
    Lombok 使用详解,简化Java编程
    C# 基础知识系列- 16 开发工具篇
    C# 基础知识系列- 15 异常处理篇
    C# 基础知识系列- 14 IO篇 流的使用
    Java Spring Cloud 实战之路-01 框架选型
    C# 基础知识系列- 14 IO篇 文件的操作
    C# 基础知识系列- 14 IO篇 文件的操作
  • 原文地址:https://www.cnblogs.com/AzikPhil/p/note_asm2_7.html
Copyright © 2011-2022 走看看