1.要完整的描述一个内存单元,需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。

2.“()”表示一个寄存器或一个内存单元中的内容。如:(ax)表示ax中的内容。

“()”中的元素可以有3种类型:1.寄存器名;2.段寄存器名;3.内存单元的物理地址(一个20位的数据)。

3.约定符号idata表示常量

用idata表示常量。

3.[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)).

4.loop指令

loop指令的格式:loop标号,CPU执行loop指令,要进行两步操作,

(1).(cx)=(cx)-1;

(2).判断cx中的值,不为零则转至标号处执行程序,如果为零则转向下执行。

可以看出:cx中的值影响loop指令的执行结果。通常我们用loop指令来实现循环功能,cx中存放循环次数。

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

(1).Debug中,mov ax,[0]表示将ds:0处的数据送入ax中。

(2).在汇编程序中,“mov ax,[0]”被编译器当作指令“mov ax,0”处理。

即:[idata]在Debug时,Debug将它解释为一个内存单元,“idata”是内存单元的地址偏移;而编译器将“[idata]”解释为“idata”。在源程序中,要访问内存单元,可以将偏移地址先送入bx寄存器中,用[bx]的方式来访问内存单元。又或者在“[]”里面用一个常量idata直接给出内存单元的地址偏移地址,就要在“[]”的前面显式的给出段地址所在的寄存器,如:mov al,ds:[0]。

6.段前缀

指令“mov ax,[bx]”中,内存单元的偏移地址由bx给出,而段地址默认在ds中。我们可以在访问内存单元的指令中显式的给出内存单元的段地址所在的段寄存器。

(1).mov ax,ds:[bx]

将一个内存单元的内容送入ax,这个内存单元的长度为2个字节(字单元),存放在一个字,偏移地址在bx中,段地址在ds中。

(2).mov ax,cs:[bx]

将一个内存单元的内容送入ax,这个内存单元的长度为2个字节(字单元),存放在一个字,偏移地址在bx中,段地址在cs中。

……

7.一段安全的空间

在8086模式中,随意向一段内存空间写入内容是很危险的,因为这段空间中可能存在重要的系统数据或代码。

(1).我们需要直接向一段内存中写入内容:

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

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

(4).以后可以直接使用0:200~0:2ff这段空间。

汇编-5.0-[BX]和loop指令的更多相关文章

  1. 80806汇编(5)——[BX]和Loop指令

    80806汇编(5)--[BX]和Loop指令 已经好久没写点东西了,国庆节就一直想弄个个人网站,这段时间一直在弄那个,虽然有现成的框架(Hexo),但是总想弄出自己的效果来,但是最后还是有些差强人意 ...

  2. 王爽汇编第五章,[bx]和loop指令

    目录 王爽汇编第五章,[bx]和loop指令 [bx]和loop指令 例子: 王爽汇编第五章,[bx]和loop指令 [bx]和loop指令 [bx]之前我们介绍寄存器的时候,已经很详细的说明过了,b ...

  3. [汇编学习笔记][第五章[BX]和loop指令]

    第五章[BX]和loop指令 前言 定义描述性符号“()”来表示一个寄存器或一个内存单元的内容,比如: (ax)表示ax中的内容,(al)表示al的内容. 约定符号ideta表示常量. 5.1 [BX ...

  4. 汇编语言-[BX]和loop指令

    汇编语言-[BX]和loop指令 [BX]指令介绍 mov ax,[bx] 功能: bx为偏移地址,段地址默认为ds.因此,上面指令作用就是将ax中的数据送入内存ds:bx处,即:((ds)*16 + ...

  5. [汇编语言]-第五章[bx]和loop指令

    1- [bx]和内存单元的描述 [0]表示内存单元, 他的偏移地址为0 mov ax,[0] 将一个内存单元的内容送入到ax.这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为0,段地址在d ...

  6. 第五章 [BX]和loop指令

    5.1 [bx] [bx]是什么 和 [0] 有些类似,[0] 表示内存单元,它的偏移地址是 0. 例如: mov ax, [0] 内存以字节为单位:ax以字(16bit = 2Byte)为单位:al ...

  7. 小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令

         这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀.   1.[BX]的概念      [BX]和[0]类似 ...

  8. [bx]和loop指令

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. 汇编语言-[bx]和loop指令和多个段

    5.1 [BX]和内存单元的描述 要完成描述一个内存单元,需要两种信息: 内存单元的地址: 可以用 [0] 表示一个内存单元, 0 表示单元的偏移地址,段地址默认在 ds 中: 同样也可以用 [bx] ...

  10. 实验4 [BX]和loop指令

    实验内容: 1.综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0441H. 实验结果: 若填充的数据为:0403h,则实验结果转变为: ...

随机推荐

  1. Java如何查找系统的代理设置?

    在Java编程中,如何查找系统的代理设置? 以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置 ...

  2. C# 反射总结 获取 命名空间 类名 方法名

    一.获取 命名空间 类名 方法名 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  3. Php实现版本比较接口

    版本号格式: A.B.C, 字符串形式 <?php // 强更版本, 客户端版本 $f = '5.8.5'; $c = '5.8.4'; // 字符串分割并转换成整数数组 function Sp ...

  4. 仿迅雷播放器教程 -- 封装VLC (5)

        虽然上个教程中10多行代码便做出了一个播放器,但如果加上快进快退等功能的话,代码都会挤在一团,阅读性很差,所以这个版本将对VLC进行封装,由于第一个教程已经进行了ffmpeg的封装,所以这里将 ...

  5. 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)

        代码下载:http://download.csdn.net/detail/qq316293804/6409417   昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常 ...

  6. [Laravel] 11 - WEB API : cache & timer

    前言 一.资源 Ref: https://www.imooc.com/video/2870 二.缓存 缓存:静态缓存.Memcache.redis缓存 Ref: [Laravel] 09 - Func ...

  7. [UI] 04 - Bootstrap: layout & navigation

    前言 一.资源 From: http://www.imooc.com/code/2881 Ref: http://www.runoob.com/try/bootstrap/layoutit/[拖拽布局 ...

  8. swagger netframework webapi

    参考:https://blog.csdn.net/wjk343977868/article/details/47086137

  9. file类型input框设置上传相同文件,并都可以触发change事件。

    在使用file类型input框是,删除了第一次上传到文件,再次上传相同文件,无法触发change事件,所以在删除的js上添加如下js代码: document.getElementById('fileU ...

  10. cordova(安卓)(腾讯信鸽注册绑定与反绑定) 插件开发

    腾讯信鸽快速开发指南 http://developer.xg.qq.com/index.php/Android_SDK%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97 本文参考 ...