Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >位、字节、字和双字-何时在汇编中使用什么?

位、字节、字和双字-何时在汇编中使用什么?
EN

Stack Overflow用户
提问于 2012-02-28 02:06:19
回答 2查看 14.1K关注 0票数 5

我正在努力学习汇编(更像是在苦苦挣扎),我遇到了字节、单词、双字等数据类型。

真正让我困惑的是,你什么时候知道使用其中一个而不是另一个。显然,您希望使用最保守的选项,但我如何知道选择一个字节而不是一个单词?例如1个字= 16位或2字节。这是否意味着我可以在1个单词中容纳16个字符?因此,为了保存字母表,我需要声明2个单词?

寄存器(16位、32位和64位)也是如此。我知道,当您处理较小大小的数据时,可以使用较小的寄存器,如alah,而不是eax。对于16位寄存器,您是否可以将大于一个字的数据类型移入其中,因为由于它是16位的,它可以容纳一个16位的字?

理解整个概念是很困难的。如果任何人碰巧有任何好的资源或信息,我可以查看,那将是很好的。干杯!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-28 04:17:44

一开始,选择正确的数据宽度可能很难,但一旦您习惯了,就会很容易。这里有一些需要考虑的问题,首先要提到的是最重要的考虑因素。

说你想计算180×247并打印结果。每个操作数都适合一个无符号字节,但乘积不适合,或者说你想表示一个文件的大小,它很容易就有很多兆字节大小。然后,您将需要比16位整数更宽的值来表示大小。

输入/输出格式是什么?如果您希望其他代码使用字节数组调用您的函数,那么您必须以字节的形式读取数据元素;没有其他选择。不过,您可以临时转换为更宽的表示以进行处理。

如果你有十亿条数据库记录,每条记录使用一个字节,那么总的数据大小将是1 GB。如果每条记录都使用dword,则总数据大小为4 GB。微小的差异乘以巨大的数字会产生巨大的差异。

总而言之,您使用的数据宽度实际上并不重要,只要您能够编写正确的代码,与其他代码交互,并保持足够小的内存使用量,就可以运行您的程序。因此,使用dword作为默认值并不是一个坏主意。

票数 5
EN

Stack Overflow用户

发布于 2012-02-28 04:20:54

位不是字符。它是一个单独的二进制数字,0或1。两位是00,01,10或11。阅读二进制算术(以及与十进制之间的转换以验证您的答案)和数据类型的表示。这是基本的东西,如果不完全确定一个字节是什么,它可能包含什么值,以及你可能会用它做什么,就不要继续下去。

word是一种数据类型,在本例中为16位或2字节。因此,当我们解释你的问题时,它变成了:

对于双字节寄存器,您可以将大于双字节的数据类型移动到其中吗?因为它是双字节,所以它可以容纳双字节空间?

这就是@Ignacio Vazquez-艾布拉姆斯提到的不连贯。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9475377

复制
相关文章
位、字节、字的区别
字(Word)代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位。
Lokinli
2023/03/09
6740
16位汇编中的伪指令
汇编中的伪指令(基于汇编编译器MASM讲解) 一丶什么是伪指令,以及作用 首先我们用汇编开发效率低,如何才能开发效率高,甚至开发速度比C语言或这个高级语言快 答案: 伪指令 什么是伪指令   伪指令是
IBinary
2018/01/05
1.5K0
16位汇编中的伪指令
汇编语言从入门到精通-1预备知识
  机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。
