微机原理课件chap3_2.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:42 大小:173KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理课件chap3_2.ppt

微机原理课件chap3_2.ppt

预览

免费试读已结束,剩余 32 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

3.38086/8088指令系统3.3.1数据传送指令1.通用传送指令(1)MOVdest,src;dest←src传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。具体来说可实现:①MOVmem/reg1,mem/reg2指令中两操作数中至少有一个为寄存器例:MOVCL,DLMOVAX,BXMOV[SI],CXMOVCL,[BX+5]②MOVreg,data;立即数送寄存器③MOVmem,data;立即数送存储单元④MOVacc,mem;存储单元送累加器⑤MOVmem,acc;累加器送存储单元⑥MOVsegreg,mem/reg;存储单元/寄存器送段寄存器⑦MOVmem/reg,segreg;段寄存器送存储单元/寄存器MOV指令使用规则:几个不能传送的解决办法:用AX作桥梁存储器←存储器:MOVAX,MEM1MOVMEM2,AX段寄存器←段寄存器:MOVAX,DSMOVES,AX段寄存器←立即数:MOVAX,DATAMOVDS,AX应用举例:将1000H开始的100个存储单元全部填充为ASCII码2AH(*)。程序段如下:MOVDI,1000HMOVCX,64HMOVAL,2AHAGAIN:MOV[DI],ALINCDIDECCXJNZAGAINHLT上程序段存放在代码段中,設(CS)=109EH,则各条指令存放地址如下:CS:IP指令109E:0100MOVDI,1000H109E:0103MOVCX,64H109E:0106MOVAL,2AH109E:0108MOV[DI],AL109E:010AINCDI109E:010BDECCX109E:010CJNZ0108109E:010EHLT109E:0110什么是堆栈?按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入弹出操作。为什么要设置堆栈?为什么要按“后进先出”方式工作?参见下图主程序规定由SS指示堆栈段的段基址,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。设(AX)=1020H,执行示意图如图压栈指令的格式为:PUSHregPUSHmem/regPUSHsegreg例如:PUSHAXPUSH[BX]PUSHDSPOPBX的执行示意图如下图所示堆栈指令使用时应注意几点:①堆栈操作总是按字进行②不能从栈顶弹出一个字给CS③堆栈指针为SS:SP,SP永远指向栈顶④SP自动进行增减量(-2,+2)格式:XCHGreg,mem/reg功能:交换两操作数的内容。要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;源和目地操作数类型要一致。举例:XCHGAX,BXXCHG[2000],CL(4)查表指令XLAT执行的操作:AL←[(BX)+(AL)]又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,表项序号存于AL中。例如:内存数据段有一张16进制数的ASCII码表,设首地址为2000H,如欲查出表中第11个代码(代码序号从0开始)即十六进制数B的ASCII码。ASCII表在DS段中,并假设(DS)=4000H。见下页图。30则可用如下几条指令实现:(5)字节-字转换指令2.输入输出(I/O)指令例:OUT68H,AX;(69H,68H)←(AX)OUTDX,AL;((DX))←(AL)在使用间接寻址的IN/OUT指令时,要事先用传送指令把I/O端口号设置到DX寄存器,如:MOVDX,220HINAL,DX;将220H端口内容读入AL3.地址传送指令共有三条:格式:LEAreg,mem;将指定存储器的16位偏移地址送指定寄存器LDSreg,mem32;DS:reg←(mem开始的四个内存单元)LESreg,mem32;同上,但DS改为ES要求源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。设:(SI)=1000H则执行该指令后,(BX)=1010H注意以下两条指令差别:LEABX,BUFFERMOVBX,BUFFER前者表示将符号地址为BUFFER的存储单元的偏侈地址取到BX中;后者表示将BUFFER存储单元中的内容取到BX中.下面两条指令等效:LEABX,BUFFERMOVBX,OFFSETBUFFER其中OFFSETBUFFER表示存储器单元BUFFER的偏移地址。二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,OFFSET只能取静态的地址。4.标志传送指令共有四条: