我正在尝试将不同的碱基转换为10碱基(使用Masm32; 8086)。我已经颠倒了我想要的数字(“文本”),即数组。但现在不知道该怎么办。有人可以帮我吗,pelase?
这是转换号码时的原因:
COD1:
mov al, text[di-1] ; copies all the digits in the array
mov es:[bx],al ; to a new position: p2
inc bx
inc bx
dec di
loop COD1
我该怎么办?
我试着在这个命令的中间进行操作,但是程序崩溃了......我真的不知道该怎么办了......
由于
答案 0 :(得分:0)
你输入一个数字,作为文本,可以是任何数字基数,你想打印出该数字的十进制表示吗?
嗯,两个主要步骤。一般方法:
第1步: 将任意数字的ascii转换为二进制: 将用作累加器的寄存器或变量初始化为0, 迭代读取输入数字的数字,将累加器内容乘以数字基数,然后加上数字值。 完成后,累加器包含数字的二进制表示。
第2步: 将二进制数转换为十进制(或任何其他数字基数): 按数字划分累加器。在累加器中保留截断的商。将余数转换为等效于其数值的ASCII。反向添加到缓冲区。重复。当累加器为零时,缓冲区包含表示转换后的数字的字符串。
请注意,您可以在第二步中避免缓冲,如果你想要的只是在转换它时输出数字,而不是保留它的字符串表示:递归地砍掉数字,转换并堆叠它们。展开递归时输出堆叠值。