谁能告诉我在这个汇编代码中这些值来自哪里?

时间:2021-05-26 12:04:08

标签: assembly chess emu8086

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) 显示它对电路板使用字节数组,并为数组索引使用类似的地址数学风格。

1 个答案:

答案 0 :(得分:0)

  • n forward p right = n*8 - p
  • n forward p left = n*8 + p
  • n 向后 p 右 = n*8 + p
  • n 向后 p 左 = n*8 - p

这是董事会的实际逻辑

相关问题