《微机原理与接口技术38086寻址方式与指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术38086寻址方式与指令系统.ppt(30页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章第第3章:章:3.3 数据传送类指令数据传送类指令数数据据传送送是是计算算机机中中最最基基本本、最最重重要要的的一一种种操操作作, ,传送指令也是最常使用的一送指令也是最常使用的一类指令指令传送指令把数据从一个位置送指令把数据从一个位置传送到另一个位置送到另一个位置除除标志寄存器志寄存器传送指令外,均不影响送指令外,均不影响标志位志位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA第第3章:章: 3.3.1 通用数据传送指令通用数据传送指令提供方便灵活的通用提供方便灵活的通用传送操作送操作有有3条指令条指令MOVXCHGXLATMOVMOVXCHGXCHGXL
2、ATXLAT第第3章:章:1. 传送指令传送指令MOV(move)把把一一个个字字节或或字字的的操操作作数数从从源源地地址址传送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示演
3、示第第3章:章:MOV指令立即数传送指令立即数传送mov cl,4;cl4cl4,字节传送,字节传送mov dx,0ffh;dx00ffhdx00ffh,字传送,字传送mov si,200h;si0200hsi0200h,字传送,字传送mov bvar,0ah;字节传送字节传送;假设;假设bvarbvar是一个字节变量,定义如下:是一个字节变量,定义如下:bvar bvar dbdb 0 0mov wvar,0bh;字传送字传送;假设;假设wvarwvar是一个字变量,定义如下:是一个字变量,定义如下:wvar wvar dwdw 0 0明确指令是字节操作还是字操作明确指令是字节操作还是字操作
4、以字母开头的常数要有前导以字母开头的常数要有前导以字母开头的常数要有前导以字母开头的常数要有前导0 0 0 0第第3章:章:MOV指令寄存器传送指令寄存器传送mov ah,al;ahal,字,字节传送送mov bvar,ch;bvarch ,字,字节传送送mov ax,bx;axbx,字,字传送送mov ds,ax;dsax,字,字传送送mov bx,al;bxal,字,字节传送送 寄存器具有明确的字节和字类型寄存器具有明确的字节和字类型第第3章:章:MOV指令存储器传送指令存储器传送mov al,bx;alds:bxmov dx,bp;dxss:bp+0mov dx,bp+4;dxss:bp
5、+4mov es,si;esds:si 不存在存储器向存储器的传送指令不存在存储器向存储器的传送指令第第3章:章:MOV指令段寄存器传送指令段寄存器传送mov si,dsmov ax,ds;axdsmov es,ax;esaxds 对段寄存器的操作不灵活对段寄存器的操作不灵活第第3章:章:MOV指令传送功能图解指令传送功能图解MOVMOV指令也并非任意指令也并非任意指令也并非任意指令也并非任意传传送送送送! !立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储
6、储器器非法指令的主要现象:非法指令的主要现象:两个操作数的类型不一致两个操作数的类型不一致无法确定是字节量还是字量操作无法确定是字节量还是字量操作两个操作数都是存储器两个操作数都是存储器段寄存器的操作有一些限制段寄存器的操作有一些限制第第3章:非法指令两个操作数类型不一致章:非法指令两个操作数类型不一致在在绝绝大大多多数数双双操操作作数数指指令令中中,目目的的操操作作数数和和源源操操作作数数必必须须具具有有一一致致的的数数据据类类型型,或或者者同同为为字字量量,或者同为字节量,否则为非法指令或者同为字节量,否则为非法指令MOV AL, 050AH;非法指令,;非法指令,修正:修正:;mov a
7、x,050ahMOV SI, DL;非法指令,;非法指令,修正:修正:;mov dh,0;mov si,dx第第3章:非法指令无法确定是字节量还是字量操作章:非法指令无法确定是字节量还是字量操作当当无无法法通通过过任任一一个个操操作作数数确确定定是是操操作作类类型型时时,需需要利用汇编语言的操作符显式指明要利用汇编语言的操作符显式指明MOV BX+SI, 255;非法指令,;非法指令,修正:修正:;mov byte ptr bx+sibyte ptr bx+si,255;byte ptr byte ptr 说明是字节操作说明是字节操作;mov word ptr bx+siword ptr bx
8、+si,255;word ptr word ptr 说明是字操作说明是字操作第第3章:非法指令两个操作数都是存储器章:非法指令两个操作数都是存储器8088指指令令系系统统除除串串操操作作指指令令外外,不不允允许许两两个个操操作作数都是存储单元(存储器操作数)数都是存储单元(存储器操作数)MOV buf2, buf1;非法指令,;非法指令,修正:修正:;假设;假设buf2和和buf1是两个字变量是两个字变量;mov ax,buf1;mov buf2,ax;假设;假设buf2和和buf1是两个字节变量是两个字节变量;mov al,buf1;mov buf2,al第第3章:非法指令段寄存器的操作有一
9、些限制章:非法指令段寄存器的操作有一些限制8088指指令令系系统统中中,能能直直接接对对段段寄寄存存器器操操作作的的指指令令只有只有MOV等个别传送指令,并且不灵活等个别传送指令,并且不灵活MOV DS, ES;非法指令,;非法指令,修正:修正:;mov ax,es;mov ds,axMOV DS, 100H;非法指令,;非法指令,修正:修正:;mov ax,100h;mov ds,ax MOV CS, SI;非法指令;非法指令;指令存在,但不能执行;指令存在,但不能执行第第3章:章:2. 交换指令交换指令XCHG(exchange)把两个地方的数据把两个地方的数据进行互行互换寄存器与寄存器之
10、间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem演示演示第第3章:例章:例2.2 数据交换数据交换mov ax,1199hmov ax,1199h;ax=1199hax=1199hxchg ah,alxchg ah,al;ax=9911hax=9911h;等同于;等同于 xchg al,ahxchg al,ahmov wvar,5566hmov wvar,5566h;wvarwvar
11、是一个字量是一个字量变量量xchg ax,wvarxchg ax,wvar ;ax=5566hax=5566h,wvar=9911hwvar=9911h;等同于;等同于 xchg wvar,axxchg wvar,ax xchg al,byte ptr wvar+1xchg al,byte ptr wvar+1;ax=5599hax=5599h,wvar=6611hwvar=6611h;“byte byte ptr ptr wvar+1wvar+1”强制制为字字节量量,只只取取高高字字节与与ALAL类型交型交换,否,否则数据数据类型不匹配型不匹配第第3章:章:3. 换码指令换码指令XLAT(t
12、ranslate)将将BX指指定定的的缓冲冲区区中中、AL指指定定的的位位移移处的的一一个个字字节数据取出数据取出赋给AL换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码XLATXLAT;alds:bx+alalds:bx+al演示演示第第3章:章:3.3.2 堆栈操作指令堆栈操作指令堆堆栈栈是是一一个个“后后进进先先出
13、出FILOFILO”(或或说说“先先进进后后出出FILOFILO”)的的主主存存区区域域,位位于于堆堆栈栈段段中;中;SSSS段寄存器段寄存器记录其段地址记录其段地址堆堆栈栈只只有有一一个个出出口口,即即当当前前栈栈顶顶;用用堆堆栈栈指针寄存器指针寄存器SPSP指定指定堆堆栈栈只只有有两两种种基基本本操操作作:进进栈栈和和出出栈栈,对对应两条指令应两条指令PUSH和和POP图示图示第第3章:进栈指令章:进栈指令PUSH进栈指指令令先先使使堆堆栈指指针SP减减2,然然后后把把一一个个字操作数存入堆字操作数存入堆栈顶部部PUSH r16/m16/segPUSH r16/m16/seg;SPSPSP
14、SP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg演示演示push axpush 2000h第第3章:出栈指令章:出栈指令POP出出栈指指令令把把栈顶的的一一个个字字传送送至至指指定定的的目目的操作数,然后堆的操作数,然后堆栈指指针SP加加2POP r16/m16/segPOP r16/m16/seg; r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2pop axpop wvar演示演示第第3章:堆栈操作的特点章:堆栈操作的特点堆栈操作的单位是字,进栈和出栈只对字量堆栈操作的单位是字,进栈和出栈只对字量字字量量数数据据从从栈栈顶
15、顶压压入入和和弹弹出出时时,都都是是低低地地址址字字节节送低字节,高地址字节送高字节送低字节,高地址字节送高字节堆堆栈栈操操作作遵遵循循先先进进后后出出原原则则,但但可可用用存存储储器器寻寻址址方式随机存取堆栈中的数据方式随机存取堆栈中的数据堆栈段是程序中不可或缺的一个内存区,常用来堆栈段是程序中不可或缺的一个内存区,常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器第第3章:章:3.3.3 标志操作指令标志操作指令1. 标志位操作指令志位操作指令CLC;复位进位标志:;复位进位标志:CF0STC;置位进位标志:;置位进位标志:CF1CMC;求反进位标志:;求
16、反进位标志:CFCFCLD;复位方向标志:;复位方向标志:DF0STD;置位方向标志:;置位方向标志:DF1CLI;复位中断标志:;复位中断标志:IF0STI;置位中断标志:;置位中断标志:IF12. 标志寄存器低字志寄存器低字节与与AH的的传送指令送指令3. 标志寄存器出入堆志寄存器出入堆栈指令指令将将存存储储器器操操作作数数的的有有效效地地址址送送至至指指定定的的16位位通通用用寄存器寄存器第第3章:有效地址传送指令章:有效地址传送指令LEA(load effective address)LEA r16, mem;r16mem的有效地址的有效地址EA例题例题2.5 有效地址的获取有效地址的
17、获取mov bx,400hmov si,3chlea bx,bx+si+0f62h;BX400H3CH0F62H139EH第第3章:例章:例2.6 地址传送与内容传送地址传送与内容传送wvar dw 4142h;假;假设偏移地址偏移地址为04Hmov ax,wvar;内容;内容传送:送:AX4142Hlea si,wvar;地址;地址传送:送:SI0004H;等同于;等同于 lea si, 0004hmov cx,si;内容;内容传送:送:CX4142Hmov di,offset wvar;mov di,0004h;利用操作符;利用操作符OFFSET获取取变量的有效地址量的有效地址mov dx
18、,di ;内容;内容传送:送:DX4142H第第3章:调试程序章:调试程序DEBUGDEBUGDEBUG是是常常用用的的汇编语言言级调试工工具具,为汇编语言言程序程序员提供了分析指令、跟踪程序的有效手段提供了分析指令、跟踪程序的有效手段常用命令:常用命令:A A 汇编汇编U U 反汇编反汇编T T 单步执行单步执行G G 断点执行断点执行D D 数据显示数据显示R R 寄存器寄存器启启动方法方法DOSDOS下执行下执行DEBUG.EXEDEBUG.EXE程序程序Windows 9xWindows 9x中进入中进入MS-DOSMS-DOS环境执行环境执行DEBUG.EXEDEBUG.EXE程序程序Windows Windows 2000/XP/NT2000/XP/NT下下运运行行COMMANDCOMMAND命命令令(不不是是CMDCMD命命令令,也也不不要要从从“命命令令提提示示符符”)进进入入MS-DOSMS-DOS环环境境执执行行DEBUG.EXEDEBUG.EXE程序程序