QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
39
查看: 191|回复: 5

汇编语言第三版p170有个地方不太明白

[复制链接]
最佳答案
0 
累计签到:1 天
连续签到:1 天
易只小白鸟 发表于 2018-1-25 14:38:47 1915 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
题目是:利用除法计算100001/100
答案是:
mov dx,1
mov ax,86A1H ;(dx)*10000H+AX=100001
mov bx,100
div bx

我不太明白的是,他这个被除数换成了16进制,但是除数100却没有换,我用debug看了下,没有换确实是对的,这里有些疑惑,请问怎么回事呢,谢谢
楼层
跳转到指定楼层
最佳答案
3 
累计签到:90 天
连续签到:2 天
xiaohaituan 发表于 2018-1-25 14:52:46 From FishC Mobile | 显示全部楼层
没换是bx能放的下
最佳答案
3 
累计签到:23 天
连续签到:1 天
cnkizy 发表于 2018-1-25 19:33:42 | 显示全部楼层
本帖最后由 cnkizy 于 2018-1-25 21:55 编辑
  1. assume cs:codesg

  2. codesg segment
  3. start:       

  4.                 mov dx,1
  5.                 mov ax,86A1H ;(dx)*10000H+AX=100001
  6.                 mov bx,100
  7.                 div bx
  8.        
  9.                 mov ax,4c00h
  10.                 int 21h

  11. codesg ends
  12. end start
复制代码

2

2


1000 01(186A1H) / 100 (64H) = 1000(03E8H) ... 0001(0001H)

  1. assume cs:codesg

  2. codesg segment
  3. start:       

  4.                 mov dx,1
  5.                 mov ax,86A1H ;(dx)*10000H+AX=100001
  6.                 mov bx,100H
  7.                 div bx
  8.        
  9.                 mov ax,4c00h
  10.                 int 21h

  11. codesg ends
  12. end start
复制代码

4

4


1000 01(186A1H) / 256 (100H) = 390(0186H) ... 0161(00A1H)



1000 01(186A1H) / 100 (64H) = 1000(03E8H) ... 0001(0001H)
1000 01(186A1H) / 256 (100H) = 390(0186H) ... 0161(00A1H)
100 和 100H 我这边算出来的肯定是有区别的。你仔细看看呢。

上面的是32位被除数 16位除数的计算。

你那个‘换’是啥意思 没能理解到意思呀。

如果是16位除以8位的 那一个 ax就能存下了 不需要dx+ax。al是商 ah是余数
最佳答案
3 
累计签到:90 天
连续签到:2 天
xiaohaituan 发表于 2018-1-25 19:51:17 From FishC Mobile | 显示全部楼层
cnkizy 发表于 2018-1-25 19:33
1000 01(186A1H) / 100 (64H) = 1000(03E8H) ... 0001(0001H)



一个是十六进制一个是十进制肯定不一样,
最佳答案
3 
累计签到:23 天
连续签到:1 天
cnkizy 发表于 2018-1-25 21:37:01 | 显示全部楼层
xiaohaituan 发表于 2018-1-25 19:51
一个是十六进制一个是十进制肯定不一样,

是啊 我知道,我就是给楼主说嘛 进制不对
最佳答案
0 
累计签到:95 天
连续签到:1 天
比特阿尔法 发表于 2018-2-11 12:38:11 | 显示全部楼层
编译器的默认格式是 十进制,而要表示  十六进制  的数,在数字末尾要加H,所以在编译器看来,
86A1H是是十六进制的,编译不用进行转化,100没有加H,编译器默认他是  十进制,编译时会处理的,所以最后在程序运行时都会转化为  相同进制的。

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /2 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-2-20 15:18

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