欢迎来到天天文库
浏览记录
ID:48166309
大小:723.50 KB
页数:59页
时间:2020-01-16
《第三章指令系统第一讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章8086的寻址方式和指令系统(共6学时)掌握指令的基本格式理解各种寻址方式的寻址过程掌握常见指令的格式和使用注意内容学习要求:第3章8086的寻址方式和指令系统3.18086/8088的寻址方式3.28086/8088的指令系统指令:让计算机完成某种操作的命令。指令系统(集):指令的集合。操作码:指计算机所要执行的操作,即指出操作类型,是一种助记符。操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。寻址方式:就是指令中用于说明操作数所在地址的方法
2、,或者说是寻找操作数有效地址的方法。指令的一般格式第3章8086的寻址方式和指令系统§3.18086的寻址方式立即数寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址定义:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即操作数,这种寻址方式就是立即数寻址方式。寻址方式如图3.1所示:图3.1立即数寻址1.立即数寻址§3.18086的寻址方式(续)立即数可以是8位或16位的。如果是16位立即数,则高8位放在高地址,低8位放在低地址。使用场合:由于立即数用来表示常数,所以立即数寻址方式经常用于给寄存器赋初值。它只能
3、用于源操作数字段,不能用于目的操作数字段。由于立即数可以从指令中直接取得,因此CPU不需要另外占用总线周期去取操作数,故立即数寻址方式显著的特点就是速度快。说明:立即数寻址(续)定义:操作数在指定的寄存器中,指令中指定寄存器名。寻址方式如图3.2所示:说明:对于16位操作数,可以用字寄存器,比如:AX、BX、CX、DX、SI、DI、SP、BP以及段寄存器;对于8位操作数,可以用字节寄存器,比如:AH、BH、CH、DH、AL、BL、CL、DL;这种寻址方式因为操作数在寄存器中,不需要访问存储器,所以运算速度较高。2.寄存器寻址§3.18086的寻址方式(续)数据寄存
4、器指令寄存器图3.2寄存器寻址定义:在指令中直接给出位移量,它存放在代码段中指令操作码之后,它可能是一个数值地址,也可能是符号地址。寻址方式如图3.3所示:图3.3直接寻址§3.18086的寻址方式(续)3.直接寻址当操作数在内存中,必须先求出操作数的物理地址,然后再根据物理地址访问存储器从而取得操作数。物理地址PA的计算方法如下:PA=16D×(段寄存器)+EA操作数一般存放在内存数据段中,因此计算物理地址就应该把DS的值作为段基址即:物理地址PA=16×(DS)+EA=16×(DS)+位移量汇编语言中可以用变量名(符号地址)代替数值地址,但要注意变量的属性,在
5、计算其物理地址时也默认以DS来提供段基值。IBMPC机允许数据存放在数据段以外的其它段中(可以是CS,SS,ES),但必须在指令中指定段跨越前缀。3.直接寻址(续)说明:若DS=4000H,则此指令式将数据段中物理地址为42000H单元的内容传送AL寄存器。例:MOV AL,[2000H];[DS*10H+2000H]送AL;MOV AX,[2000H];[DS*10H+2000H]送AL,DS*10H+2000H+1]送AH;MOV AL,ES:[2000H];这里ES是段超越前缀,所以源操作数是在ES*10H+2000H的内存单元中。MOV [3000H],A
6、L;目的操作数采用直接寻址,将AL送[DS*10H+3000H]的内存单元。定义:操作数的有效地址EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,而操作数在内存中。寻址方式如图3.4所示:图3.4寄存器间接寻址§3.18086的寻址方式(续)4.寄存器间接寻址若选择BX或SI或DI寄存器提供的间址,则操作数一般在数据段区域中,用DS提供段基址,即操作数物理地址为:物理地址PA=16×(DS)+EA=16×(DS)+(BX)或(SI)或(DI)若选择BP寄存器提供的间址,则操作数在堆栈段区域中,用SS提供段基址,即操作数物理地址为:物理地址PA=16×(
7、SS)+EA=16×(SS)+(BP)用SI、DI、BX、BP作为间接寻址时允许使用段跨越前缀,从而实现对其它段中数据的存取。用途:这种寻址方法适用于数组、字符串、表格的处理。4.寄存器间接寻址(续)说明:MOVAL,[BX];[DS*10H+BX]送AL设DS=3000H,BX=2000H,(32000H)=45H,则执行该指令后,AL=45H。MOVAL,[BP];[SS*10H+BP]送AL设DS=2000H,SS=1000H,BP=0100H,(10100H)=3BH,(20100H)=4CH。执行这条指令后,AL=3BH。MOVAX,[BX];[DS*1
8、0H+BX
此文档下载收益归作者所有