第五章 [BX]和loop指令
1.[bx] 和内存单元的描述
[bx],就相当于[0],bx作为偏移地址
2.loop指令
这是一个循环指令,默认的计数器为cx,及cx表示循环的次数,在每一次循环的末尾cx-1,到cx为0退出循环。
如代码
mov cx, 3
mov bx,0
mov dx,0
s: mov al, ds:[bx]
mov ah,0
add dx,ax
inc bx
loop s
3.定义()
(ax)表示ax的内容,(20000H)表示20000H单元里面的内容。
((ds)*16+(bx)) 表示偏移地址为bx,段地址为ds的内存单元里面的内容。
4.约定符号idata表示常量
5.1 [BX]
用法就是BX作为偏移地址。
这里有一个指令
inc bx 表示bx自加一,比add bx,1要快不少
5.2 Loop指令
用cx寄存器来存放循环次数
格式为
标号:循环代码
loop 标号
如:
s:mov ax,1
loop s
CPU在执行loop时要进行俩步操作: (1) (cx) = (cx) - 1 (2) 判断cx的值,不为0则跳转值标号处执行程序。
不管cx的值,循环段代码至少执行1次。
5.5 [bx]和loop结合使用
相当于就是循环加可变的偏移值
5.6 段前缀
段前缀就是如同 ds:[bx] 里面的ds:
有 ds: cs: ss: es: 这些称为段前缀
5.7 一段安全的空间
一般来说在dos方式下,0:200 ~ 0:2ff ( 00200H ~ 002ffH ) 的256个字节空间是不会有程序使用的。
所以这一段空间是安全的。不过为了安全起见,进入DOS后可以Debug查看一下这一段空间是不是都为0.
所以以后向一个段中写入内容时,使用0:200 ~ 0:2ff 这段空间