首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

急小疑点,求解答

2012-03-29 
急。。小问题,求解答汇编里要求吧首地址为BLOCK的字数组第6个字送出,MOV BX,OFFSET [BLOCK] [OAH]这样写是什

急。。小问题,求解答
汇编里要求吧首地址为BLOCK的字数组第6个字送出,MOV BX,OFFSET [BLOCK] [OAH]这样写是什么意思?有何用意?本人是初学者,求助。。

[解决办法]
把BLOCK变量的地址加上10,就是第六个字的偏移地址送BX寄存器。
[解决办法]
MOV BX,OFFSET [BLOCK] [OAH]
这里的OFFSET是表示BLOCK的偏移地址,OFFSET [BLOCK] [OAH]表示BLOCK的偏移地址加上0ah,
即BLOCK的偏移地址后面的第12个内存地址,
MOV BX,OFFSET [BLOCK] [OAH]
就是第六个字的偏移地址中的内容送到BX寄存器。
[解决办法]

Assembly code
dw 0000 0001 0002 0003 0004 0005 0006 0007内存如下:0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00mov bx, [block][0ah] == mov bx, [block + 0ah]
[解决办法]
不得不说,MASM在地址表达上实在垃圾,不如NASM。
[解决办法]
[Quote=引用:]

引用:
Assembly code


dw 0000 0001 0002 0003 0004 0005 0006 0007
内存如下:
0 1 2 3 4 5 6 7 8 9 A B C D E F
00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00
mov……
[/Quote]
不一样……方括号的优先级高于offset
offset是获得偏移比如:
[code=Assembly]
block dw 0000 0001 0002 0003 0004 0005 0006 0007
内存如下:
0 1 2 3 4 5 6 7 8 9 A B C D E F
00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00[/code]
mov ax, offset [block][2] ; ax等于2,应为获得是偏移
mov ax, [block][2] ; ax等于0001,即0002偏移处的字数据
[解决办法]
offset是masm的伪指令,意思是将有效地址装入目标寄存器中。

热点排行