汇编语言之----------------------[bx] loop

1、

在debug中我们写过类似的指令:MOV AX,[0]

表示将ds:0处的数据送入ax中。指令中,在“[...]”里用一个常量0表示内存单元的偏移地址

[bx]

对于编译器来说

mov ax, [0]

[0] 表示内存单元,他的偏移地址是0,但是编译器是认为只把0传过去而不是地址里面的数据

mov bx,0

mov ax,[bx]

这样间接的使编译器知道地址

2、

loop代表循环

3、

描述性符号()

(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

4、

mov ax,2000H

MOV DS,AX

MOV BX,1000Hds = 2000H bx=1000H

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

inc bx  //含义为bx中的内容加1

inc bx

mov [bx],ax///把ax中的数据送入bx中

inc bx

inc

bx

mov [bx],ax

inc bx

mov [bx],al

inc bx

mov [bx],al

5、loop

loop指令使用时要执行两步操作

(1)、(cx)= (cx) - 1

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

通常loop实现循环功能,cx存放循环次数

汇编语言之----------------------[bx] loop