汇编语言学习笔记——第五章 [BX]和loop指令

[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这段空间不会被使用到。