美文网首页
汇编语言:七、[BX]和loop指令

汇编语言:七、[BX]和loop指令

作者: Zidahong | 来源:发表于2019-04-30 20:47 被阅读0次

[bx]

[bx]表示一个内存单元,它的偏移地址在bx中

()

(ax)表示寄存器ax中的内容

inc ax

ax中的内容+1

loop指令

loop的用法

loop的功能:实现循环

用法:如上图,执行loop s语句时,执行以下操作

①cpu执行(cx)=(cx)-1

②判断(cx)是否为0,如果为零,往下执行代码,如果不为零,回到标志地点s再次循环运行。

在debug中跟踪用loop指令实现循环程序

考虑一个问题:

计算ffff:006单元中的数乘以3,结果存储在dx中

问:

①结果是否会超过dx的存储范围

答:不会,一个存储单元有八个位,数的范围在0-255之间,用它乘3不会超过65535(2^16=65536)

②用循环累加实现乘法,用哪个寄存器?

将ffff:6单元中的数值赋给ax,用dx进行累加。先设(dx)=0,如何计算三次(dx)=(dx)+(ax)

③ffff:6单元是一个字节单元,ax是一个16位寄存器,数据的长度不一样,如何赋值?

赋值是指数据的值大小相等,虽然它们的数据长度不一样,但是大小是相等的

对以上问题进行汇编

注意:在汇编源程序中,数据不能以字母开头,以字母开头的数据要在前面加0

源程序

用debug进行追踪

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

debug对形如 mov ax,[0] 等指令的解释和masm有所不同

debug将[idata]解释为一个内存单元

但masm将其解释为idata

如何解决这个问题

将偏移地址送入bx寄存器,用[bx]的方式来访问内存单元

loop和[bx]的联合使用

考虑一个问题

计算ffff:0~ffff:b单元中的数据和结果存储在dx中

①能否将ffff:0·ffff:b中的数据直接累加到dx中

答:不行,因为ffff:0~ffff:b中的数据是8位的,不能直接加到16位的寄存器中

②能否将数据累加到dl中,从而实现累加到dx中?

答:不行,超过范围

段前缀

如指令 mov ax,cs:[0] ,访问内存单元指令中,用于显式地指明内存单元的段地址,‘ds:’,‘cs:’,‘ss:’,‘es:’,在汇编语言中称为段前缀

一段安全空间

如果向放有重要数据的内存中写入数据,可能会引发错误,DOS方式下,一般情况,0:200~0:2ff空间没有系统或其他程序的重要数据代码,可以在 其中写入数据。

段前缀的使用

问题:将内存ffff:0~ffffb单元中的数据复制到0:200~0:20b单元中

代码如下:

代码

es寄存器

附加段寄存器ES(Extra Segment)

指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。

相关文章

  • 汇编语言:七、[BX]和loop指令

    [bx] [bx]表示一个内存单元,它的偏移地址在bx中 () (ax)表示寄存器ax中的内容 inc ax ax...

  • [bx] 和 loop 指令

    [bx] [bx]是什么? [bx] 它表示一个内存单元,跟 [0] 一样,它的偏移地址在[bx]中 [bx] 与...

  • 汇编语言(第3版)王爽

    一、基础知识 mov ax,bx把BX内容送到AX中。汇编语言有3类指令,汇编指令、伪指令,其他符号。CPU通过地...

  • 《汇编语言》指令

    指令理解 loop:循环指令,需要在cx中记录循环计数器inc:+1指令, inc bx(将bx中的值+1)jcx...

  • 汇编语言

    @[toc] 汇编语言 汇编语言的主体是汇编指令 操作 寄存器bx的内容送到ax中 机器指令 1000100111...

  • 【汇编语言】第 5 章 [BX] 和 loop 指令

    版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...

  • 关于逆向的一点儿小知识(二)

    内存寻址方式 mov ax,[bx] ax=[ds*10H+bx] loop 循环指令,循环次数由计数寄存器CX...

  • 第 5 章 [BX]和loop指令

    1. [bx]和内存单元的描述

  • 汇编五

    Loop指令 loop指令和cx寄存器配合使用,用于循环操作类似高级语言的for,while使用格式 loop指令...

  • 汇编简单知识点整理

    1.汇编语言的AX,BX,CX,DX,分别表示什么 ? 汇编语言中的AX、BX、CX、DX是CPU内部的通用寄存器...

网友评论

      本文标题:汇编语言:七、[BX]和loop指令

      本文链接:https://www.haomeiwen.com/subject/sipynqtx.html