墨文
2020/02/28
1.5K0
汇编语言从入门到精通-1预备知识
使用8位字节的编码格式将字节流安全的转换成String
我们常用的编码格式有ASCII,Unicode,UTF-8,GB2312等,如何在这些编码之间安全转换呢? 最近做邮件系统,采用了OpenPOP组件,这是老外写的,没想到用到中文环境中,出了很多问题,主要就是编码问题。 通常,邮件内容都会经过Base64编码,在邮件接收端,需要对其解码,得到字节流,再进一步解码为正确的字符串,如 Base64.cs文件中: public static class Base64     {         public  static byte[] DecodeToBytes
用户1177503
2018/02/26
1K0
预置位和看守位有什么区别?在EasyCVR平台中如何使用?
EasyCVR基于云边端智能协同架构,具有强大的设备接入、视频汇聚管理、全网分发、按需调阅、鉴权播放、智能分析等视频能力与服务。平台开放度高、兼容性强、可支持灵活拓展与第三方集成。
TSINGSEE青犀视频
2023/05/23
5110
程序机械级表示——数据格式与访问信息
8位称为字节(byte),16位称为字(word),32位为双字(double words),64位为四字(quad words)
Andromeda
2023/10/21
2150
深入理解计算机系统(3.3)------操作数指示符和数据传送指令
本文介绍了汇编语言中的操作数指示符,包括操作数类型、寄存器、内存和表达式。同时,本文还详细介绍了数据传送指令、算术和逻辑操作指令、字符串操作指令和其他指令,为读者提供了全面的汇编语言指令知识。
IT可乐
2018/01/04
1.5K0
深入理解计算机系统(3.3)------操作数指示符和数据传送指令
程序机械级表示——数据格式与访问信息
8位称为字节(byte),16位称为字(word),32位为双字(double words),64位为四字(quad words)
Andromeda
2023/10/21
2400
何时使用Serverless,何时使用Kubernetes
我经常被问到的一个问题是:我应该使用Serverless还是Kubernetes来构建云原生应用程序?两种计算选项都有利有弊,这取决于您的需求,您应该选择哪种选项。
February
2018/11/23
1.8K0
何时使用margin和padding?
margin和padding的意义相信大家都很清楚,可是在具体应用中,到底应该使用哪一个,就比较难于判断了。 这篇文章 说得挺清楚的,在这里翻译一下,供参考。
Java架构师必看
2021/03/22
7220
X86指令格式(操作码列和指令列解释)
1.主操作码是 1、2 或 3 字节.其中2字节操作码和三字节操作码都在0F开头,但是二字节的SIMD opcode是一个强制前缀+0fh+一字节的操作码:
franket
2020/06/18
34.4K0
16位汇编指令_汇编语言指令表
陷阱标志TF,TF=1,处理器处于单步执行指令(处理器每执行一条指令便产生一个内部中断,可以对程序进行单步调试)
全栈程序员站长
2022/11/01
1.1K0
深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符
  本文的内容其实可以成为汇编语言的基础,因为汇编语言大部分时候是在操作一些我们平时开发看不到的东西,因此本文的目的就是搞清楚,汇编语言都是在操作些什么东西。或者更准确的说,各种汇编指令都是在操作什么样的对象。
YGingko
2018/09/30
3670
深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符
深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符
  本文的内容其实可以成为汇编语言的基础,因为汇编语言大部分时候是在操作一些我们平时开发看不到的东西,因此本文的目的就是搞清楚,汇编语言都是在操作些什么东西。或者更准确的说,各种汇编指令都是在操作什么样的对象。
YGingko
2018/09/30
5650
深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符
统计文本中单字母、双字母、三字母的频率
(1)将文本中单词提取出来(遍历输入的文本,判断当前遍历到的元素是否为字母,若为字母则继续遍历,若不为字母就以此为断点分割出单词)。
算法与编程之美
2021/10/22
1.4K0
汇编知识扫盲之16位汇编跟32位汇编的保护模式以及汇编代码编写
  逻辑地址: 这个是邮编一起生成的.逻辑地址一般都是 段加段内偏移组成的.每个进程独享.
IBinary
2019/05/25
1.9K0
逆向工程——汇编基础[一]
汇编语言是一种最接近计算机核心的编码语言。不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。 汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。
HACK学习
2019/08/05
1.5K0
64位平台下,指针自身的大小为什么是8字节?
因为后续内存管理的内容会涉及一些数据结构,这些数据结构使用到了指针,同时存储指针的值是需要内存空间的,所以我们需要了解指针的大小,便于我们理解一些设计的意图;其次,这也是困扰我的一个问题,因为有看见64位平台下指针底层定义的类型为uint64。
用户1093396
2021/02/05
7940
64位平台下,指针自身的大小为什么是8字节?
比特、字节、字
计算机里的信息是以什么样的形式存在计算机里的呢?是不是说计算机里有一张纸,然后可以把信息写上去呢? 我想大家首先想到的硬盘……和内存。 这就是比特、字节和字的关系。
mwangblog
2018/07/04
3160
汇编知识扫盲之常见汇编指令
    MOV  传送字或字节.     MOVSX 先符号扩展,再传送.     MOVZX 先零扩展,再传送.     PUSH  把字压入堆栈.     POP  把字弹出堆栈.     PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.     POPA  把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.     PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.     POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
IBinary
2019/05/25
1.7K0

相似问题

字节、字和双字数表示

22

指向双字节的指针--即4位字节--如何指向双倍,即8位字节?

13

将双字节转换为Pascal 6字节(48位)真实格式

13

32位和64位操作系统中的双字节大小

31

检测32位双字+双字进位/ C++

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档