在集会方面,我是一个绝对的主人.我试着弄清楚以下内容的输出:
Jan dd 255,256
Feb dw 16, 17, 18, 19
Mar db 8, 9, 10, 11
Sub edi, Mar - Feb
mov ebx, Jan[edi]
add bl, Mar
Run Code Online (Sandbox Code Playgroud)
因此,Sub edi, Mar - Feb将减去第一要素Mar和Feb阵列赋予的价值-8在edi...那么是什么将被移动到Jan[edi]?什么将被添加Mar?
你能解释一下这个练习的答案吗?请原谅我缺乏基本的装配知识.
Sub edi, Mar - Feb将从Mar和Feb数组中减去第一个元素
它不能那样做.汇编程序不允许在汇编时计算它(内存中的东西是可变的,因此结果会变化),并且没有可以"双减"的指令.它实际上做的是
Mar(地址,不是一堆数字,只是它们开始的地方)和地址之间的差异Feb.中间有4个单词,总共大小为8,因此汇编程序将为其发出机器代码sub edi, 8.edi.是什么在edi关系吗?谁知道呢.但现在它减少了8个.mov ebx, Jan[edi]顺便提一下mov ebx, [edi + Jan],所以希望edi是明智的,0或4会最有意义.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |