1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?其物理地址是多少?
(1)MOV AX,0ABH (3)MOV (5)MOV (7)MOV
AX,VAL
(2)MOV AX,[100H] (4)MOV BX,[SI] (6)MOV CL,[BX][SI] (8)MOV [BP][SI],100
AL,VAL[BX] VAL[SI],BX
2.已知SS=0FFA0H,SP=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。(标出存储单元的地址)
5
第二讲
3.2 指令系统--数据传输、算术运算
回顾:8086/8088的内部结构和寄存器,8086/8088的工作过程。
8086/8088的寻址方式及操作数地址的计算。
重点和纲要:要求学生了解指令的功能,掌握数据传送类,算术运算类指令的使用方法。(掌握指令内涵,会用)
教学方法、实施步骤 回 顾 讲 授 提 问 小 结 时间分配 5”×2 40” ×2 3” ×2 2” ×2 教学手段 板书 计算机 投影仪 多媒体课件等
讲授内容:
3.2 8086/8088 指令系统
8086/8088的指令系统可以分为以下六个功能组。 1.数据传送(Data Transter) 2.算术运算(Arithmetic) 3.逻辑运算(Logic) 4.串操作(String menipulation) 5.程序控制(Program Control) 6.处理器控制(Processor Control)
一、数据传送指令
主要介绍 MOV,XCHG、堆栈和地址传送指令。
6
1.数据传送MOV指令
一般格式:MOV OPRD1,OPRD2
MOV 是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。 功能:完成数据传送
具体来说,一条数据传送指令能实现:
⑴CPU内部寄存器之间数据的任意传送(除了代码段寄存器CS和指令指针IP以外)。
MOV AL,BL;字节传送 MOV CX,BX;字传送 MOV DS,BX
⑵立即数传送至CPU内部的通用寄存器组(即AX、 BX、CX、DX、BP、SP、SI、DI), MOV CL,4 MOV AX,03FFH MOV SI,057BH
⑶CPU内部寄存器(除了CS和IP以外)与存储器(所有寻址方式)之间的数据传送。
MOV AL,BUFFER MOV AX,[SI] MOV [DI],CX MOV SI,BLOCK[BP] MOV DS,DATA[SI+BX] MOV DEST[BP+DI],ES ⑷ 能实现用立即数给存储单元赋值
例如:MOV [2000H],25H
MOV [SI],35H
对于MOV 指令应注意几个问题:
①存储器传送指令中,不允许对CS和IP进行操作;
②两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送;
如我们需要把地址(即段内的地址偏移量)为AREAl的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以用CPU内部寄存器为桥梁来完成这样的传送:
7
MOV AL,AREAl MOV AREA2,AL
③两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOV AX,0;MOV DS,AX ④目的操作数,不能用立即寻址方式。
2.堆栈指令
(简述堆栈的概念及存取特点,如先进后出)
包括入栈(PUSH)和出栈(POP)指令两类。仅能进行字运算。(操作数不能是立即数) ⑴ 入栈指令PUSH 一般格式:PUSH OPRD
源操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(所有寻址方式)。入栈操作对象必须是16位数。 功能:将数据压入堆栈
执行步骤为:SP=SP-2;[SP]=操作数低8位;[SP+1]= 操作数高8位
例如:PUSH BX
执行过程为:SP=SP-1,[SP]=BH;SP=SP-1,[SP]=BL,如图2-8所示。 ⑵ 出栈指令POP 一般格式:POP OPRD 功能:将数据弹出堆栈
对指令执行的要求同入栈指令。
例如:POP AX 图2-8
POP [BX] POP DS
3.交换指令 XCHG
一般格式:XCHG OPRD1,OPRD2 功能:完成数据交换
这是—条交换指令,把一个字节或一个字的源操作数与目的操作数相交换。
8
相关推荐: