在MASM32中将十进制转换为二进制。
include \masm32\include\masm32rt.inc
.code
start:
call main
exit
main proc
LOCAL var1: DWORD
LOCAL dem: DWORD
mov var1, sval(input("Enter Binary Number: "))
mov dem, strlen(str$(var1))
mov ecx, dem
mov ebx, 1
mov dec, 0
lbl0:
DEC ecx
cmp ecx, 0
jl lbl1
mov eax, var1
and eax, ebx
mov edx, eax
shl edx, cl
add dec, edx
shl ebx, 1
jmp lbl0
lbl1:
print chr$(13,10)
print chr$("Decimal Equivalent: ")
print str$(dec)
print chr$(13,10)
ret
main endp
end start
这是我代码,但是不起作用
1条答案
按热度按时间qvk1mo1f1#
标题要求“将二进制转换为十进制”,但文本要求“将十进制转换为二进制”。
你的程序试图按照标题...
既然您无论如何都要使用这些高级函数,为什么不使用
str$(var1)
来解决这个问题呢?你给我们看的“转换”循环根本没有转换成十进制表示。
strlen
提供了字符串中的字符数,那么ECX中的这个特定循环计数将做什么呢?关于如何将整数转换为十进制字符串,请参见如何在汇编级编程中打印整数而不从c库中打印?(itoa,整数到十进制ASCII字符串)。