首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于PTR与TYPEDEF伪指令的一个问题 [已结贴,结贴人:ksharp2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ksharp2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-03-19 13:24:39 楼主
    PBYTE TYPEDEF PTR BYTE
    这里定义的PBYTE是什么类型啊,是也是一个BYTE类型么
    .data
    arrayB BYTE 10h,11h,12h,13h
    ptr1 PBYTE arrayB
    mov  esi,ptr1
    mov  al,[esi]

    这里的PTR1究竟是多大的类型啊,如果保存地址的话,实模式下地址也该有16位,如果PTR1是BYTE类型的话应该装不下吧
    还有就是如果执行INC [esi] ,汇编器知道取内存操作数多少位么
    谢谢
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mydo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 20

      13

    发表于:2008-03-19 16:02:311楼 得分:5
    //这里定义的PBYTE是什么类型啊,是也是一个BYTE类型么
    他不是BYTE类型,和c类似,可以理解为他是指向BYTE的指针,在如今的x86下一般来说
    他的大小为 4 字节。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jennyvenus
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

      5

      5

    发表于:2008-03-19 16:06:002楼 得分:5
    就是C语言中的unsigned char *,使用的时候将取出一个字节送到目的寄存器中。
    arrayB中定义了 几个BYTE的数据
    arrayB本身就是地址,所以ptr1 PBYTE arrayB就定义了一个指针 unsigned char *ptr1 = arrayB;

    mov esi, ptr1就是esi指向arrayB
    mov al, [ esi ]就是将arrayB的第一个元素给了al

    PTR1应该是4个字节吧,也许是两个,32位的程序俺比较小白。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • BAYNPU
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-19 17:50:183楼 得分:5
    对没错,PTR1是4个字节

    0000 10 11 12 13 arrayB BYTE 10h,11h,12h,13h
    0004 = this PBYTE arrayB ptr1 equ this PBYTE arrayB 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 5

      2

      13

    发表于:2008-03-19 19:42:284楼 得分:5
    你的代码写得有问题,无法看出是32位还是16位程序。
    如果是32位程序,PBYTE这样定义相当于DWORD。
    INC [esi]如果前面出现了assume esi:PTR DWORD之类的伪指令,则按照其说明来汇编,如果没有assume,则汇编时报错。最好写做inc DWORD PTR [esi]这种形式。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved