アセンブリで次のアクションに問題があります。アセンブリIA32に取り組んでいます。-4(%ebp)= xおよび-8(%ebp)= yと仮定すると、すでにユーザーから取得しています。これはコードです:
format1: .string "Multiply : %u * %u = %llu\n"
format2: .string "Divide : %u / %u = %u\n"
# operation multiply
movl -4(%ebp), %eax
mull -8(%ebp)
pushl %edx
pushl %eax
pushl -8(%ebp)
pushl -4(%ebp)
pushl $format1
call printf
# operation divide
movl -4(%ebp), %eax
divl -8(%ebp)
pushl %eax
pushl -8(%ebp)
pushl -4(%ebp)
pushl $format2
call printf
乗算の結果が%lluにある理由は、2つの長い数値を乗算して、64バイトに達しても結果を出力できるようにするためです。また、%edxでは、mullコマンドが64バイトの結果の「他の32バイト」を保存するため、printf用にスタックにプッシュする必要があります。たとえば、この出力が必要です。
Multiply : 4000000000 * 2 = 16000000000
また、3と4の除算演算でX.YZの結果を返すようにします。(仮数で2つ以下の数値、および四捨五入なし)eg
Divide : 3 / 4 = 0.75
19および1000の場合:
Divide : 19 / 1000 = 0.01
そして8と2のために:
Divide : 8 / 2 = 4.00
私は本当に結果を得るためにたくさん試みましたが、成功しませんでした。どうもありがとう!:)