汇编笔记3

第五章 [bx]和loop指令

[bx]

[bx] 意味 地址为bx中的内容的偏移地址

loop

用cx和loop指令配合实现循环的功能的框架如下:

1
2
3
4
mov cx 循环次数
s:
循环执行的程序段
loop s

记个ps:汇编源程序中,数据不能以字母开头,所以字母开头的数据要在前面加0

Debug中跟踪 loop 的命令

p 命令 :在遇到loop指令时,用p指令可以直接将循环运行至结束
1

g 命令 :g 要跳转的IP 可以直接使程序运行到要跳转的IP的地方
2

Debug和masm对指令的不同处理

先看区别

debug中:mov ax,[1]意味将ds:[1]的内容送进ax
masm编译时: 上面这个指令意味将数值1送入ax

即[idata]在debug中是一个内存单元”idata”是内存单元的偏移地址;而masm编译器将[idata]解释为”idata”

解决方法

  1. 将偏移地址送进bx,用[bx]来达到上述目的
  2. 显示地在[…]前面加上段寄存器,如mov al,ds:[0]

一段安全的空间

DOS和其他合法程序一般都不会使用0:200~0:2ff这256个字节空间

所以往这里面写内容一般是安全的

实验

程序在debug中加载后,cx寄存器的初始值就是程序段的长度。

Comments