【发布时间】:2020-05-28 18:08:56
【问题描述】:
我应该如何在 Assembly 中获得更多的部门编号?
我只能打印第一个十进制数字:c
org 100h ;start
xor edx,edx
mov eax,1
mov ebx,7
div ebx ; 1 / 7
; EAX / EBX = EAX; remainder IN EDX
; EDX VALUE IS ONLY 1 INSTEAD OF 1428571428571429....
; SO instead of printing 0,1428571428571429...x
;(x is how many decimal numbers I want) I can only print out 0,1 :(
mov ax,4c00h;end
int 21h
【问题讨论】:
-
请注意,
div为您提供余数,而不是小数位。巧合的是,在您的情况下,这个数字等于小数点后的第一位。试试长除法。 -
感谢您的回答 :) 我是汇编新手,我应该使用函数还是循环?
-
使用任何你需要的东西来解决问题。如果您不确定,请尝试先用高级语言绘制算法草图,然后再将其翻译成汇编。
-
指令
div执行 integer 除法,在您的示例中,它给出商 EAX=0 和余数 EDX=1。如果需要real除法,将内存中的数字定义为floatdivident DD 1.0和divisor DD 7.0,然后使用felixcloutier.com/x86/fdiv:fdivp:fidiv
标签: assembly nasm x86-16 division