assembly - 谁能告诉我这些值在这个汇编代码中来自哪里?
问题描述
我从 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)表明它为板子使用字节数组,并为数组索引。
解决方案
- n 向前 p 向右 =
n*8 - p
- n 向前 p 向左 =
n*8 + p
- n 向后 p 向右 =
n*8 + p
- n 向后 p 向左 =
n*8 - p
这是董事会的实际逻辑
推荐阅读
- c# - 带有两个选择子句的内连接 LinQ MVC
- sql - SQL SERVER - 在另一个表中查找派生列并返回一个值
- opengl-es - GLSL:内存耗尽
- python - 将两个数组相乘并求结果的总和
- python - 为什么我收到“DLL 加载失败:%1 不是有效的 Win32 应用程序”错误?
- c - 链表销毁后,使用链表的斐波那契数列崩溃。如何跟踪错误?
- microsoft-cognitive - 在具有范围值的研究名称字段上使用 CalcHistogram 不会返回结果
- php - 从动态文本框sqlserver多次插入
- socrata - Sodapy HTTPError:403 客户端错误:禁止
- python - Keras 是否具有将输入词向量复制并反向传播到仅一组的功能?