- 3
- 0
- 约1.64万字
- 约 78页
- 2019-01-14 发布于湖北
- 举报
上述两条指令与FR的16位有关。特殊用途见下例。例: 将标志寄存器的单步标志TF置位。 PUSHF ;(FLAGS)→↓(SP) POP AX ;(SP)→AX OR AX, 0100H ;设置D8=TF=1 PUSH AX ;(AX)→↓(SP) POPF ;(SP)→↓FLAGS,即(AX)→↓FLAGS (3) LES (Load pointer using ES) 格式:LES reg16, mem32 ;(reg16)←(EA) (ES)←((EA)+2)) 功能:把源操作数指定的4个相继字节送指令指定的寄存器及ES寄存器中。 前两个单元内容(16位偏移量)装入指定通用寄存器, 后两个单元内容(段地址) 装入到ES段寄存器。 此指令常常指定DI寄存器。 用于写远地址指针。 例: 假设: (DS)=B000H (BX)=080AH 指令: LES DI, [BX] 执行指令后: (DI)=05A2H (ES)=4000H A2H 05H 00H 40H B000H: 080AH (DS) B080BH B080CH B080DH ... ... 存储器 (BX) 3.标志传送指令(Flag register transfer) 采用了隐含寄存器(AH、Flags)操作数方式。 8088有四条标志传送操作指令: (1). LAHF(Load AH into flags) (2). SAHF(Store AH into flags) (3). PUSHF(Push flags onto stack) (4). POPF(Pop flags off stack) (1).LAHF(Load AH from flags) 格式:LAHF ;(AH)←(PSW的低字节) 功能:标志寄存器低八位 ?(AH)。 LAHF指令操作图示意 (2). SAHF(Store AH into flags) 格式:SAHF ;(PSW的低字节)←(AH) 功能:(AH)送标志寄存器低八位。 SF ZF AF PF CF 0 1 2 3 4 5 6 7 TF IF DF OF 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 FLAGS AH SS:SP SS:SP (PSW) (4). POPF标志出栈 格式 POPF 执行 (PSW)← (SS:SP) (SP) ← (SP)+ 2 SS:SP SS:SP (PSW) (3). PUSHF标志入栈 格式 PUSHF 执行 (SP) ← (SP)- 2 (SS:SP) ← (PSW) 特点及注意事项: 无操作数的形式,操作数隐含为( PSW) PUSHF AX POPF CX PUSHF和POPF用于标志信息的保存和恢复 注意: (1) 标志位的影响 LAHF、PUSHF不影响标志位, SAHF、POPF由装入的值确定标志位的值, 即影响标志位。 (2)PUSH F、POPF用于保护调用过程前(PSW),过程返回后恢复。 例: … PUSH AX PUSH CX PUSH F CALL TRANS POPF POP CX POP AX … ? PUSH 入栈操作 格式 PUSH src 执行 ( SP) ← (SP)- 2 (SS:SP) ← (src) 特点: 单操作数指令 操作数为16位,可以是reg/segreg/mem, 不可以是data reg : AX, BX, CX, DX, SI, DI, BP, BX segreg : CS, DS, ES, SS mem : 字类型 SS:SP SS:SP (src) 例: PUSH AX 若执行前: (SS)= 2000H (SP)= 1002H (SS:SP)= 2010H (AX)= 1234H 3B 2A 10 低 高 20 地址 SS:SP 2000:1002 指令执行前 (AX)=1234h 则执行后: (SS)= 2000H (SP)
原创力文档

文档评论(0)