微型计算机豪3-2
第三节 80X86指令系统 一、数据传送指令 1、通用数据传送指令(MOV、PUSH、POP、HCXG等)。 (1)最基本的传送指令: MOV DEST,SRC ;(SRC) (DEST) 寄存器之间传送(除CS 和 IP) MOV AL ,BL MOV DL,CH MOV DX,BX MOV AX,ES MOV DS,AX 立即数送通用REG或存储器 MOV CL ,4 MOV AX ,03FFH MOV WORD PTR [100H] ,5678H MOV MEM ,5 ;MEM是以定义的变量(符号地址) 扩展传送指令 格式: MOV SX DEST, SRC MOV ZX DEST, SRC 功能:将源操作数由8位扩展到16位,送目的操作数;或将源操作数由16位扩展到32位,送目的操作数。其中SX表示带符号扩展, ZX表示无符号扩展。 2、堆栈指令 PUSH SRC (源操作数可REG、M、立即数,目的隐含SP) PUSH AX ;通用REG PUSH DS ;段REG PUSH [1000H] ;直接寻址,字单元。 PUSH DATA ;直接寻侄(字变量) PUSH EBX PUSH DWORD PTR [DI] PUSHW 0A123H ; 立即数入栈(16位) PUSHD 20H ; 立即数入栈(32位) PUSHA ;将16位通用寄存器圧入堆栈 PUSHAD ;将32位通用寄存器圧入堆栈 POP DEST (目的可REG、M,源隐含SP) 关系与入栈对应] 注意:目的操作数不允许位CS以及立即数。 3、交换指令 XCHG、BSWAP XCHG DEST , SRC 通用REG 通用REG ;将源操作数与目的操作数的 M M 内容互换。 没有段REG和立即数,存储器之间不能交换。 XCHG AL,BL XCHG BX,CX XCHG [2530H] ;(CX)和2530H,2531H两单元内容交换。 BSWAP REG 功能:将32位通用寄存器中的第1个字节和第4个字节交换,第2个字节和第3个字节交换。 见p77 例题 3.18 5、地址传送指令LEA、LDS、LES 1)、取有效地址指令 LEA LEA DEST , SRC ;EA(M寻址) 16位通用REG LEA BX ,[2728H];将(相对于DS)偏移地址2728H送BX。 LEA DX ,BETA[BX][SI]; LEA BX,VAR; 2)、取指示器到DS的指令LDS LDS DEST,SRC ;(SRC是 32 位的逻辑地址指针,低字节的地址DEST是 16 位的通用REG) 6、标志传送指令 读取标志 LAHF ; (FR)低 8 位 → AH 设置标志 SAHF ; AH → (FR)低 8 位 标志进栈 PUSHF ;(FR 16位) → (SP) 标志出栈 POPF ; (SP) → (FR 16位) 标志进栈 PUSHFD ;(EFR 32位)→ SP) 标志出栈 POPFD ; (SP) → (EFR 32位) 例:将标志寄存器的 TF 置 1 。 PUSHF POP AX