语句篇-指令系统和寻址方式

上传人:tian****1990 文档编号:81529333 上传时间:2019-02-21 格式:PPT 页数:148 大小:1.52MB
返回 下载 相关 举报
语句篇-指令系统和寻址方式_第1页
第1页 / 共148页
语句篇-指令系统和寻址方式_第2页
第2页 / 共148页
语句篇-指令系统和寻址方式_第3页
第3页 / 共148页
语句篇-指令系统和寻址方式_第4页
第4页 / 共148页
语句篇-指令系统和寻址方式_第5页
第5页 / 共148页
点击查看更多>>
资源描述

《语句篇-指令系统和寻址方式》由会员分享,可在线阅读,更多相关《语句篇-指令系统和寻址方式(148页珍藏版)》请在金锄头文库上搜索。

1、第二章 语句篇-指令系统和寻址方式,一、概述,计算机是通过执行指令序列来解决问题的 指令由操作码字段和操作数字段组成,格式为: 操作码 操作数 操作数 操作码字段指示计算机所要执行的操作。操作数字段指出指令执行操作的对象。,如加法指令,除需要指出做加法外,还要提供被加数和加数。 操作数字段可以是操作数本身,也可以是操作数地址,或是地址的一部分,还可以是指向操作数地址的指针或其它信息,根据操作数字段的个数分为一地址.二地址.三地址指令。(单操作指令是一地址指令,如INC AX),汇编语言是一种符号语言,它用助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址(它与机器指令一一对应) 操作

2、数字段则较复杂,它可以是操作数在寄存器中,也可以在存储器里,还可以是直接操作数等。,二、寻址方式,1、立即寻址方式 操作数直接存放在指令中,紧跟在操作码之后它作为指令的一部分存放在代码段里,这种操作数称为立即数(可以是8位,16位),若为16位,则高位字节存放在高地址中,低字节放入低地址中。,该方式用来表示常数,经常用于给寄存器赋初值,且只能用于源操作数字段。 格式:(指令)操作码 DST(目的操作数),立即数 例如:MOV AL,5 MOV AX,3064H,2、寄存器寻址方式 操作数在寄存器中,指令指定寄存器号。 16位操作数的寄存器是:AX,BX,CX,SI,DI,BP等。 8位是AL,

3、AH,BL,BH,CL,CH,DL,DH。 格式:操作码 (DST),寄存器,例如:MOV AX,BX;AX(BX) 原(AX)=1234,(BX)=5678 执行后(AX)=5678,BX不变,3、直接寻址方式 EA操作数的有效地址在指令中给出,存放在代码段中的指令操作码之后,但操作数一般放在数据段中,故须先求出操作数的物理地址,再访问存储器才能取得操作数。 若在其他段,必须给出段跨越前缀: 物理地址=16(DS)+EA 格式:操作码 (DST),EA;EA可以是符号地址,例1, MOV AX,2000 如果(DS)= 3000H,30000,32000,代码段,数据段,则执行情况见图: 执

4、行后 (AX)=3050H,例2:MOV AX, VALUE 或 MOV AX,value MOV AX, ES:VALUE MOV AX, ES:value IBM PC机中为了使指令字不过长,规定双操作数指令必须有一个操作数使用寄存器的方式。,4、寄存器间接寻址方式 操作数的有效地址在基址寄存器BX,BP或变址寄存器SI,DI,而操作数在存储器中。 若EA在BX,SI,DI。则操作数在数据段中,所以用DS的内容做段地址。 即:操作数物理地址=16(DS)+(BX)或 (SI),(DI) 若EA在BP中,则:物理地址=16 (SS)+(BP),格式:操作码 DST,BX,SI或DI 例:MO

