什么是字节值(汇编)

问题描述 投票:0回答:2

我是汇编编程新手,我的第一个作业是编写一个读取字节值并将其显示回屏幕的程序。我的问题是,我不确定字节值是什么意思。我知道字节是什么,它们是指二进制值吗? 8 位长的输入只能有 1 和 0?如果这就是他们的意思,他们会写二进制值,不是吗? (显然我试着问老师,他没有回应。)如果我没记错的话,我们正在使用MASM611。抱歉,缺乏信息,我是新手。

assembly byte bit masm
2个回答
0
投票

字节值是适合 8 位字节的无符号或有符号整数值1

字节(或字或双字)的值可以通过多种不同的方式表示用于输入和输出,或在源代码中。

例如,十进制数字的 ASCII 字符串(例如“0”到“255”表示无符号,或者 -128 到 +127 表示 2 的补码,如果您在解析输入时支持前导减号。)范围检查,您可以将结果截断为一个字节。

或者一串十六进制数字,甚至一串以 2 为基数的数字(

'0'
'1'
ASCII 字符),这两者都在 如何将二进制整数转换为十六进制字符串?

中讨论。

或来自

ReadFile
/
WriteFile
Windows 系统调用的原始二进制字节,或加载/存储到内存中的变量。

或者作为 ASCII 字符,因为 ASCII 代码需要 7 位,我们只需将它们填充到 8 位并以字节存储它们。在源代码中,这看起来像

mov al, 'z'
,它完全等同于
mov al, 122
mov al, 7Ah


作业的措辞暗示他们需要某种形式的文本输入和输出,可能是基数 10(十进制)ASCII 数字。虽然你可能会选择十六进制。他们希望您将输入字符串转换为 1 字节整数,然后再次格式化。

就像在 DOS 程序集中读取两个连续的字符,并转换为数字和类似的问题 - 对于 2 位输入字符串,答案有十进制字符串到整数。有关输出,请参阅使用 DOS 显示数字(其中包括 16 位模式下 32 位整数的更复杂的代码。)另外,如何在不使用 c 库中的 printf 的情况下在汇编级编程中打印整数? (itoa,整数到十进制 ASCII 字符串) 了解算法基础知识。


脚注 1: 上下文是 x86 汇编语言,因此我们可以 100% 确定假设 8 位字节是可以的。一些早期的 x86 之前的计算机具有其他字节大小,例如 9 位和 18 或 36 位字。


-2
投票

汇编中有一个字节值、一个字、一个双字和一个双四字,它是 8 位/2 个半字节的集合,一个字节代表内存或寄存器中存在的小端格式字节,您可以通过在汇编 x8086 中使用“字节 [内存/寄存器]”进行访问,同样访问单词时使用“单词”。

莫夫西, 0 移动斧头,0xFF0F mov [ds:si], 斧头 mov al,字节 [ds:si]

它将访问 [ds:si+0] 上存在的“字节”,因为它采用“小端”格式。

© www.soinside.com 2019 - 2024. All rights reserved.