关于偏移地址的问题

注:此文章是我回答CSDN论坛的一个问题整理后的结果。

如下程序(可正常编译、运行):
.MODEL SMALL
.DATA
     BUF DB '0123456789'
.CODE
  MAIN:
    MOV AX,@DATA
    MOV DS,AX

    LEA DX,BUF       ;问题在这里                                                       

    MOV AH,4CH
    INT 21H
  END MAIN

当运用debug查看结果时,其中的 LEA DX,BUF 被转换为 LEA DX,[000E],为什么是 [000E]呢?
当把 LEA DX,BUF 改为 MOV DX,OFFSET BUF 时,debug程序中的相应语句变成了 MOV DX,000C ,
而当同时写上 LEA DX,BUF 和 MOV DX,OFFSET BUF 时,debug中的语句变成了 LEA DX,[0000] 和 MOV DX,0000 。

dataare segment
     BUF DB '01234567891'
dataare ends

code segment

assume cs:code,ds:dataare

MAIN PROC FAR
start:
    MOV AX,dataare
    MOV DS,AX

    LEA DX,BUF       ;问题在这里                                                       

    MOV AH,4CH
    INT 21H
MAIN

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值