- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于某种原因,当我调试时它停在 mov al,data1[si]
并给了我一个异常
Exception thrown at 0x00D53668 in Week 5.exe: 0xC0000005: Access violation reading location 0x01AA6000.
请问原因是什么?
INCLUDE Irvine32.inc
.data
data1 byte "MILK",0
data2 byte 4 dup('*'),0
.code
main proc
mov CX,4
mov si,0
l1:
mov al,data1[si] <<EXCEPTION THROWN AT THIS LINE>>
mov data2[si],al
inc si ; before go in the loop l1, cx will auto deduct by 1, then cx==0?
loop l1
mov EDX, offset data2
call WriteString
exit
main endp
end main
最佳答案
您已标记您的问题x86和 irvine32这表明您正在使用 32 位指令,但正在尝试使用 16 位索引寄存器(=SI
)
mov al,data1[si]
这(几乎)肯定会失败。使用(并之前设置)像 ESI
这样的 32 位寄存器来代替:
mov al, byte ptr data1[esi]
如果您正在编写 32 位代码,则通常应该在正常程序流程中使用 32 位寄存器。而 16 位仅在罕见的、经过深思熟虑的场合使用。
关于assembly - 在 Irvine32 中使用像 foo[si] 这样的 16 位地址(在 32 位模式下)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70149479/
以下是在 Kip Irvine 的《汇编语言 x86》一书中找到的链表汇编程序。在 main 中,循环遍历列表并显示所有节点值。该程序没有为循环使用固定计数器,而是检查尾节点中的空指针并在找到时停止循
以下程序的要点是用每种背景色和前景色的组合打印出字母“c”。 在我使用的库中,颜色定义为 0-15 并使用以下代码: mov eax,FOREGROUND + (BACKGROUND * 16) ca
在句子而不是代码中,我只需要一个解释。大写X转小写x的命令怎么写 最佳答案 如果你看一下ASCII table ,你会看到大写字母从 65 到 90 开始,小写字母从 97 到 122 开始。数字之间
Kip Irvine 的书有多相关 Assembly Language for x86 Processors是针对Linux操作系统?换句话说,这是一本关于 x86 的书,与在 Linux 上学习 x
我是一名优秀的程序员,十分优秀!