【发布时间】:2021-03-30 05:09:22
【问题描述】:
如果有办法获得一个十进制值(0-9),有人可以向我解释一下吗?我正在做的一个项目需要它。我想做MOV SI, [CX:DX],但后来我有一种行不通的感觉。所以我决定在网上搜索,但我想要的主题不会出现。那么有人可以告诉我是否有办法从 0 到 9 获得 1 个十进制值?
我尝试过:
MOV BL, 1000
MOV AH, 00h
DIV DX
是不是我做错了什么?
将编译器 NASM 与 16 位代码一起使用。
【问题讨论】:
-
从什么获取?无论如何,一般来说,使用除以 10 的余数。
-
这不是更清楚。 1 个十进制数字 0-9 在十六进制中具有相同的值,因此无需转换。要获得一个数字,请使用模 10。您可能希望在
cx中提供示例输入,并在si中提供预期输出,以便我们更好地理解。 -
所以你想要最重要的十进制数字?一种选择是将输入除以 10000。如果商不为零,那就是您的结果。否则,将余数除以 1000,然后是 100,然后是 10。请注意,反向工作更简单,如果您对每次都除以 10 感到满意,但这样会以相反的顺序为您提供数字。
-
除非您实际输出结果,否则您肯定会看到黑屏。但这是一个完全不同的问题。
-
回复:标题问题:How to convert a binary integer number to a hex string?,或Printing hex values in x86 assembly(16 位)。但这似乎不是是你在做什么? How do I print an integer in Assembly Level Programming without printf from the c library? 用于从寄存器中的整数中提取以 10 为基数的数字,或 Displaying numbers with DOS
标签: assembly decimal nasm x86-16