Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MOV CX,DAT[4]索引到字数组(DW)的结果_Assembly_X86 16_Tasm - Fatal编程技术网

Assembly MOV CX,DAT[4]索引到字数组(DW)的结果

Assembly MOV CX,DAT[4]索引到字数组(DW)的结果,assembly,x86-16,tasm,Assembly,X86 16,Tasm,我有以下命令 DAT DW 128,256,64,32 MOV CX, DAT[4] 正如我所知,DAT[4]意味着我们将得到第四个索引的值,但在这种情况下,我们没有这样的索引。 您能告诉我在MOV-CX,DAT[4]之后,CX寄存器中会有什么吗 如我所知,DAT[4]意味着我们将得到第四个索引的值 在汇编语言中,我们不像在高级语言中那样使用基于整元素的数组索引。在高级语言中,DAT[4]将检索第五个数组元素(如果索引从0开始) 在汇编语言中,方括号之间的数字是从数组开始的偏移量,以字节为单位

我有以下命令

DAT DW 128,256,64,32
MOV CX, DAT[4]
正如我所知,DAT[4]意味着我们将得到第四个索引的值,但在这种情况下,我们没有这样的索引。
您能告诉我在
MOV-CX,DAT[4]
之后,
CX
寄存器中会有什么吗

如我所知,DAT[4]意味着我们将得到第四个索引的值

在汇编语言中,我们不像在高级语言中那样使用基于整元素的数组索引。在高级语言中,
DAT[4]
将检索第五个数组元素(如果索引从0开始)

在汇编语言中,方括号之间的数字是从数组开始的偏移量,以字节为单位。 你的例子是:

DAT DW 128,256,64,32
使用十六进制重写:

DAT DW 0080h, 0100h, 0040h, 0020h
在内存中显示自己,如(x86是小端数):

偏移量4处的字包含一个低字节40h和一个高字节00h。

因此
MOV-CX,DAT[4]
将加载
CX
,其中0040h为64位小数。

索引通常使用字节,但这取决于汇编程序。如果问题是这样问的,我们可以假设字节数,这样加载的
64
每个字为2字节。您可以将其放入一个程序中,并对其进行汇编,以查看得到的机器代码,甚至可以运行它并使用调试器查看寄存器值。你不需要问别人什么时候可以在真正的机器上试用它。你用的是什么汇编程序?我用的是Turbo Assemberx86是little endian。最后,我明白了。)@VaruzhanStepanyan一旦你彻底解释了这些基本问题,你就可以很好地理解汇编语言了。快乐学习。。。
80h, 00h, 00h, 01h, 40h, 00h, 20h, 00h
^                   ^
offset 0            offset 4