8086汇编——课堂笔记整理1

Data movement instruction

MOV

1.REG,IMM/REG/MEM/SEG

   MEM,REG/IMM/SEG   *无 MOV MEM,MEM

   SEG,REG16/MEM16

    *无 IMM 作为目的操作数的,目的操作数是存储地址

    *SEG:16bit不变

2.无:

  MEM,MEM

  SEG,IMM

  MOV指令中不操作FLAG

  目的操作数中无 IP(instruction pointer register)

  目的操作数中无 CS(CODE SEGMENT)

  SEG,SEG

  不等宽

   2个操作数dst,src

3.e.g.

   MOV AX,@data

   MOV DS,AX  ;将定义的数据加载到指令块中,MOV DS,@data(seg,imm)错误

tip:

A BYTE 100  ;A=变量名=符号地址=内存地址MEM   直接寻址

                  ;offset A=imm

MOV VAL1,VAL2;MOV MEM,MEM

tip:

OFFSET   SEG

return OFFEST/SEG of the memory location,返回的是imm

MOV DS,OFFSET VAL1;MOV SEG,IMM

tip:

EQU    =

EQU:constant     =:初始化

NUMBER EQU 100

MOV NUMBER,VAL2;IMM不能做dst

MOV NUMBER,VAL2

 PUSH

PUSH SRC

栈底是高地址,SP(堆栈指针从栈底向上移,高地址->低地址),stack LIFO

压栈:先移动堆栈指针,再存入数据

存储单元是8bit,所以

16bit:SP<-(SP)-2

          ((SP)+1,(SP))<-(src)  (高地址,低地址)---(数据高位,数据低位)

POP

POP DST

SP下移(低地址->高地址)

弹栈:先弹出数据,再移动堆栈指针

DST<-((SP)+1,(SP))

SP<-(SP)+2

CS 不做dst,不能POP CS

LEA

load effective address instruction

effective address==offset address

LEA REG,MEM

tip:

(BX):表示BX的有效地址

e.g.1  寄存器

LEA DI,[BX] ;将BX的有效地址存入DI

MOV SI,[BX] ;将内存中的数据存入SI  segment*10H+(BX)  中存的数据

e.g.2  符号地址

LEA DI,BUFFER  ;BUFFER 的偏移地址MOV DI,BUFFER  ;2000H:BUFFER中的数据

 tip:

LEA  任意存储器的有效地址  寄存器&符号地址

OFFSET  符号地址

XCHG

交换register,register/memory的contents

无  XCHG MEM,MEM,

     XCHG SEG,SEG/MEM/REG

宽度一致

SAHF

改变FLAG REGISTER的低8位

AH -> FLAG低8位

LAHF

FLAG低8位 -> AH

 

posted @ 2016-04-02 16:12  ShellHan  阅读(317)  评论(0编辑  收藏  举报