首页 > 解决方案 > 谁能告诉我这些值在这个汇编代码中来自哪里?

问题描述

1

我从 youtube 获得了这段代码。这是在国际象棋游戏中移动棋子的代码。我还附上了我从 youtube https://github.com/r1fl/8086-Assembly-Chess
获得的源代码,这 是代码。

moves@validateMove:
        pawn@moves:
            xor cx, cx

            cmp [byte si], 0
            jg black@pawn

            white@pawn:
                pawn1@white:
                    mov bx, si
                    **sub bx, 8**

                    cmp [byte bx], 0
                    jne pawn2@white

                    push bx
                    inc cx

                pawn2@white:
                    mov bx, offset board@engine
                    **add bx, 48d**

                    cmp si, bx
                    jb pawn3@white

                    mov bx, offset board@engine
                    **add bx, 55d**

                    cmp si, bx
                    ja pawn3@white

                    mov bx, si
                    **sub bx, 16d**
                    push bx
                    inc cx

板子初始化代码(https://github.com/r1fl/8086-Assembly-Chess/blob/8e317f2aa05f1ee843f3bf3b0e7fc196f0ae8e7a/engine.inc#L11)表明它为板子使用字节数组,并为数组索引。

标签: assemblychessemu8086

解决方案


  • n 向前 p 向右 =n*8 - p
  • n 向前 p 向左 =n*8 + p
  • n 向后 p 向右 =n*8 + p
  • n 向后 p 向左 =n*8 - p

这是董事会的实际逻辑


推荐阅读