第五章 [bx]和loop指令
[bx]
[bx] 意味 地址为bx中的内容的偏移地址
loop
用cx和loop指令配合实现循环的功能的框架如下:
1 | mov cx 循环次数 |
记个ps:汇编源程序中,数据不能以字母开头,所以字母开头的数据要在前面加0
Debug中跟踪 loop 的命令
p 命令 :在遇到loop指令时,用p
指令可以直接将循环运行至结束
g 命令 :g 要跳转的IP
可以直接使程序运行到要跳转的IP的地方
Debug和masm对指令的不同处理
先看区别
debug中:mov ax,[1]
意味将ds:[1]的内容送进ax
masm编译时: 上面这个指令意味将数值1送入ax
即[idata]在debug中是一个内存单元”idata”是内存单元的偏移地址;而masm编译器将[idata]解释为”idata”
解决方法
- 将偏移地址送进bx,用[bx]来达到上述目的
- 显示地在[…]前面加上段寄存器,如
mov al,ds:[0]
一段安全的空间
DOS和其他合法程序一般都不会使用0:200~0:2ff这256个字节空间
所以往这里面写内容一般是安全的
实验
程序在debug中加载后,cx寄存器的初始值就是程序段的长度。
Comments