两点之间的装配 YASM 距离平方

Assembly YASM Distance Squared Between 2 Points

老实说,我在我的集​​会中迷失了 class。有人愿意指导我如何解决这个问题吗?我要在 EBE 中编码。 这是问题所在:

编写一个汇编语言程序来计算 2 点之间距离的平方 平面标识为每个 2 个整数坐标,存储在内存中。

我完全不确定我这样做是否正确,但到目前为止,这是我所拥有的:



        segment .data
a       dq      5         ; one point
b       dq      10         ; another point
        segment .text
        global  main
main:
        mov     rax, [a]    ; move a into rax
        imul    rax, rax    ; a squared
        mov     rdx, [b]    ; move b into rdx
        imul    rdx, rdx    ; b squared
        sub     rax, rcx    ; is rax 0?
        xor     rax, rax
        ret

公式如下:

distance squared = (a.x - b.x)**2 + (a.y - b.y)**2

例如(未经测试):

        segment .data
a:                         ; one point
.x:     dq      5
.y:     dq      7

b:                         ; another point
.x:     dq      10
.y:     dq      12

        segment .text
        global  main
main:
        mov rax,[a.x]      ;rax = a.x
        mov rbx,[a.y]      ;rbx = a.y
        sub rax,[b.x]      ;rax = (a.x - b.x)
        sub rbx,[b.y]      ;rbx = (a.y - b.y)
        imul rax,rax       ;rax = (a.x - b.x)**2
        imul rbx,rbx       ;rbx = (a.y - b.y)**2
        add rax,rbx        ;rax = (a.x - b.x)**2 + (a.y - b.y)**2 = distance squared
        ret