首页 > 解决方案 > 如何从 eax 移动到较低的寄存器,如 ax 和 bx

问题描述

我的代码是否以这种方式工作,因为我担心错误地移动到较低的寄存器。(错误是:错误 2 错误 A2022:指令操作数必须相同大小 D:\assembly project\assemblyproject\assemblyproject\assembly1.asm 25 1个组装项目)

.data 
message1 BYTE "enter the 1st number",0dh,0ah,0
message2 BYTE "enter the 2nd number ",0dh,0ah,0
message3 BYTE "the GCD is: ",0dh,0ah,0
nb1 dword ?
nb2 dword ?
.code
main proc

mov edx, offset message1        
call writeString
call ReadDec
mov nb1,eax
mov edx,offset message2
call ReadDec
mov nb2,eax
mov ax, nb1
mov bx, nb2

calculate_GCD:
    cmp ax,bx
    je display_gcd
    jb swap_nb
    div bx
    cmp dx,0
    je display_gcd
    mov ax,bx
    mov bx,dx
    jmp calculate_GCD

swap_nb:
    XCHG ax,bx
    jmp calculate_GCD


display_gcd:
    movzx eax, dx
    mov edx, offset message3
    call writestring
    call writedec

invoke ExitProcess,0
main endp
end main

标签: assemblyx86irvine32

解决方案


推荐阅读