汇编 - 以10为基数的数字

时间:2014-06-02 09:38:23

标签: assembly masm x86-16

我正在尝试将不同的碱基转换为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

我该怎么办?

我试着在这个命令的中间进行操作,但是程序崩溃了......我真的不知道该怎么办了......

由于

1 个答案:

答案 0 :(得分:0)

你输入一个数字,作为文本,可以是任何数字基数,你想打印出该数字的十进制表示吗?

嗯,两个主要步骤。一般方法:

第1步: 将任意数字的ascii转换为二进制: 将用作累加器的寄存器或变量初始化为0, 迭代读取输入数字的数字,将累加器内容乘以数字基数,然后加上数字值。 完成后,累加器包含数字的二进制表示。

第2步: 将二进制数转换为十进制(或任何其他数字基数): 按数字划分累加器。在累加器中保留截断的商。将余数转换为等效于其数值的ASCII。反向添加到缓冲区。重复。当累加器为零时,缓冲区包含表示转换后的数字的字符串。

请注意,您可以在第二步中避免缓冲,如果你想要的只是在转换它时输出数字,而不是保留它的字符串表示:递归地砍掉数字,转换并堆叠它们。展开递归时输出堆叠值。