在LST清单中,汇编程序在这样的二进制指令后记以R。在例10.3的LST清单中,由于 .data是段地址,这是汇编程序不能确定的,因而指令

            mov    ax, @data

  的机器语言值不定,后面记以符号R。而

            mov    cx, count

  指令的机器语言虽然已有了一个值,但因count是浮动地址,因而在机器指令后仍记以符号R,以表示这一指令中的地址是浮动地址。

  同学们也许会问,既然偏移地址是相对于段地址而言的相对地址,那么重新分配段地址值对偏移地址本身会有什么影响呢?

  确实,就一个程序模块本身来说,它确实没有什么影响。但是,在下一节里我们将介绍多个程序模块相连接的情况。在某些情况下,当连接程序把几个模块中的某些段连接在一起形成一个段时,地址的浮动就会直接影响机器指令代码。在这种情况下,连接程序将会修改汇编程序标以R的地址值以得到正确的机器指令。

例10.3

   .model small
   ;********************************
     0000         .data
     000A         org    10
     000A E3       num    db     -29
     000B 0064[      array   db     100 dup(?)
           ??
              ]

     006F 0005      count   dw     5
     0071 82 04 2A    masks   db     82h,04h,2ah
  ;********************************
     0000         .code
     0000         main    proc    far
     0000         start:
     0000 B8 ---- R         mov     ax,@data
     0003 8E D8           mov     ds,ax
     ;
     0005 8B 0E 006F R       mov     cx,count
     0009        repeat:
     0009 49            dec     cx
     ; .
     ; .
     ; .
     000A B8 4C00          mov     ax,4c00h
     000D CD 21           int     21h
     000F              main    endp
     ;********************************
     000F              end     start