• 汇编语言程序设计第五章


    5.1 【BX】

     mov ax,[bx]  功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。即:(ax)=((ds)*16+(bx))。

    mov [bx],ax 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将ax中的数据送入内存SA:EA中。即:((ds)*16+(bx))=(ax)。

    5.2 Loop指令

    loop指令的格式:loop 标号。CPU执行loop指令有两个步骤:①(cx)=(cx)-1②判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。

    三个要点:(1)在cx中存放循环的次数。(2)loop指令中的标号所标识的地址要在前面。(3)要循环执行的程序段,要写在标号和loop指令的中间。

    程序框架:

          mov cx,循环次数

    s:

          循环执行的程序段

           loop s

    5.3在Debug中跟踪用loop指令实现的循环程序

    在汇编源程序中,数据不能以字母开头,所以要在前面加0。

    5.4Debug和汇编编译器masm对指令的不同处理

    (1)在汇编语言中,如果一个指令要访问内存单元,则在指令中必须用[...]来表示内存单元,如果在[...]中直接用一个常量idata给出内存地址的偏移地址,就要在"[ ]"前面显示地给出段地址所在的段寄存器。

    比如,mov al,ds:[0]

    如果没有在“【】”的前面显示的给出段寄存器,比如mov al,[0]那么,编译器masm将把指令中的“【idata】”理解为“idata”。

    (2)如果在“【】”里用寄存器,比如bx,间接给出内存单元的偏移地址,则段地址默认在ds中。当然,也可以显示地给出段地址所在的段寄存器。

    5.5loop和[bx]的联合应用

    5.6段前缀

    出现在访问内存单元的指令中,用于显示地指明内存单元的段地址的“ds:”、“cs:”、“ss:”、“es:”,在汇编语言中称为段前缀。

    5.7一段安全的空间

    (1)直接向一段内存中写入内容,

    (2)这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误;

    (3)DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码;

    (4)需要直接向一段内存中写入内容时,就使用0:200~0:2ff这段空间。

    5.8段前缀的使用(见实验四)

  • 相关阅读:
    ssm(Spring+Spring mvc+mybatis)Service层实现类——DeptServiceImpl
    JBoss7 安装配置
    JBoss7 安装配置
    在Eclipse/MyEclipse中安装spket插件
    [转载]Node.js是什么
    [转载]Node.js是什么
    iis调度tomcat
    iis调度tomcat
    [转载]Win7 系统安装 配置IIS 详细图解
    在window环境下,设置tomcat自启动服务
  • 原文地址:https://www.cnblogs.com/sqy1999/p/10016089.html
Copyright © 2020-2023  润新知