[BX]和loop指令01 – 零基础入门学习汇编语言23

第五章:[BX]和loop指令01

让编程改变世界

Change the world by program

[bx]和内存单元的描述

[bx]是什么呢?

和[0]有些类似,[0]表示内存单元,它的偏移地址是0。

mov ax, [0]

mov al, [0]

我们要完整地描述一个内存单元,需要两种信息:

内存单元的地址;

内存单元的长度(类型)。

我们用[0]表示一个内存单元时,0 表示单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出,如前边的AX,AL。

[bx]同样也表示一个内存单元,它的偏移地址在bx中,比如下面的指令:

mov ax,[bx]

mov al,[bx]

loop指令

英文单词“loop”有循环的含义,显然这个指令和循环有关。

描述性符号“()”

为了描述上的简洁,在以后的课程中,我们将使用一个描述性的符号 “() ”来表示一个寄存器或一个内存单元中的内容。

我们看一下(X)的应用,比如:

(1)ax中的内容为0010H,我们可以这样来描述:(ax)=0010H;

(2)2000:1000 处的内容为0010H,我们可以这样来描述:(21000H)=0010H;

(3)对于mov ax,[2]的功能,我们可以这样来描述:(ax)=((ds)*16+2);

(4)对于mov [2],ax 的功能,我们可以这样来描述:((ds)*16+2)=(ax);

(5)对于 add ax,2 的功能,我们可以这样来描述:(ax)=(ax)+2;

(6)对于add ax,bx的功能,我们可以这样来描述:(ax)=(ax)+(bx);

(7)对于push ax的功能,我们可以这样来描述:

(sp) = (sp)-2

((ss)*16+(sp))=(ax)

(8)对于pop ax 的功能,我们可以这样来描述:

(ax)=((ss)*16+(sp))

(sp)=(sp)+2

约定符号idata表示常量

我们在Debug 中写过类似的指令:mov ax,[0],表示将 ds:0 处的数据送入ax中。指令中,在“[…]”里用一个常量0表示内存单元的偏移地址。

以后,我们用idata表示常量。

例如:

mov ax,[idata] 就代表 mov ax,[1]、mov ax,[2]、mov ax,[3] 等。

mov bx,idata 就代表 mov bx,l、mov bx,2、mov bx,3 等。

mov ds,idata 就代表 mov ds,1、mov ds,2 等,它们都是非法指令。

[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.1

程序和内存中的情况如下图所示,写出程序执行后,21000H~21007H 单元中的内容。

宽客网,量化投资,宽客俱乐部

程序和内存中的情况

思考后看分析。

问题5.1分析

(1)先看一下程序的前三条指令:

mov ax,2000H

mov ds,ax

mov bx,1000H

这三条指令执行后

ds=2000H,bx=1000H

(2)再看第4条指令:

mov ax,[bx]

指令执行前:

ds=2000H,bx=1000H

则mov ax,[bx]将把内存2000:1000处的字型数据送入ax中。

该指令执行后:

ax=00beH。

(3)再看第5、6条指令:

inc bx

inc bx

指令执行前:

bx=1000H。

执行后:

bx=0002H。

(4)再看第7条指令:

mov [bx],ax

指令执行前:

ds=2000H,bx=1002H

则 mov [bx],ax将把ax中的数据送入内存2000:1002处。

指令执行后:

2000:1002单元的内容为BE,2000:1003单元的内容为00。

宽客网,量化投资,宽客俱乐部

程序和内存中的情况

视频下载
技术, IT技术, 汇编语言, 视频教程


风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部