. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  对offset的一点疑问,请大家指点下:-)  [待解决] 回复[ 2次 ]   点击[ 409次 ]  
hacker
[帖 主]   [ 发表时间:2009-02-20 14:48 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2009-01-25 01:18
先看下面的代码

assume cs:code
data segment
a:        
        db 16 dup(0)
data ends

code segment
        db 16 dup(0)
start:        mov ax,start          ;下面一行有 offset !!!
        mov ax,offset start
s:        mov ax,s
        mov ax,a
        mov ax,4c00h
        int 21h 
code ends
end start

我的机器上Debug反汇编,代码如下

0D08:0010 B81000        MOV     AX,0010
0D08:0013 B81000        MOV     AX,0010          ;有无offset编译后机器码一样
0D08:0016 B81600        MOV     AX,0016
0D08:0019 B80000        MOV     AX,0000
0D08:001C B8004C        MOV     AX,4C00
0D08:001F CD21          INT     21

很显然  "标号:" 代表了标号相对于该段首的偏移地址
而offset也是取标号的偏移地址
那么这2者到底还有什么区别呢?
hacker
[第1楼]   [ 回复时间:2009-02-21 11:13 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2009-01-25 01:18
请大家发表下意见吧 -_-!
即使这个问题很幼稚......
多谢了
willflyz
[第2楼]   [ 回复时间:2009-02-25 10:31 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2009-02-14 14:25
两个是一样的,都是ds:XX的偏移地址,不过offset更多的是用来取变量的偏移地址.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved