欢迎来到天天文库
浏览记录
ID:40203447
大小:334.50 KB
页数:55页
时间:2019-07-25
《微机原理与接口技术实用教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章80X86的寻址方式及指令系统本章要点及各类指令的功能和用法80X86系统的各种寻址方式80X86的指令系统构成10/6/20212>>微机原理<<定义:程序:让计算机完成某种操作的命令,所有指令的集合称为指令系统。指令用助记符表示,汇编语言程序经过编译连接后,指令助记符转换为二进制代码,即指令代码,或称为机器码,可以由CPU执行。指令代码需要事先存放在微机系统的内部存储器中由CS寄存器中的内容所指定的代码段中。10/6/20213>>微机原理<<指令的一般格式:操作助记符目的操作数(或其位置),源操作数(或
2、其位置)dstsrc例如:MOVAX,[SI]对应的机器码是8BH,04HMOVAX,ES:[SI]对应的机器码是26H,8BH,04H10/6/20214>>微机原理<<3.18086的寻址方式(addressingmode)寻址方式:指令中给出的操作数的表示(或存放)方式,如果操作数存放在存储器中,CPU必须先计算出操作数的物理地址寄存器间接寻址直接寻址寄存器寻址隐含寻址基址变址相对寻址基址变址寻址寄存器相对寻址立即寻址寻址方式10/6/20215>>微机原理<<①立即寻址:操作数(8位或16位)出现在指令中,与
3、指令代码一起存放在存储器的代码段中。例:MOVAX,6000HMOVAH,60HMOVAL,00H10/6/20216>>微机原理<<②寄存器寻址:操作数放在CPU内部的寄存器中,可为8位或16位寄存器,由指令给出。例:MOVAX,BXMOVAH,BH10/6/20217>>微机原理<<③直接寻址:操作数放在存储器的数据段(其段地址由DS中的内容决定)中,其有效地址(偏移地址直接用偏(位)移量表示在指令中,占2个字节。偏移量常用disp表示,是有效地址的一部分或全部,可以8位也可以16位。例:MOVAX,DS:[01
4、00H]10/6/20218>>微机原理<<②寄存器间接寻址:操作数在存储单元中,其有效由BX﹑SI或DI中的内容给出表示为:(BX)EA=(SI)(DI)寄存器BX﹑SI或DI在指令中给出。例:MOVAX,[SI]10/6/20219>>微机原理<<⑤寄存器相对寻址:操作数在存储器中,其有效地址是位移量(可8位或者16位)与变址或基址寄存器之和,Disp与寄存器在指令中给出。例:MOVAX,5[BX]也可写成MOVAX,[BX+5]10/6/202110>>微机原理<<⑥基址变址寻址:操作数在存储器中,偏移地址由基
5、址寄存器和变址寄存器中的内容相加确定。例:MOVAX,[BX][DI]10/6/202111>>微机原理<<⑦基址变址相对寻址:寄存器相对寻址与基址变址寻址方式的结合。disp与寄存器均在指令中给出。例:MOVAX,5[BP][SI]10/6/202112>>微机原理<<⑧隐含寻址:指令本身隐含了操作数的地址,例如:字符串操作指令MOVS,源操作数由DS:SI寄存器间接寻址,目的操作数由ES:DI寄存器间接寻址。以各种类型访问存储器时,存储单元地址的组成:10/6/202113>>微机原理<<3.28086/8088
6、的指令系统a,除SAHF外不影响标志位,SAHF是将AH内容送到标志寄存器的低8位;b,不能用CS作为目的操作数;c,源操作数和目的操作数不能同时在存储器中,即:不能在一条指令中实现数据在存储器中的传送。3.2.1数据传送指令10/6/202114>>微机原理<<Ⅰ.数据传送,由源---》目的例:MOVAX,BX;寄存器寻址MOVDL,AL;寄存器寻址MOVAX,02;源操作数用立即寻址MOVSI,[BX];源操作数寄存器间接寻址MOVAL,4[DI];源操作数用寄存器相对寻址MOVAX,[BX+2];源操作数用寄存
7、器相对寻址MOV[BX][DI],DX;目的操作数用基址加变址寻址1、MOV指令:数据传送(复制)10/6/202115>>微机原理<<立即数、代码段寄存器CS只能作源操作数。IP寄存器不能作源操作数或目的操作数。MOV指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据。两个操作数的类型属性要一致。注意事项!10/6/202116>>微机原理<<Ⅱ.堆栈操作指令:堆栈:是以后进先出规则保存信息的一种存储机构。(1)8086中堆栈段地址在SS寄存器中,堆栈当前偏移地址在SP寄存器中,SP称为堆
8、栈指针。SP的初值代表了堆栈区的大小,若SP=0100H,有右图所示:(2)堆栈操作方式:以字为单位进行操作,高字节在高地址,低字节在低地址。10/6/202117>>微机原理<<(3)堆栈操作指令a、压入指令:PUSH例:PUSHAX如果AX=1234H,则该指令执行后的结果:SP=00FEH,(00FFH)=12H,(00FEH)=34Hb
此文档下载收益归作者所有