zoukankan      html  css  js  c++  java
  • 汇编中的@@, JMP @F, JMP @B 是什么意思

    在汇编语言的程序中,标号,总是免不了的。
    程序编写的长了,标号,就要有很多。

    但是,在一个程序中,标号,是不能重名的。
    于是,在编程时,对于标号的命名,往往要费些心思。

    @@,在汇编语言中,是当作标号用的。
    而且,这个标号,还可以重复使用。
    这不就方便多了吗?

    标号,有时是作为一段程序的名称。
    其最基本的功能就是:作为转移指令、调用指令的目的地。

    可是,如果在程序中,有了很多很多的 @@,可怎么区分它们呢?
    方法就是:最近。

    @F,就是向下转移到最近的 @@ 处;
    @B,就是向上转移到最近的 @@ 处。

    例如:

        MOV   CX, 8   ;循环 8 次
    @@: ... ...      ;这就是一个标号
        ... ...
        ... ...      ;循环体
        ... ...
        LOOP  @B     ;向上转移到最近的@@处
    

    又例如:

        MOV   AL, [SI]
        CMP   AL, 0
        JNZ   @F     ;向下转移到最近的@@处
        ... ...
        ... ...
    @@: ... ...
        ... ...
    

    做而论道所编写的程序,有许多标号都是使用了 @@ 的形式。
    看起来很简明,而且编程也方便。

    但是需要注意的是:

    --用 EMU8086 编译不通过,@@ 报错。
    --网上搜了一下,说是 @@ 只对于 MASM 有效。
    

    如果实在是想用 EMU8086,你也可以自己改动一下。
    把 @@、@F、@B 都改掉,即可。

    比如,在某处有个 @@,你可以自己改成:XX1;
    然后在其前、后都找一找,凡是转移到此处的 @F、@B,都要改成:XX1。

    其它的 @@、…,也都按此方法,依次修改,即可。
    改过之后,用 EMU8086 编译时,就应该不出错了。

  • 相关阅读:
    ie兼容,手机端兼容问题
    JS-cookie和正则表达式
    第六节蓝桥杯 方格填数
    最长公共子串长度
    上台阶问题
    各种好东西
    Painting the balls (dp优化)
    Nobita's New Filesystem (bitset)
    恐狼后卫 (区间dp)
    CF701F String set queries (分块思想+暴力)
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12537601.html
Copyright © 2011-2022 走看看