【问题标题】:I am facing issue while apply BODMAS in assembly language [duplicate]我在用汇编语言应用BODMAS时遇到问题[重复]
【发布时间】:2020-06-23 07:03:14
【问题描述】:

我在用汇编语言应用 BODMAS 时遇到问题。根据 BODMAS 规则, (4 * 2 * 3 - 1 + 10 * 6) 的结果应该是 83,但它显示了其他结果。请尝试解决此问题。谢谢。

TITLE Add and Subtract, Version 2         (AddSub2.asm)


INCLUDE Irvine32.inc

.data

.code
main PROC

; using BODMAS
; 4*2*3-1+10*6

mov eax,4
mov ebx,2
mov ecx,3
mov edx,1
mov esi,10
mov edi,6


mul ebx
mul ecx

mov ebx,eax
mov eax, esi
mul edi

add edi,edx

mov eax,ebx
sub ebx,edi


call dumpregs
call WriteInt

exit
main ENDP
END main

【问题讨论】:

  • 如果您不想用乘法的高半结果覆盖 EDX,请不要使用 mul。只需像编译器一样使用imul eax, ebx;这是一条普通的 2 操作数指令,例如 add。使用调试器单步执行您的代码;您将能够看到您的第一个 mul 用高半结果 (0) 覆盖 EDX。

标签: assembly x86


【解决方案1】:

TITLE 加减法,版本 2 (AddSub2.asm)

;该程序加减 32 位整数 ;并将总和存储在一个变量中。

包括 Irvine32.inc

.数据

.code 主进程

; 4*2*3-1+10*6
; Using BODMAS


mov eax, 10
mov ebx, 6
mul ebx

mov ecx, eax

mov eax, 4
mov ebx, 2

mul ebx

mov ebx, 3
mul ebx

add eax,ecx

sub eax, 1

call dumpregs
call WriteInt


call Readchar

exit

主要ENDP 结束主要

【讨论】:

  • 答案应该解释他们修复了什么,而不仅仅是一个未注释的代码转储
  • 请解释你的代码
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多