[BX]
mov ax,[bx]
代码解析:
bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中
即(ax) = ((ds)*16+(bx))
注意:在源程序中编写mov ax,[0]
指令,其含义为mov ax,0
。正确用法应该为mov ax,ds:[0]
。
inc bx
代码解析:
bx寄存器中的数值+1
Loop指令
assume cs:code
code segment
mov ax,2
mov cx,11 把循环次数送进cx存储器
s: add ax,ax
loop s 循环s标号到loop的代码段
mov ax,4c00h 返回
int 21h
code ends
end
程序解读:
(1)标号
在汇编语言中,标号代表一个地址。
上例中有一个标号s,它实际上标识了一个地址,这个地址处有一条指令:add ax,ax
(2)loop s
CPU执行loop指令的时候:
1. (cx) = (cx) - 1
2. 判断(cx)的值:若不为零,则转至标号处执行程序;若为零,则向下执行。
总结:
1. 在cx中存放循环次数。
2. loop指令对应的标号所标识地址要在前面。
3. 要循环执行的程序段写在标号和loop指令的中间。
4.
注意:在汇编源程序中,数据不能以字母开头,要在前面加0
mov ax,ffffh 错误
mov ax,0ffffh 正确
安全空间
在我们不能确定一段内存空间中是否存放着重要数据或代码的时候,不能随意向其中写入内容。
当我们在操作系统的环境工作时,操作系统将会给我们分配好空间。
但是在纯DOS环境下,DOS没有能力对硬件系统进行全面、严谨的管理。
一般来说:0:200-0:2ff
这段空间不会被使用到。