注意 指令不破坏源操作数的内容。 MOV 指令不破坏源操作数的内容。 源操作数和目的操作数长度应该 相等。 相等。MOV BX, AL × MOV 指令不允许从存储单元直接传送 到存储单元。 到存储单元。MOV [BX],[0100H] ×
(1) 堆栈 堆栈是按“后进先出”或“先进后出”的原则存取信息的一种存储 堆栈是按“后进先出” 先进后出” 机构。 机构。 是通过存储器的一部分来实现的。 是通过存储器的一部分来实现的。
进栈指令: 进栈指令: 执行操作: 执行操作: 出栈指令: 出栈指令: 执行操作: 执行操作:
(DST) ← ( (SP)1, (SP) ) (SP) ← (SP) 2 堆栈: 先进后出’的存储区,段地址存放在SS SS中 堆栈:‘先进后出’的存储区,段地址存放在SS中, SP在任何一个时间里都指向栈顶,进出栈后自动修改SP。 在任何一个时间里都指向栈顶, SP。 在任何一个时间里都指向栈顶 进出栈后自动修改SP 注意: 注意
1.PUSH、 POP指令不可以使用立即数 、 指令不可以使用立即数 2.压入、弹出数据是以字为单位 压入、 压入 3.不影响标志位 不可以使用 不影响标志位,不可以使用 不影响标志位 不可以使用POP CS或POP IP 或
(4) 段寄存器与通用寄存器、存储器之间相互传送 段寄存器与通用寄存器、
立即数不能直接传送到段寄存器中。 立即数不能直接传送到段寄存器中。MOV ES ,2000H × 源操作数与目的操作数不能同时是段寄存器, 源操作数与目的操作数不能同时是段寄存器,即不允许从段寄存器直接 传送到段寄存器。 传送到段寄存器。
* MOV segreg, mem/reg(自学!) 自学! 自学 此指令执行完后不影响中断, 此指令执行完后不影响中断,要等 下一条指令执行完后才相应中断。 下一条指令执行完后才相应中断。如: MOV SS, AX MOV SP, BX 若要修改堆栈指针, 即:若要修改堆栈指针,则必须先修 后修改SP,反之MOV SP, BX 改SS后修改 ,反之 后修改 MOV SS, AX 则可能插入中断,引起错误。 则可能插入中断,引起错误。
•堆栈操作必须以字为单位 堆栈操作必须以字为单位 PUSH AL × •不影响标志位 不影响标志位 •不能用立即寻址方式 不能用立即寻址方式(286及其以上可以 及其以上可以)PUSH 1234H × 不能用立即寻址方式 及其以上可以 • DST不能是 不能是CS /IP POP CS 不能是 × POP IP ×
• 数据传送指令 • 算术指令 • 逻辑指令 • 串处理指令 • 控制转移指令 • 处理机控制与杂项操作指令
• 指令的汇编格式 • 指令的基本功能 • 指令支持的寻址方式 • 指令的执行对标志位的影响 • 指令的特殊要求
* 不影响标志位 * REG 不能是段寄存器 不能是段寄存器 * src必须为存储器寻址方式
(2)堆栈操作指令 堆栈操作指令 入栈指令: 入栈指令 指令功能: 指令功能 执行的操作: 执行的操作 SS SP 0200H 000AH
数据传送指令的功能是将数据、地址或立即数传送到寄存器或存储单元中。 数据传送指令的功能是将数据、地址或立即数传送到寄存器或存储单元中。 1.通用数据传送指令 通用数据传送指令 通用数据 格式: 格式: MOV DST ,SRC
DST是目的操作数,可以是寄存器或存储单元。 是目的操作数,可以是寄存器或存储单元。 是目的操作数 src是源操作数,可以是寄存器、存储单元或立即数。 是源操作数,可以是寄存器、存储单元或立即数。 是源操作数 (1)立即数传送给通用寄存器或存储单元 ) 例如: 例如:MOV BL,44 , MOV AX,3450H , 不影响标志位。 不影响标志位。 立即数、CS和IP不能 立即数、CS和IP不能 做目的操作数 注意
格式: 格式 XLAT 功能: 使换码器AL中的一个值变换为内存表格中的某个值 中的一个值变换为内存表格中的某个值. 功能 使换码器 中的一个值变换为内存表格中的某个值 例如:通信系统中用到一种编码 其中每个码由 组成, 例如 通信系统中用到一种编码,其中每个码由 个1、3个0组成,这种 通信系统中用到一种编码 其中每个码由2个 、 个 组成 代码非常容易检错和纠错。具体编码如下: 代码非常容易检错和纠错。具体编码如下: 若要将数字3转换成对应的代码, 若要将数字 转换成对应的代码, 转换成对应的代码 则将该数字送AL,表的首地址 则将该数字送 , 送BX中。 中 操作步骤: 操作步骤: MOV BX ,2000H MOV AL , 3 XLAT
1.目的操作数和源操作数不能均为内存单元 目的操作数和源操作数不能均为内存单元 2.段寄存器和 寄存器既不能作为交换指令的源操作数 , 也不能作为 段寄存器和IP寄存器既不能作为交换指令的源操作数 段寄存器和 交换指令的目的操作数 3.DST、SRC不允许是段寄存器、立即数和 寄存器 、 不允许是段寄存器、 不允许是段寄存器 立即数和IP寄存器 4. 不影响标志位
执行的操作: 的低字节) 执行的操作: (FLAGS 的低字节) (3)标志寄存器入栈指令 ) 格式为: 格式为:PUSHF (4) 标志寄存器出栈指令 ) 格式为: 格式为:POPF