IBM-PC汇编语言程序设计余朝琨第4章数据与指令的寻址方式课件教学.pptVIP

  • 3
  • 0
  • 约9.19千字
  • 约 64页
  • 2016-12-30 发布于广东
  • 举报

IBM-PC汇编语言程序设计余朝琨第4章数据与指令的寻址方式课件教学.ppt

第4章 数据与指令的寻址方式 指令的操作码字段在机器里的表示比较简单,只需要对每一种操作指定确定的二进制代码。如操作码字段有8位,按其二进制编码有256种,可代表256种不同的操作。 计算机只能识别二进制代码,所以机器指令是由二进制代码组成的。为便于人们使用而采用汇编语言来编写程序。汇编语言是一种符号语言,它用助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址,它与机器指令是一一对应的。 无条件转移或子程序调用的目标转移地址分为段内和段间两种情形。若为段内转移或段内调用子程序,其特点:只要改变逻辑地址中的IP的值,因为,只是段内转移时,CS的值不会改变;若为段间转移或段间子程序调用,那目标转移地址的CS与IP都要改变。与转移地址有关的寻址方式中的目标地址只存在寻找与计算的问题。 4.5.1 段内直接寻址(Intrasegment direct addressing) 目标转移地址中的有效地址是当前IP寄存器内容和指令中指定的8位或16位位移量之和。写成式子为:IP目标=IP当前+DISP 如图4-10所示。 当前IP总是指向下一条指令的首地址。 1.当位移量为8位时,称为短转移,指令格式为:JMP SHORT DISP  7FFFH之间,即十进制数的-32768与+32767之间,它可以实现大范围的段内任意一个位置的跳转,可在64K内转移,此指令的机器码为三个字节:E9(操作码)、DISP低8位、DISP高8位, DISP是16位二进制补码,转移的目标有效地址为:IP目标=EA=IP当前+DISP16 这种段内直接寻址方式的转移地址并没有在指令字节中直接给出,在指令操作码后的字节中,给出的只是当前转移指令下一条指令所在首地址的有效地址与目标地址的位移量,这是个相对量,而不是绝对地址,这个位移量若为8位(带符号)称短跳转;若为16位即为近跳转。所以段内直接转移实质上是相对转移,也称为段内相对转移。其优点是:具有这种寻址方式转移指令的程序段可以位于内存的任何一个区域,这种程序段具有良好的再定位特点。这种转移指令中的转移地址不需要改动,程序执行时,转移的去向不会出错。具有“水涨船高”的特色,可移植性强。 这种寻址方式适用于条件转移和无条件转移,也适用于段内子程序调用指令。 注:条件转移指令只能用短跳转寻址方式,子程序调用只能用近跳转,而无条件转移指令两种寻址方式都行。 在编制程序中,这些指令的习惯写法为: 对JMP SHORT DISP与JMP NEAR PTR PROGA格式可统一写成: JMP〈转移目标标号〉如:   : JMP NEXT ︰ NEXT: ……       ︰        在编程中不必去计较“短”与“近”的问题,可让汇编程序去翻译处理,这种写法方便了用户。同理也有JZ〈标号〉等简便写法。 4.5.2 段内间接寻址(Intrasegment indirect addressing) 物理地址=CS×16+EA 【例4-15】JMP BX 转移地址的有效地址为:EA=BX,IP←EA 若指令执行前:BX=1600H,IP=1200H 指令执行后:IP=1600H,BX=1600H,程序转移到偏移地址1600H处继续执行指令。 指令执行前:IP=2000H 则指令执行后:EA=BX+SI=1234H+5678H=68ACH IP=(DS×16+EA)=(20000H+68ACH)=(268ACH)=2450H 4.5.3 段间直接寻址(Intersegment direct addressing) 在代码段之间的转移牵涉到逻辑地址中的CS和IP都要改变,其中CS一定改变,也有刚好IP不变的特例。所以寻找转移地址的过程应为双字操作。 段间直接寻址是在指令操作码后直接提供了转移地址的偏移地址(目标IP)和段基值(目标CS),所以只要用指令中指定的偏移地址取代IP寄存器内容,用指令中指定的段基值取代CS寄存器的内容就完成了从一个代码段到另一个代码段的转移操作。  如DS=2000H,BX=2200H,DISP=0020H,则四个相邻字节单元的第一个物理地址=20000H+2200H+0020H=2

文档评论(0)

1亿VIP精品文档

相关文档