汇编语言之----------------------[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存放循环次数