首页
社区
课程
招聘
懂汇编的高手帮看下我这题做的对还是错, 书上没答案, 如果错了,请帮找出哪里错误,谢
发表于: 2010-4-23 02:54 3360

懂汇编的高手帮看下我这题做的对还是错, 书上没答案, 如果错了,请帮找出哪里错误,谢

2010-4-23 02:54
3360
先定义一个字符串String,其偏移量指定为10,其初值为"ABCDEF",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同;

第一种方法我用了联合,   题目没说让不让用 用二种我用了ORG偏移调整伪指令
stringData union
org $+10    取当前偏移量+10的地址开始分配  
String db 'ABCDEF'  
DATA DW 3 DUP(?)  
stringDate ends  

此题,好像还可以这样做  

org $+10
string   db 'ABCDEF'  
org $-6    因为ABCDEF是六字节 所以用当前地址减去6个字节就跟 STRING的地址是一样啦,
DATA dw 3 dup(?)

定义一个字符串String,其初值为"12345678",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元;

StringData union

string db '12345678'

data dw 4 dup(?)

stringdata ends

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 3
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不好意思啊,我也不太懂…
2010-4-23 08:38
0
雪    币: 429
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
基本上是对的,对于内存结构理解的比较到位,不过有点小瑕疵,就是字符串是应该以零来结尾的,所以应该改为这样
org $+10
string   db 'ABCDEF',0
org $-7   
DATA dw 3 dup(?)
2010-4-23 10:13
0
雪    币: 268
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GUX
4
这种还真没见过, 你们学习用的什么课本?
2010-4-23 11:30
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
三楼的,  字符串以0结尾, 书上没说啊,
用定义符DB还可定义一种特殊的数据形式——字符串。在定义字符串时,必须用成对的单引号或双引号把所要的字符括起来,括号内字符的ASCII码将依次存放在相应的字节单元内。例如:

MSG1 DB 'I am a student.'
2010-4-23 14:51
0
雪    币: 429
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
一本书总会有疏漏的,0是结束标志,这样操作系统才知道你这个字符串已经结束了,你去百度一下就知道了

顺便说一句,现在通常是32位汇编,直接写0就可以了,在以前的16位汇编上更麻烦,要以'$'来做为结束标记
2010-4-23 15:44
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
六楼说的没错。。。
2010-4-23 17:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢了,还是得多看几本才行
2010-4-23 17:37
0
游客
登录 | 注册 方可回帖
返回
//