字节值是适合8位字节的无符号或有符号整数值1。 一个字节(或字或双字)的值可以用许多不同的方式表示,用于输入和输出,或在源代码中。 例如,一个十进制数字的ASCII字符串(如“0”到“255”表示无符号,或-128到+127表示2的补码,如果在解析输入时支持前导负号的话)。您不必进行范围检查,只需将结果截断为一个字节即可。 或者十六进制数字串,甚至是以2为底的数字串('0'和'1' ASCII字符),这两种字符都在How to convert a binary integer number to a hex string?中讨论 或者来自ReadFile/WriteFile Windows系统调用的原始二进制字节,或者加载/存储到内存中的变量。 或者作为ASCII字符,因为ASCII代码需要7位,我们只需将它们填充为8位并将其存储在字节中。在源代码中,这看起来像mov al, 'z',它完全等效于mov al, 122和mov al, 7Ah。 作业的措辞暗示他们需要某种形式的文本输入和输出,可能是以10为基数(十进制)的ASCII数字。不过,你也可以选十六进制。它们希望您将输入字符串转换为1字节整数,然后再将其格式化。 就像在 * DOS assembly read two succeeding characters, and convert to number * 和类似的问题-答案有十进制字符串整数为2位数的输入字符串。关于输出,请参阅Displaying numbers with DOS(其中包括16位模式下32位整数的更复杂的代码。)另外,在汇编级编程中,如果没有c库中的printf,如何打印整数?(itoa,整数到十进制ASCII字符串)的算法基础。
2条答案
按热度按时间niwlg2el1#
字节值是适合8位字节的无符号或有符号整数值1。
一个字节(或字或双字)的值可以用许多不同的方式表示,用于输入和输出,或在源代码中。
例如,一个十进制数字的ASCII字符串(如“0”到“255”表示无符号,或-128到+127表示2的补码,如果在解析输入时支持前导负号的话)。您不必进行范围检查,只需将结果截断为一个字节即可。
或者十六进制数字串,甚至是以2为底的数字串(
'0'
和'1'
ASCII字符),这两种字符都在How to convert a binary integer number to a hex string?中讨论或者来自
ReadFile
/WriteFile
Windows系统调用的原始二进制字节,或者加载/存储到内存中的变量。或者作为ASCII字符,因为ASCII代码需要7位,我们只需将它们填充为8位并将其存储在字节中。在源代码中,这看起来像
mov al, 'z'
,它完全等效于mov al, 122
和mov al, 7Ah
。作业的措辞暗示他们需要某种形式的文本输入和输出,可能是以10为基数(十进制)的ASCII数字。不过,你也可以选十六进制。它们希望您将输入字符串转换为1字节整数,然后再将其格式化。
就像在 * DOS assembly read two succeeding characters, and convert to number * 和类似的问题-答案有十进制字符串整数为2位数的输入字符串。关于输出,请参阅Displaying numbers with DOS(其中包括16位模式下32位整数的更复杂的代码。)另外,在汇编级编程中,如果没有c库中的printf,如何打印整数?(itoa,整数到十进制ASCII字符串)的算法基础。
**脚注1:**上下文是x86汇编语言,所以我们可以100%确定假设8位字节是可以的。一些早期的x86之前的计算机有其他的字节大小,比如9位和18位或36位的字。
xlpyo6sf2#
在汇编中有一个字节值,一个字,一个双字和一个双四字,它是一个8位/2个半字节的集合,一个字节表示内存或寄存器中存在的一个小字节格式的字节,您可以在汇编x8086中使用'byte [memory/register]'访问,同样用于访问一个字使用'word'。
mov si,0 mov ax,0xFF0F mov [ds:si],ax mov al,byte [ds:si]
这将访问存在于[ds:si+0]上的'byte',因为它是以'little endian'格式的。