【发布时间】:2011-09-04 01:54:47
【问题描述】:
我正在为 16 位处理器(特别是 8086/8088)开发浮点计算器。 我正在使用as88 Tracker,它没有实现浮点,不允许我将 sscanf 与“%f”一起使用。
我曾想过在 C 代码中执行此操作并从我的汇编代码中调用此函数,但不知道如何执行此操作。
这是我目前的代码:
#include "../syscalnr.h" .sect .文本 _代码_: 推bp mov bp, sp 推 SEGOP-PRIOP !将 PRIOP 字符串大小推入堆栈 推优先 推标准输出 推 _WRITE !系统调用以在显示器上打印字符串 系统 添加 sp, 8 mov di, rasc !准备 DI 接收 char 推 _GETCHAR 1:系统 cmpb al, '\n' !与 EOL 比较并继续存储字符串字符 杰2f 斯托布!将 char 存储到变量 rasc 跳转 1b 2:xorb al,al!清除寄存器 添加 sp, 2 .sect .数据 _数据_: PRIOP: .asciz "插入第一个操作数:\n" SEGOP: .ascii "插入第二个操作数:" 格式:.asciz "%u" F_CHAR: .asciz "%c" F_STR: .asciz "%s\n" .sect .bss _bss_: rasc:.space 10我希望能够将 C 函数编写为:
float* getVal(char* ch) {
float fVal;
sscanf(ch, "%f", &fVal);
if(fVal == 0) return 0;
return fVal;
}
并从我的汇编代码中调用它,将用户输入的字符串数字转换为浮点数。
谁能帮我解决这个问题?
谢谢!
【问题讨论】:
-
你要的函数好像是
strtod,是标准库的一部分。 -
好像我也可以使用那个,但回到重点,我怎样才能从我的汇编代码中调用这个函数?
标签: c assembly floating-point as88