王爽《汇编语言》第三版第五章[bx]和loop指令

木卜 木卜     2022-08-21     508

关键词:

5.1 [bx]

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


5.2 Loop指令

  指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作:
    1.(cx)=(cx)-1;
    2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行。

  通常我们用loop指令来实现循环功能,cx 中存放循环次数。


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


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

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

    1.mov al, [0]
    2.mov al, ds:[0]
    3.mov al, [bx]
    4.mov al, ds:[bx]


5.5 loop和[bx]的联合应用


5.6 段前缀

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

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


5.7 一段安全的空间

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

  在一般的PC机中,DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2FF( 0:200h~0:2FFh)的256 个字节的空间。所以,我们使用这段空间是安全的。


5.8 段前缀的使用

 

参考资料:《小甲鱼汇编零基础入门》

 

     《汇编语言》第三版

王爽《汇编语言》第三版第十五章外中断

引言  CPU除了有运算能力外,还要有I/O(Input/Output,输入/输出)能力。 15.1接口芯片和端口  在PC系统的接口卡和主板上,装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,CPU将这些寄存器当作端口来访问。... 查看详情

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

   这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀。 1、[BX]的概念   [BX]和[0]类似,[0]表示内存单元的偏移地址是0。要完整... 查看详情

第五章[bx]和loop指令(代码片段)

疑惑:movax,4c00h的作用是什么,不加似乎会卡死。1.综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0403H。(1)源代码assumecs:codecodesegmentmovax,0b800hmovds,axmovcx,16movbx,07b8Hmovax,0403hs:mov[bx],... 查看详情

‘第五章[bx]和loop指令

<1>[BX]想要完整地描述一个内存单元,需要两种信息:(1)内存单元的地址(2)内存单元的长度(类型)。[BX]和[0]有些相似,表示一个内存单元,它的偏移地址在bx中。指令movax,[bx]的功能为将bx中存放的数据作为一个偏移... 查看详情

第五章[bx]和loop指令

1.完整的描述一个内存单元,需要的信息:a:内存单元的地址 b:内存单元的长度(类型)用[...]表示一个内存单元时,[]内的内容表示单元的偏移地址,段地址默认在ds寄存器中(也可以显示指出,如ss:[bx]),单元的长度(类型)有指... 查看详情

王爽《汇编语言》第三版第八章数据处理的两个基本问题

引言  本章中,我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理器都存在。  reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、... 查看详情

第五章[bx]和loop指令

要完整描述一个内存单元,需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。用[0]表示一个内存单元时,0代表单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如寄... 查看详情

汇编语言——第五章课后总结(代码片段)

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

第五章

5.1,2movax,[bx]表示将偏移地址和段地址分别在BX,DS的内存单元的内容放入ax中。incbx含义为bx内容加一。loop指令格式:    movcx,11  (cx存储循环次数,每次循环后-1,为0时转到loops后继续执行指令)s:   addax,ax    (... 查看详情

第五章总结

[BX]和loop指令1.内存单元间接表示  例:movax,[bx]  该指令就是把段地址为ds,偏移地址为bx的数据送给ax寄存器。 2.loop指令 格式:loop标号 loop指令需要配合cx使用 一般的使用框架:     ... 查看详情

汇编语言第五章总结

两种指令[BX]和loop指令下面将知识点总结如下:一、先介绍描述性符号()(ax)(al)(20000H)((ds)*16+(bx))()中的元素可以有三种类型:1.寄存器名 2.段寄存器名 3.内存单元的物理地址(20位数据)举例(X)应... 查看详情

第五章总结

两个约定:约定符号():表示寄存器或者一个内存单元的内容,如(ax)表示ax中内容,(bx)表示bx内容,(20000H)表示内存20000H单元的内容。约定符号idata表示常数。[bx]用法:[bx]为一个内存单元,其中bx是偏移地址,也就是内... 查看详情

汇编语言程序设计第五章

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

王爽《汇编语言》第三版第六章包含多个段的程序

6.1在代码段中使用数据    “dw”的含义是定义字型数据。dw即defineword。  由于它们在代码段中,程序在运行的时候CS中存放代码段的段地址,所以我们可以从CS中得到它们的段地址。  因为用dw定义的数据处于代码段的... 查看详情

汇编语言(第三版)王爽检测点2.1(代码片段)

检测点2.1写出每条汇编指令执行后相关寄存器中的值。movax,62627#AX=F4A3Hmovah,31H#AX=31A3Hmoval,23H#AX=3123Haddax,ax#AX=6246Hmovbx,826CH#BX=826CHmovcx,ax#CX=6246Hmovax,bx#AX=826CHaddax,bx#AX=04D8Hmoval,bh#AX=0482Hmovah,bl#AX=6C82Haddah,ah#AX=D882Haddal,6#AX=D888Haddal,al#AX=D810H... 查看详情

第五章

两个约定:约定符号():表示寄存器或者一个内存单元的内容,如(ax)表示ax中内容,(bx)表示bx内容,(20000H)表示内存20000H单元的内容。约定符号idata表示常数。[bx]用法:[bx]为一个内存单元,其中bx是偏移地址,也就是内... 查看详情

王爽《汇编语言》(第三版)实验9解析(代码片段)

简介题目请对照书本代码assumecs:codedatasegmentdb‘welcometomasm!‘db02h,24h,71h;要求的三个颜色对应的16进制代码dataendsstacksegmentdb16dup(0);也可以是下面的定义法:;dw8dup(0)stackendscodesegmentstart:;设置data段,以及ds:bx指向data段的第一个单元,;... 查看详情

汇编语言第五到八章总结

第五章 [BX]和loop1.内存单元间接表示:[bx]mov dl,[0]; dl ← ((ds)×16+0)mov bx,0mov dl,[bx]; dl ← ((ds)×16+(bx))可以使用bx间接访问内存单元。默认,段地址在ds。 2.loop指令(1)语法格式   loop&n... 查看详情