欢迎来到天天文库
浏览记录
ID:50328707
大小:126.00 KB
页数:25页
时间:2020-03-08
《汇编语言程序设计教程 教学课件 作者 王庆生 3.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第3章操作数的寻址方式计算机中的指令由操作码和操作数组成。操作数字段可以有一个、两个或三个,通常称为一地址、二地址或三地址指令。二地址指令中两个操作数分别称为源操作数和目的操作数。所谓寻址方式就是指令中寻找操作数的方式。80x86汇编语言指令的一般格式位:[标号:]指令助记符[操作数][;注释][]中的内容位可选项。标号:符号地址,表示指令在内存中的位置。标号后应加冒号:。指令助记符:指令名称,是指令功能的英文缩写。操作数:指令要操作的数据或数据所在的地址。寄存器,常量,变量,表达式。注释:每行以分号“;”开头,汇编程序不处理。3.1.1立即寻址方式立即寻址方式操作数就在指令中,紧跟在操作码之
2、后,操作数作为指令的一部分存放在代码段。例3.1MOVAL,6H执行完此条指令后(AL)=06H例3.2MOVAX,12AFHAX=12AFH,即AH=12H,AL=AFH注意:执行时无需去内存取数,因此称为立即数。主要用于寄存器赋初值。立即数只能作为源操作数,并且长度与目的操作数一致。3.1.2寄存器寻址方式操作数就是寄存器中的值。指令中给出寄存器名。例3.3MOVAX,BX指令执行后,AX=BX,BX保持不变。例MOVAL,BLMOVAX,BXMOVAL,BX错MOVAX,BL错注意:以上两种寻址方式都与存储器无关。以下各种寻址方式的操作数都在存储器中。偏移地址也称为有效地址(EA)。3.
3、1.3直接寻址方式操作数的有效地址EA就在指令中。机器默认段地址在DS中。例3.4MOVAX,[4050H]该指令中只写出有效地址EA,机器默认DS寄存器作段地址。例3.5实际上,源程序中的变量总是用符号定义的,通常使用符号来表示操作数地址,而不是用具体的数值表示。MOVAX,[VALUE]MOVAX,VALUEMOVAX,DS:VALUEMOVAX,DS:[VALUE]如果VALUE的偏移地址=4000H,则上面4条指令的有效地址EA=4000H,物理地址也相同。这4条指令是等效的,就是说,使用符号地址表示操作数地址时,方括号[]可以省略。3.1.4寄存器间接寻址方式操作数的有效地址在寄存器
4、中,只允许使用BX、BP、SI和DI寄存器。物理地址=16dx(DS)+(BX)物理地址=16dx(DS)+(SI)物理地址=16dx(DS)+(DI)物理地址=16dx(SS)+(BP)例3.6MOVAX,[BX];默认DS寄存器作段地址MOVDX,[BP];默认SS寄存器作段地址MOVES:[DI],AX;指定ES寄存器作段地址3.1.5寄存器相对寻址方式操作数的有效地址是寄存器和位移量之和。位移量可以是8位/16位的常量,也可以是16位的符号地址。只允许使用BX、BP、SI和DI寄存器。默认搭配和寄存器间接寻址方式一样。例3.7MOVAX,ARRY[BX]MOVAX,[ARRY][BX]
5、MOVAX,[ARRY+BX]MOVAL,BUF[BX]MOVAL,[BX+8]MOVAX,COUNT[SI]MOVAX,[COUNT+SI]当COUNT为16位位移量的符号地址时:如DS=3000H,SI=2000H,COUNT=4000H;(36000H)=34H,(36001H)=12H物理地址=16dx(段值)+EA=30000H+2000H+4000H=36000H3.1.6基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器内容之和。物理地址=16dx(DS)+(BX)+(SI)物理地址=16dx(DS)+(BX)+(DI)物理地址=16dx(SS)+(BP)+(SI)
6、物理地址=16dx(SS)+(BP)+(DI)例3.8MOVAX,[BX][SI];默认DS寄存器作段地址MOVAX,[BP][DI];默认SS寄存器作段地址MOVAX,ES:[BX][DI];指定ES寄存器作段地址3.1.7相对基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器以及一个位移量之和。基址寄存器BX和BP,变址寄存器SI和DI。默认段寄存器搭配和寄存器间接寻址方式一样。例3.9MOVAX,ARRY[BX][SI];默认DS寄存器作段地址注意双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。双操作数指令的两个操作数,长度须匹配。操作数的有效地址前可以加段跨越前
7、缀,但在以下三种情况下不允许:串处理指令的目的串必须用ES段PUSH指令的目的和POP指令的源必须用SS段指令必须存放在CS段
此文档下载收益归作者所有