两点之间的装配 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
老实说,我在我的集会中迷失了 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