5、V AX,BX 若 (DS)=2000H, (BX)=1000H 则 物理地址(PA)=20000H+1000=21000H 则(AX)=50A0H,5、寄存器的相对寻址方式 操作数的有效地址是一个基址或变址寄存器的内容与指令中的8位或16位位移量之和。,同样 BX,SI,DI一般用DS作段寄存器 BP用SS作段寄存器 可使用段跨越前缀 (BX) 8位位移量 物理地址=16(DS)+ (SI) + (DI) 16 位位移量 或物理地址=16(SS) +(BP)+8(或16)位移量,例:MOV AX,COUNTSI MOV AX,COUNT+SI。其中COUNT为16位位移量。 如果 (DS)=

6、3000H (SI)=2000H COUNT=3000H 则 PA=30000+2000+3000=35000H,6、基址变址寻址方式 EA是一个基址寄存器和一个变址寄存器的内容之和,两寄存器均由指令指定,如基地寄存器为BX时,段寄存器为DS:基址寄存器为BP时,段寄存器为SS。 PA=16(DS)(BX)(SI)或(DI) 或PA=16(SS)(BP)(SI)或(DI),例如:MOV AX,BXDI (或写为 MOV AX,BX+DI 如果: (DS)=2100H (BX)=0518H (DI)=10A5H 则: PA=21000+EA=21000+0518+10A5=221FDH 段超越时

7、:MOV AX ,ES:BXSI,此种方式在用于数组或表格处理时,首地址可存放在基址寄存器中,而变址寄存器为访问数组中的各个元素,两个寄存器都可以修改。,7、相对基址,变址寻址方式 EA=(基址寄存器)+(变址寄存器)+位移量 当基址寄存器为BX时,DS为段寄存器 当基址寄存器为BP时,SS为段寄存器 变址寄存器为SI或DI。,例:MOV AX,MASKBXSI 或写: MOV AX,MASKBX+SI 或写: MOV AX,MASK+BX+SI 若(DS)=3000H,(BX)=2000H (SI)=1000H,MASK=0250H 则PA=16 *(DS)+(BX) +(SI)+ MASK

8、=33250H,30000,32000,33250,代码段,数据段,AX,课堂练习: Mov ax,bx Mov ax,0100h Mov ax,bx Mov ax,si+5 Mov ax,f123h Mov ax,bxsi Mov ax,bx+si+5,转移指令的转向地址,8、段内直接寻址 这种寻址方式适用于条件转移及无条件转移指令: 用于条件转移时,位移量为8位。 无条件转移时,位移量可以为16位(8位时称为短跳转) 格式:JMP NEAR PTR PROGIA JMP SHORT QUEST,转向的符号地址(机器指令中的位移量) PROGIA,QUEST。如果位移量为16位,则符号地址前

9、加操作符NEAR PTR;如果位移量为8位,则符号地址前加操作符SHORT。,9、段内间接寻址(不适用条件转移指令) 转向有效地址是一个寄存器或是一个存储器的内容,该寄存器或存储单元的内容作为转向的有效地址用来取代IP的内容。 格式:JMP BX JMP WORD PTR BP+TABLE;段内转移,“字”为地址,有效地址如何计算: 如果:(DS)=2000H (BX)=1256H (SI)=528FH JMP BXSI 则指令执行后(IP)=(16 *(DS)+(BX)+(SI) =(20000+1256+528F) =(264E5),10、段间直接寻址(不适用于条件转移指令) 指令中提供了

10、转向段地址和偏移地址, 所以:偏移地址 IP,指令中指定的段地址 CS 格式: JMP FAR PTR QUEST; FAR PTR 表示段间转移的操作符; QUEST 符号地址所在段的段地址 CS,11、段间间接寻址(不适用于条件转移指令) 用存储器的两个相继字的内容来取代IP和CS寄存器中的原始内容,存储单元的地址由指令指定的除立即数方式和寄存器方式以外的任何寻址方式取得。,例如:JMP DWORD PTR INTERS+BX (INTERS+BX+DS) IP (INTERS+BX+DS+2) CS DWORD PTR为双字操作符,说明转向地址取为段间转移;,三、IBM PC的指令系统,

11、IBM PC机的指令系统可分为6组: 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制指令,1、数据传送指令 负责将数据,地址或立即数传送到寄存器或存储单元 通用数据传送指令 MOV一传送 XCHG一交换 PUSH一入栈 POP一出栈,MOV传送指令,格式:MOV DST,SRC; (DST) (SRC) MOV指令的机器语言可以有七种格式。 MOV mem/regl,mem/reg2,Mov reg, data 例:MOV AX,1234H;(立即数到寄存器) MOV reg, mem 例:MOV AX,(3456H); (存储单元到寄存器) MOV mem, reg

12、例:MOV (3456H),AX;(寄存器到存储单元),MOV segreg, mem/reg; 其中, segreg指定段寄存器(除cs外),本指令执行完后不响应中断,等下一条指令执行完后才可能响应中断。 例:MOV DS,AX;(寄存器或存储单元到除cs外的段寄存器),MOV mem/reg, segreg 例:MOV AX,DS;(从段寄存器到寄存器或存储单元) MOV mem/reg, data 目的操作数只用存储器寻址方式,而不用寄存器寻址方式 例: MOV (2010H),45H;(立即数送到存储单元),注意: a. MOV指令的目的操作数不允许用立即数方式,也不使用CS寄存器;

13、b.不允许在两个存储单元之间直接传送数据,除源操作数为立即数的情况外,两个操作数中必须有一个是寄存器; c.不允许在两个段寄存器之间直接传送信息; d. MOV指令不影响标志位,PUSH入栈指令,PUSH入栈指令:“先改变SP”,只做字操作 格式:PUSH SRC 执行操作:(SP)(SP)-2 (SP)+1,(SP) (SRC),例:PUSH AX 如果执行前:SP=2003H,AX=2017H,SS=2000H 执行后:SP=2001H,AX=2017H 则:(SP)=(22002H)=20H (SP)=(22001H)=17H,(SP) 22003H (SP) 22001 17 低址 2

14、2004H 22002 20 22003 入栈 22004 执行前 执行后,POP出栈指令,POP出栈指令:不允许使用CS寄存器;后改变SP,只作字操作。 格式:POP DST 执行操作;(DST)(SP+1),(SP) (SP) (SP)+2,例:POP AX;先出栈,后改SP 即上例中的指令执行后的堆栈。 则(AX)=2107H 看SP在哪里?,注意: 1 、以“先进后出”方式工作(PUSH,POP使用时顺序) 2 、存于SS段中 3 、SP总是指向栈顶 4 、必须以字为单位进行操作。 5、可用除立即数以外的寻址方式。 6、可使用段寄存器(但POP不使用CS),XCHG交换指令,XCHG交

15、换指令 格式为:XCHG OPR1,OPR2 执行操作:(OPR1) (OPR2),例:XCHG BX,BP+SI 若执行前:(BX)=6F30H,(BP)=0200H (SI)=0046H,(SS)=2F00H (2F246H)=4154H 则:OPR2的PA=2F000+0200+0046=2F246H 执行后:(BX)=4154H (2F246)=6F30H,注意: 1、两操作数中必须有一个在寄存器中,但不允许使用段寄存器,也不能同时是存储单元,还不能有立即数。 2、允许字节或字操作。 3、不影响标志位。,累加器专用传送指令,IN(INPUT)输入:完成I/O CPU的传送 OUT输出;完成CPU I/O的传送 本组只适用于累加器AX或AL传送信息。,外设可有65535个端口(64k),端口号为0000FFFFH。 其中前256个端口(0FFH)可以直接在指令中指定称为长指令格式。 当端口号大于255时,使用所谓的短格式:先将端口号放在DX寄存器中,(可以从0000FFFFH),然后再使用IN,OUT指令。,注意: 端口号或DX的内容均为实际地址,传送的是端口信息。 IN,OUT指令不影

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号