汇编新手,求救!

来源:百度知道 编辑:UC知道 时间:2024/06/10 02:06:04
3.6 设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。
答:(1)
MOV AX, 1B00H
MOV DS,AX
MOV BX, 2000H
MOV DX,[BX]
MOV AX,[BX]+2
MOV DS,AX
MOV AX,DS:DX
答:(2)
MOV BX,[2000H]
MOV AX, [2000H+2]
MOV ES,AX
MOV AX,ES:[BX]
MOV BX,2000H
LES BX,[BX]
MOV AX,ES:[BX]
第一个答案的“MOV AX,[BX]+2”为什么+2呢?第2个答案看不懂!能帮我翻译一下这2个答案么?

第一个答案的[bx]+2和[bx+2]是同一个意思,只是表示不同而已.因为一个字占2个字节,所以要想得到下一个数据,地址就得加2.
第二个答案:
MOV BX,[2000H] 把2000h这个地址的一个字放入bx中(未标段寄存器的默认以ds为段)
MOV AX, [2000H+2] 把2002h这个地址的一个字放入ax中
MOV ES,AX 把ax内容放入es(段寄存器中的数据必须由通用寄存器载入)
MOV AX,ES:[BX] 以es为段bx为偏移量地址的一个字放入ax
MOV BX,2000H 把2000h放入bx
LES BX,[BX] 把bx所指向地址的一个字放入bx
MOV AX,ES:[BX] 以es为段bx为偏移量地址的一个字放入ax

第一个是 两个指针 都是16位的.内容应该是从高地址到低地址.占四个字节.所以先将2000H放入DX 然后将 下一个字节的内容 也就是+2后的内容 放入AX

第二个 和第一个寻址方式不同而已

建议你装个“未来汇编”之类的软件,上机实践一下,自己可以查看内存空间,对学习帮助很大。