【发布时间】:2021-01-17 00:18:00
【问题描述】:
我在 Emu8086 上有这个代码:
Mov Bx,0000h
Mov Cx,0ah
Mov Si,0200h
Fillup:
Mov Ax,Array[bx]
Mov Ds:[Si],Ax
Inc Bx
inc si
loop FillUp
Array dw 28h,43h,0a4h,4ch,81h,21h,0ceh,0fh,2dh,87h
当模拟发生这种情况时:
内存表如下所示:
| Address | Value |
|---|---|
| 0200 | 28 |
| 02001 | 00 |
| 02002 | 43 |
| 02003 | 00 |
| 02004 | a4 |
每两步输入一个数字,不知道为什么会这样。
我尝试了很多循环的方法,但我找不到解决方案。
最后一个问题
如何在特定内存地址初始化一个包含 n 个元素的数组?
例如,我怎样才能使我的整个数组包含来自地址 0200h 的 10 个元素?无需从数组移动到内存地址。
【问题讨论】:
-
它应该做什么?请注意,您的
Array是一个单词数组(因为dw),因此Array本身包含字节28h, 00h, 43h, 00h, a4h, 00h等。这是您想要的吗?请记住,x86 是 little-endian,因此dw 28h是两个字节28h,00h的顺序。 -
这是真的,显然,更简单的不可能很多很多很多谢谢:D
-
最后一个问题如何在特定的内存地址初始化一个包含 n 个元素的数组 例如,我怎样才能使我的整个 10 个元素的数组从地址 0200h 开始。无需从数组移动到内存地址。我希望我能解释一下自己,谢谢