首页
社区
课程
招聘
关于汇编语言教程中的问题
发表于: 2011-5-15 12:54 4447

关于汇编语言教程中的问题

2011-5-15 12:54
4447
一直想不明白 汇编语言教程中讲关于 数据间的转换(2位,10位,16位) 和补码  到底有什么用?
知道的兄弟姐妹们 能否说下  网上搜索了没找到答案  或许我问这个问题有点。。。。。 但是我真的想知道为什么?  

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 188
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个很有用的啊,数制和补码问题是计算机的基础知识,进行四则运算进位等上还有很多地方要用到……
2011-5-15 14:29
0
雪    币: 45
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我只知道只有有符号的整数才有原码、反码和补码这一点。。。。
2011-5-15 14:40
0
雪    币: 458
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢!两位的回答 但还是不太明白
2011-5-15 15:41
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
首先,关于你的问题,你说的数据间的转换到底是说
    Byte(8位),Word(16位),Dword(32)位呢?
    还是说2进制,10 进制,16进制之间的转换呢?

    如果是说BYTE,WORD,DWORD之间的转换,那是因为数据长度的限制.

    如果你的问题是说2进制,10进制,16进制之间的转换,那是因为电子计算机出现以后,使用电子管来表示十种状态过于复杂,所以所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子计算机采用二进制来表示数字和数据。常用的进制还有8进制和16进制,在电脑科学中,经常会用到16进制,而十进制的使用非常少,这是因为16进制和二进制有天然的联系:4个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成16进制只要每4位进行转换就可以了。比如A是1010,B是1011等等..

    关于补码,我建议你去看看<<计算机组成原理>>这本书,其中详细了讲解了为什么在计算机中要引入补码的概念,并不是LS所说的因为符号的问题才引入了补码,而是为了简化某些计算,比如,加法的运算可以用电路中的全加器等很简单的实现,而减法缺需要很麻烦的电路来完成,所以引入补码的概念,将加法转换成减法运算
2011-5-15 19:50
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
二进制符合计算机思维

计算机中
数据存储 或信号专递都是只有2种状态

有没

或者说 高电平 低电平

其实楼主随便看看哪本介绍计算机的书都有类似这种介绍
2011-5-15 20:21
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
因为机器语言中用到的数字常常是16进制,而表示存储单元还有寄存器内容等时也常常用到16进制还有2进制,毕竟计算机对2进制比较习惯,而且很多时候由于2进制表示太长了,就要用16进制来缩短长度,而我们人习惯的则是10进制,所以掌握这三者之间的换算关系对学习汇编语言来说还是很重要的。至于补码、反码等,这也是由于计算机运算时有自己的特点,所以要想对机器更了解,提高对其掌控力,让其对你的指令反应更加迅速,操作者本身必须熟练掌握2、16、10进制数的关系以及补码反码等的概念及运算特点。以上只是我个人的理解,希望对你有帮助哈。
2011-5-15 20:58
0
雪    币: 378
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
LS的各位说的都挺不错的,我也说下自己的理解吧,简单点。

1、学会2,10,16进制间的转换在看汇编指令的时候你的反应会快一些。毕竟在用汇编的时候多数数据都是用16进制描述的,这样看起来直观很多。如:你熟悉2进制与16进制间关系的话,当看到3E4D这个数的时候就可以知道它是由“3E”和“4D”这两个8位数据构成,即:0011 1110和01001 101。

PS:不必太深究2,10,16进制有什么关系,只是我们日常生活中已经习惯了10进制,而计算机硬件认识的是2进制,所以我们要学习它,认识它,而10进制与2进制间转换看起来不是那么直观,才有了16进制的吧,个人觉得16进制的存在相当于2进制与10进制之间的一座桥梁。方便我们的使用。

2、补码这样理解,它为“有符号数”的计算提供了一种方便,它将2进制中的减法运算转换为了加法。带着这个思路你再看一去看一下补码的使用方法,应该比较容易明白了。

如我的理解有错,请各位大牛轻拍,谢谢哈
2011-5-16 10:18
0
雪    币: 458
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不好意思 忘记来看贴了 谢谢!大家 我明白了 但是分要给谁呢 只能依自己的理解能力给分了 
2011-5-16 11:03
0
雪    币: 309
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
因为计算机的最底层硬件是数字电路中的触发器这一类了,触发器就只有两种输出状态,原状态与反状态。这样的它的下一级电路也就只认两种状态了。为了表示的方便理所当然的就用了二进制的“0”与“1”来表示触发器的这两种状态了。而发明计算机是为了替人干活的,所以就需要把现实中的各种信息让计算机理解,结合计算机只认识“0”与“1”,因此就出现了各种信息的编码方案,如ASCII码,与支持中文的国标码等,为了表示自然界的各种信息也有了原码表示,反码,补码表示。这就是最早的机器语言程序了,而二进制编码信息太长,不便于记忆,人们又把二进制每4位一组的用16进制来表示,又有了符号语言-----汇编语言,这两种语言都是直接与机器的底层硬件交流,能最终掌握的并不多,不便于普及电脑最终为人服务的思想,所以后来发明了与自然语言相近的各种高级语言来与计算机交流。其二,计算机底层硬件的加减法计算中减法相对要麻烦一些,为了把减法转化为加法来做,在计算机中最终都采用了补码表示信息,而我们现在要学的是汇编语言,自然就要把我们常用的十进制与二进制,十六进制的转换搞清楚了,而计算机表示信息的编码基本就使用的二进制的补码表示。这就是个中原因了。说的有点拉塌,请各位大大斧正。
2011-5-29 11:27
0
游客
登录 | 注册 方可回帖
返回
//