3、地址传送指令 1)LEA指令 格式: LEA OP1,OP2 功能:将OP2的偏移地址送入通用寄存器OP1。 说明:OP1必须是通用寄存器,OP2必须为存储 单元。(传送的是OP2的偏移地址,不是内容) 举例: LEA BX,BUFR;将BUFR的偏移地 址送入BX中
3、地址传送指令 1)LEA指令 格式:LEA OP1 ,OP2 功能:将OP2的偏移地址送入通用寄存器OP1。 说明:OP1必须是通用寄存器,OP2必须为存储 单元。(传送的是OP2的偏移地址,不是内容) 举例:LEA BX,BUFR ;将BUFR的偏移地 址送入BX中
3、地址传送指令 2)LDS指令 格式: LDS OP1,OP2 功能:完成一个地址指针的传送。(段地址和偏 移地址的传送)段地址送入DS,偏移地址送入 个16位的指针寄存器或变址寄存器 说明:OP1为一个16位的指针或变址寄存器, OP2为存储器。 举例: LDS SI,[BX 3)LES指令 与LDS指令相同,只是段地址送入ES
3、地址传送指令 2)LDS指令 格式:LDS OP1 ,OP2 功能:完成一个地址指针的传送。(段地址和偏 移地址的传送)段地址送入DS,偏移地址送入 一个16位的指针寄存器或变址寄存器。 说明:OP1为一个16位的指针或变址寄存器, OP2为存储器。 举例:LDS SI,[ BX ] 3)LES指令 与LDS指令相同,只是段地址送入ES
4、堆栈指令 堆栈是内存中的一个特定区域,由SS的内容和SP 的内容来决定。堆栈操作具有先入后出的特点。 PUSH堆栈压入指令 格式: PUSH OP 功能:将OP中的内容放入堆栈段中 POP堆栈弹出指令 格式: POP OP 功能:将堆栈段中的内容弹出到OP 说明:OP可以是段寄存器(CS除外)、通用寄 存器或内存的字
4、堆栈指令 堆栈是内存中的一个特定区域,由SS的内容和SP 的内容来决定。堆栈操作具有先入后出的特点。 • PUSH堆栈压入指令 格式: PUSH OP 功能:将OP中的内容放入堆栈段中 • POP 堆栈弹出指令 格式:POP OP 功能:将堆栈段中的内容弹出到OP。 说明:OP可以是段寄存器(CS除外)、通用寄 存器或内存的字
8000:1FFAH 8000:1FFBH sS=8000HSP=2004H SS:SP→8000 FFCH H 8000:1FFDH 8000:1FFEH F 8000:1FFFH E 8000:2000H D 8000:2001H 压栈时:SP-1,高字节送入SP所指单元~。8000200H B 8000:2003H 出栈时:SP所指单元内容弹出到低位;800200H SP-1 8000:2005H
8000:2005H 8000:2004H 8000:2003H 8000:2002H 8000:2001H 8000:2000H 8000:1FFFH 8000:1FFEH 8000:1FFDH 8000:1FFCH 8000:1FFBH 8000:1FFAH SS=8000H SP=2004H SS:SP A B C D E F G H A B C D E F G H SS:SP SS:SP SS:SP 压栈时:SP-1,高字节送入SP 所指单元~~。 出栈时:SP 所指单元内容弹出到低位; SP-1~~~~
8000:1FFAH 堆栈操作举例: 8000:1FFBH 8000:1FFCH 00 MOV AX, 8000H 8000:1FFDH 80 8000:1FFEH MOV SS, AX 4A 8000:1FFFH 3E MOV SP, 2000H 8000:2000H MOV DX, 3E4AH 8000:2001H 8000:2002H PUSH DX 8000:2003H PUSH AX 8000:2004H POP DX 8000:2005H POP AX AX=3E4AH DX=8000H
8000:2005H 8000:2004H 8000:2003H 8000:2002H 8000:2001H 8000:2000H 8000:1FFFH 8000:1FFEH 8000:1FFDH 8000:1FFCH 8000:1FFBH 8000:1FFAH 堆栈操作举例: MOV AX,8000H MOV SS,AX MOV SP,2000H MOV DX,3E4AH PUSH DX PUSH AX POP DX POP AX 3E 4A 80 00 AX=3E4AH DX=8000H