シフトを使用して、ユーザーが指定した 2 つの数値を乗算する際に問題が発生しています。ユーザーに2つの整数を入力するように求め、それらを乗算することになっています。私のプログラムは整数を求める際にはうまく機能しますが、積を与えると、それは天文学的な数であり、正しいとは言えません。どこが間違っていますか?それは何のレジスタを読んでいますか?
%include "asm_io.inc"
segment .data
message1 db "Enter a number: ", 0
message2 db "Enter another number: ", 0
message3 db "The product of these two numbers is: ", 0
segment .bss
input1 resd 1
input2 resd 1
segment .text
Global main
main:
enter 0,0
pusha
mov eax, message1 ; print out first message
call print_string
call read_int ; input first number
mov eax, [input1]
mov eax, message2 ; print out second message
call print_string
call read_int ; input second number
mov ebx, [input2]
cmp eax, 0 ; compares eax to zero
cmp ebx, 0 ; compares ebx to zero
jnz LOOP ;
LOOP:
shl eax, 1
dump_regs 1
mov eax, message3 ; print out product
call print_string
mov ebx, eax
call print_int