您的位置:首页 > 运维架构

第五章 [bx]和loop指令

2012-03-12 18:04 239 查看
1、用debug写命令和编译器写命令是不一样的。

2、完整的描述一个内存单元需要两种信息:1.内存单元的地址;2.内存单元的长度(类型)。我们用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出,如前边的AX,AL。

3、[bx]同样也表示一个内存单元,它的偏移地址在bx。

4、描述性符号“()”表示取内容。约定符号idata表示常量。

5、loop指令使用:1.在cx中存放循环次数;2.loop指令中的标号所标识地址要在签名;3.要执行的程序段要写在标号和loop指令中间。

6、考虑计算会不会溢出。

7、把内存单元xxxx:xxxx向ax赋值,令(ah)=0,(al)=(xxxxx)

8、分号“;”注释代码。

9、汇编的源程序中,数据不能以字母开头,所以要在以字母开头的数据前加0。

10、G命令跟踪loop(g+偏移地址),也可以是p命令!!(在将要执行loop的时候)。

11、在汇编源程序中取内存数据可以:ds:[0]。

12、loop和[bx]的联合应用:求连续内存的值相加

13、段前缀:出现在访问内存单元的指令中,用于显示地指明内存单元的段地址的ds、cs、ss、es,在汇编语言中称为段前缀。

14、学习汇编获得底层的编程体验,理解计算机底层的基本工作原理,所以我们尽量直接对硬件编程,而不去理会操作系统。

15、一段安全的空间:在一般的PC机中,DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2ff(0:200h~~0:2ffh)的256个字节的空间。所以,我们使用这段空间是安全的。这是为什呢?

View Code

assume cs:code
2
code segment
start :    mov ax, 0ffffh
mov ds, ax
mov bx, 0
mov dx, 0
mov cx, 12
s : mov al, [bx]
mov ah, 0
add dx, ax ;dx = dx + ax
inc bx     ;bx = bx + 1
loop s
14
mov ax, 4c00H
int 21H
17
code ends
end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: