鱼C论坛

 找回密码
 立即注册
查看: 4076|回复: 8

[已解决]小甲鱼入门学习汇编第八章div后的数字输出问题

[复制链接]
发表于 2018-6-16 23:15:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 444lzx 于 2018-6-16 23:26 编辑

在小甲鱼第八章视频中,讲到用div指令计算100001除以100,商存在ax中,debug查看其结果是03e8。现在我想用dos的2号指令将这个结果以十进制形式输出,该怎么做呢?
前面的代码大概是这样的:
  1. data segment
  2.         dd 100001
  3.         dw 100
  4.         dw 0
  5. data ends
  6. assume cs:code,ds:data       
  7. code segment
  8. start:
  9.         mov ax,data
  10.         mov ds,ax
  11.         mov ax,ds:[0]
  12.         mov dx,ds:[2]
  13.         div word ptr ds:[4]
  14. code ends
  15. end start
复制代码
最佳答案
2018-6-17 13:33:57
444lzx 发表于 2018-6-17 13:15
请问你这是在汇编里面写了c函数,然后结果保存在字符串中输出吗???
那结果的进制转换做了吗?
rem = ...

这个程序是C语言和汇编语言混合编程,由汇编语言调用C语言写的函数
什么是二进制?什么是十进制?什么是十六进制?
数字在内存中就只是一个数字,看你的需求,你可以认为这个数字是十六进制(基数是16),也可以认为是十进制(基数是10),或是二进制(基数是2)
请自己复习进制转换部分

字符在内存中就是一个数字
如果是数字 3 想要显示,那就需要把数字 3 转换成字符 '3'
字符 '0' 是 0x30
字符 '3' 是 0x33
3 + 0x30 = 0x33
数字 3 加字符 '0' 等于字符 '3'
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-17 13:15:53 | 显示全部楼层
人造人 发表于 2018-6-17 07:46
偷个懒,用C语言写个转换函数 ^_^

请问你这是在汇编里面写了c函数,然后结果保存在字符串中输出吗???
那结果的进制转换做了吗?
rem = value % 10;
value /= 10;
buf[i++] = rem + '0';
如果这是进制转换的话,为什么二进制转十进制要除以十取余呢?
还有rem应该是int型数据,可以跟字符‘0’相加吗??
麻烦了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-17 14:30:27 | 显示全部楼层
人造人 发表于 2018-6-17 13:35
你需要下载这几个文件,上面的排版出 bug 了

好的谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-1 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表