汇编学习笔记8

第八讲..由于前天把第7讲又听了一遍,昨天是第8讲.第7讲用了两天才听完.

 

第8讲继续讲述指令.

在第7讲里讲了三个指令(5个)

MOV

XCHG

LEA, LDS, LES

 

它们各有各的限制.

MOV, 源操作数和目的操作数不能都是存储单元,目的操作数不能是立即数,源操作数和目的操作数不能都是段寄存器,立即数不能作为目的操作数,代码段不能作为目的操作数,IP不能作为操作数。

 

XCHG,指令只能用于通用寄存器和存储单元之间,或通用寄存器之间交换数据。

 

LEA,LED,LES 地址传送指令,源操作数可以使用除立即数寻址和寄存器外的其它寻址方式。目的操作数可以是通用寄存器。

 

 

 

第8讲讲述了两个堆栈操作的指令和几个标志位操作。其中标志位操作不做重点。

1. PUSH   把数据压入堆栈指针寄存器中。先把BP - 2, 然后把操作数存入BP。操作数可以是通用寄存器,存储单元,段寄存器。

2. POP     把数据从堆栈指针寄存器中弹出。先把BP取出送入操作数,然后把 BP + 2。操作数可以是通用寄存器,存储单元,段寄存器,不能是代码段。

 

3. LAHF    把标志位低8位的标志位送入寄存器AH中。不影响其它位。

4. SAHF    把AH寄存器送入标志位低8位。不影响其他位。

5. PUSHF  把标志位压入堆栈。

6. POPF    把栈顶数据弹出到标志位。

 

 

由此,将两个数据交换的方法有三种。

1.由中间寄存器

MOV BX, AX

MOV AX, DS

MOV DS, BX

 

2.由XCHG

XCHG AX, VALUE

 

3.使用堆栈

PUSH DS

PUSH ES

POP ES

POP DS

posted @ 2010-12-04 10:54  杨海龙  阅读(270)  评论(0编辑  收藏  举报