NoteDeep

[bx]

mov ax, [0]
mov al, [0]
字节

描述内存单元:地址、长度
不能
mov ax, [0]
改成
mov bx, 0
mov ax, [bx]
或者
mov ax, ds:[0]

loop

和循环有关

约定:描述性符号()

表示一个寄存器或一个内存单元中的内容
(ax) = 0010H;
(21000H) = 0010H;
(ax) = ((ds) * 16 + 2);
((ds) * 16 + 2) = (ax);
(ax) = (ax) + 2;
... ...

约定:idata:表示常量

mov ax, [idata]


inc ax
ax = ax + 1

Loop指令

loop 标号
标号:
loop和cx紧密相连

cx = cx - 1;
判断cx中的值, 不为0则转移到标号处执行程序, 如果为0则向下执行

通常用loop指令实现循环, cx中存放循环次数
也可以用jmp指令实现循环


编译器默认十进制, H:代表是16进制

要点:

cx存放循环的粗疏
标号标识的地址在前面
程序段要写在标号和loop之间
mov cx, 循环次数
s:
循环执行的程序段
loop s

loop:

cx = cx - 1
判断cx
是否跳转


在debug中跟踪loop

G命令/P命令

g 偏移地址
直接跳到相应的代码位置
p
直接跳过当前循环

loop和[bx]的联合应用

计算一段内存单元中数据的和, 存储在dx中
数据是否会超出范围
8位数据怎么放入16位寄存器

用一个16位寄存器作中介


段前缀

访问内存单元的段地址默认在ds中
也可以显式地给出段地址


一段安全的空间

在8086模式中, 随意向内存中写入内容很危险, 是否是重要的系统数据或代码

0:200---0:2FF
这段空间是安全的

es:
附加段, 空闲的段寄存器

实验四:





























评论列表

    [bx]Loop指令在debug中跟踪loop
    loop和[bx]的联合应用
    段前缀
    一段安全的空间
    实验四: