西交微机原理课件第3章_Part1.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:116 大小:2.5MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

西交微机原理课件第3章_Part1.ppt

西交微机原理课件第3章_Part1.ppt

预览

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

15 金币

下载此文档

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

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

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

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

第3章8086/8088指令系统(Part1)本章主要内容3.1概述8086指令按功能分为六大类3.1.1指令的基本语法指令格式举例:部分常用的8086指令指令中的操作数(3种)2、寄存器操作数3、存储器操作数汇编语言中只使用逻辑地址(段地址和偏移地址)一条指令的执行时间=∑寻址方式—确定操作数地址的方法操作数的地址(一般指源操作数)要执行的下一条指令的地址在8086指令系统中,寻址方式可分为7种:①立即寻址⑤寄存器相对寻址②直接寻址⑥基址-变址寻址③寄存器寻址⑦相对的基址-变址寻址④寄存器间接寻址此外,还有一种隐含寻址。操作数(为一常数)直接由指令给出(这种操作数又称之为立即数)注意:1.立即寻址只能用于源操作数2.源操作数和目的操作数的类型要一致例:MOVAX,1C8FHMOVBYTEPTR[2A00H],10001010BMOVCX,100MOV2A00H,AX;×错误!MOVBL,8000H;×错误!立即数3.2.2直接寻址AX3.2.3寄存器寻址AX3.2.4寄存器间接寻址指令操作例:MOVAX,[SI]假定DS=6000H,SI=1200H,(61200H)=44H,(61201H)=33H3.2.5寄存器相对寻址指令操作例:MOVAX,[BX+10]假定DS=6000H,BX=1000H,(61010H)=66H,(61011H)=55H3.2.6基址-变址寻址例:MOVAX,[BX][SI]MOVAX,[BX+DI]MOVAX,DS:[BP][DI]MOVAX,[BX][BP];×错误!MOVAX,[DI][SI];×错误!22H3.2.7相对的基址-变址寻址指令操作例:MOVAX,[DI+BX+10H]假定DS=8000H,BX=2000H,DI=50H,(82060H)=66H,(82061H)=55H使用相对的基址-变址寻址方式可以很方便地访问二维数组。读取元素A(2,1)3.2.8隐含寻址寻址方式小结3.38086指令系统指令的通用规则3.3.1数据传送指令1.通用传送指令(1)MOV指令MOVdest,src;dest←src可实现8位或16位数据的传送。传送类型取决于指令中寄存器的位数。若两个操作数都不是寄存器,则应显式地指定目的操作数的类型。例:MOVCL,DL;8位传送MOVAX,[BX];16位传送MOV[SI],CL;8位传送MOVWORDPTR[BX+5],10H;16位传送MOV指令使用规则:不能实现的传送的解决办法:用AX作桥梁存储器←存储器MOVAX,MEM1MOVMEM2,AX段寄存器←段寄存器MOVAX,DSMOVES,AX段寄存器←立即数MOVAX,1200HMOVDS,AX应用举例:将内存中从地址1000H开始的100个存储单元全部填充为2AH。程序段如下:MOVDI,1000HMOVCX,100MOVAL,2AHAGAIN:MOV[DI],ALINCDIDECCXJNZAGAINHLT堆栈:按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位进行压入、弹出操作。堆栈的主要用途:调用过程/函数/子程序时保存返回地址。参数传递、临时保存数据。主程序SS指示堆栈段的段基址SP指示堆栈栈顶,SP的初值决定了堆栈的大小。②出栈指令POPdest;栈顶内容弹出到dest指令规则同PUSH指令。例:POPBX;将栈顶内容弹出到BX执行操作:BL←[SP]BH←[SP+1]SP←SP+2POPAL;×错误!堆栈指令使用要点:①堆栈操作总是按字进行压入和弹出②后压入的数据总是首先被弹出③不能从栈顶弹出一个字给CS④堆栈指针为SS:SP,SP永远指向栈顶⑤SP自动进行增减量(-2,+2),压入时自动减2,弹出时自动加2XCHGdest,src;两操作数内容交换注意:1)遵循指令的通用规则;2)两操作数中必须有一个是寄存器;3)操作数不能是段寄存器或立即数。例:XCHGAX,BXXCHG[2000],CLXCHGES,AX;×错!XCHGAX,1234H;×错!(4)查表转换指令XLATXLAT;AL←[(BX)+(AL)]●以AL的内容作为表项序号,BX的内容作为表的基地址,取出表中对应项的内容送到AL。●XLAT指令主要用于编码的转换,如:十六进制码→ASCII码、BCD码→格雷码、BCD码→7段码等。●使用方法:首先在内存中设置一个转换表,转换表长度最大为256个表项(字节)。——Why?然后将表的首地址(偏移地址)送到BX中,表项序号送到AL中,再执行XLAT指令即可。2000H+0(5)符号扩展