- 1、本文档共194页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pc04指令系统
4.1 寻址方式和指令系统概述 4.1.1 指令语句格式 4.1.2 寻址方式 4.1.3 指令系统概述 4.1.1 指令语句格式 语句格式: [标号:] 指令助记符 [操作数,[操作数]] [;注释] 1.标号:表示该指令所在的地址,后面须跟冒号“:”.(具体规定参考教材)。 2.指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。 3.操作数:操作数表示指令助记符的操作对象。 省略/一个/两个。 4.注释:注释均以分号开始,只是便于阅读程序,汇编程序不作处理。 4.1.2 寻址方式 寻址方式:指令中提供操作数或操作数 地址的方法。 (7种) (1)立即数寻址 (2)寄存器寻址 (3)直接寻址 (4)寄存器间接寻址 (5)寄存器相对寻址方式 (6)基址变址寻址方式 (7)相对基址变址寻址方式 (1)立即数寻址 指令所用的操作数在指令中直接提供 主要用于对寄存器赋值 速度快,不需总线周期 例如:MOV AX,1234H ;十六进制数 1234H送入AX。 如图所示: (2)寄存器寻址 指令中有寄存器名,操作数存放在其内部寄存器中。 操作数存放在指令规定的寄存器中, 16位:AX,BX,CX,DX,SI,DI,SP或BP; 8位:AH,AL,BH,BL,CH,CL,DH或DL。 例如: MOV AX,BX ;将寄存器BX的内容送入AX中。 如图所示: 【例】 下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX ?执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H ?第一、二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。 第三条指令中,源地址和目的地址皆为寄存器寻址方式。 (3)直接寻址 指令中含有数据存储单元的有效地址,数据总在存储器中。 有效地址EA:操作数的偏移地址。 例如:MOV AL,DS:[2000H] ;将逻辑地址为DS:2000单元内的字节送入AL。 若段基址DS=4000H,则DS:2000物理地址为42000H 单元,把其内容56H传至AL寄存器。 如图所示。 (4)寄存器间接寻址 操作数在存储器中,存储单元的有效地址由寄存器指出。 可用的寄存器: BX/BP/SI/DI (分别对应的段寄存器:DS/SS/DS/DS)。 例如:MOV AX,[BX] ;BX内容为有效地址EA(偏移量)。 若DS=4000H,BX=100H,此指令将物理地址40100H 单元的内容传至AL寄存器。 如图所示。 【例】寄存器和存储器内容分别为:(AX)=0,(BP)=0030H, (SS)=2000H,(20030H)=1234H ?执行指令:MOV AX ,[BP] 执行后: (AX)=?,(BP)=?,(SS)=?, (5)寄存器相对寻址方式 操作数在存储器中,存储单元的有效地址由寄存器与位移量合成指出。 ? 位移量:存放在指令中的8/16位表示地址的数值。 例如:MOV AL,[BX+5]; 若DS=6000H,BX=2000H,BX的内容加上8位位移量05H作为操作数的有效地址。 (6)基址变址寻址方式 BX/BP、SI/DI组合进行间接寻址。 注意组合方式: 有效地址为一个基址寄存器(BX/BP)和一个变址寄存器(SI/DI)内容之和。 例如:MOV AX,[BX+SI]; BX的内容与SI的内容之和作为操作数的有效地址。传送数据段中的一个字。如图所示。 (7)相对基址变址寻址方式 BX/BP、SI/DI组合加上位移量进行间接寻址。 例如:MOV AH,[BX+DI+1234H] ; BX的内容加上DI的内容再加上位移量1234H作为操作数的有效地址。如图: 附:默认段寄存器使用与跨段问题 默认段寄存器使用:如前所述,BX/BP/SI/DI (分别对应的段寄存器:DS/SS/DS/DS)。 ?跨段问题: 汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段。 【例】跨段前缀示例 1.MOV AX,DS:[BP] 2.MOV CX,SS:[SI] 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,上述2条指令的源操作数物理地址分别为: 1 :(DS)左移4位+[BP] 2 :(SS)左移4位+[SI] 4.1.3 指令系统概述 传送类指令 数据操作类指令 串操作类指令 控制类指令 伪指
文档评论(0)