汇编语言指令的问题,求教懂的高手

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:01:16
小弟不才~刚学汇编语言,有些题目请懂的高手指教一二~谢谢~
题目是: 已知:VAR DW 1,2,$ +2,5,6
若汇编时VAR分配的偏移地址是0010H,则汇编后0014H单元的内容是。
答案是: 16H
不过,我就是看不懂是怎么推出来的。
求教各位懂汇编语言的朋友解释一下了,小弟再此谢过~~~

兄弟,我来告诉你.
定义为字单元,故高地址内容用00H补充.
从0010H单元开始,0011H,0012H,0013H,0014H单元的内容依次为01H,00H,02H,00H,16H.
这是因为$表示当前地址,因此:$+2=14H+02H=16H.故答案:16H

dw定义后面的每个数占2个字节,$代表的是当前地址,分配如下,
0010 0100h
0012 0200h
0014 1600h 当前地址加2
0016 0500h
0018 0600h
因为intel的cpu是小尾方式,所以数是反着放的。

不说了,答案都是一样的,你要不懂就要看了下内存中的存取数据的方式了,
一就是这种方式,另一种是高位放低地址,IMB好像就是这样的吧。
刚学时会很不习惯,特别是入栈的参数和变量寻址,如用上递归调用的话就更麻烦了。

$表示当前的偏移地址,
那条指令对应的偏移地址和单元内容如下
0010 01
0011 00
0012 02
0013 00
0014 16
0015 00
0016 05
0017 00
0018 06
0019 00
在你所说的那指令中$为 0014,它加2之后自然就是0016 了...

上面第二位仁兄的解释就是对的了