首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
其他开发语言
汇编语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
关于PTR与TYPEDEF伪指令的一个问题
[已结贴,结贴人:ksharp2008]
加为好友
发送私信
在线聊天
ksharp2008
等级:
可用分等级:
贫农
总技术专家分:
60
总技术专家分排名:
114722
揭帖率:
56.25%
发表于:
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
回复次数:
4
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mydo
侯佩 | hopy blog.csdn.net/mydo
等级:
可用分等级:
小地主
总技术专家分:
80992
总技术专家分排名:
74
20
13
发表于:
2008-03-19 16:02:31
1
楼 得分:
5
//这里定义的PBYTE是什么类型啊,是也是一个BYTE类型么
他不是BYTE类型,和c类似,可以理解为他是指向BYTE的指针,在如今的x86下一般来说
他的大小为 4 字节。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jennyvenus
Snooper软硬件及配件
等级:
可用分等级:
富农
总技术专家分:
122953
总技术专家分排名:
33
3
5
5
发表于:
2008-03-19 16:06:00
2
楼 得分:
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
等级:
可用分等级:
掌柜
总技术专家分:
8409
总技术专家分排名:
2377
发表于:
2008-03-19 17:50:18
3
楼 得分:
5
对没错,PTR1是4个字节
0000 10 11 12 13 arrayB BYTE 10h,11h,12h,13h
0004 = this PBYTE arrayB ptr1 equ this PBYTE arrayB
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cnzdgs
回贴亦是善举
等级:
可用分等级:
乞丐
总技术专家分:
105613
总技术专家分排名:
45
5
2
13
发表于:
2008-03-19 19:42:28
4
楼 得分:
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
abc推荐给好友