此外,不知道关于汇编方面有什么经典书目 请推荐!!
50相送…………………………………………
36 个解决方案
#1
怎么都在谈这本书?。。。
最多只能看一个星期的。。。超过了就是对自己的不负责任。。。
也就是说是 14 个学时
最多只能看一个星期的。。。超过了就是对自己的不负责任。。。
也就是说是 14 个学时
#2
不会这么快吧?就算基础很好,估计2个星期
#3
winsdk基础好,会点汇编的话,那书翻一遍就可以
#4
不错,如果原来学过C SDK 很容易上手
#5
唉
实际上只要 10 个学时就 OK 了。。。还是一边听歌一边看
实际上只要 10 个学时就 OK 了。。。还是一边听歌一边看
#6
我叫大家谈书评,大家怎么都在谈学习计划?
写书评……………………………………………………………………
写书评……………………………………………………………………
#7
只看了前四章,觉得太贵。
#8
课外读物而已。。。对于初学者有较大用处。。。
这不是书评吗?!
这不是书评吗?!
#9
晕
我花了70块钱买来的
本来想这个学期就买这一本书的
我花了70块钱买来的
本来想这个学期就买这一本书的
#10
Win32API 的这位老兄,你好像学东西游刃有余!
你是学生还是程序员?10个学时就可以搞定,你 太牛了吧!你真那么牛吗?
能不能用汇编搞个demo出来!!
你是学生还是程序员?10个学时就可以搞定,你 太牛了吧!你真那么牛吗?
能不能用汇编搞个demo出来!!
#11
还是很适合初学者的。
#12
刚开始学汇编+熟悉api
除了汇编方面的知识,window机制和api讲的不是很深,那些内容和相关的讲述一样(别的语言),不过,我觉得仍然是一本好书~~我喜欢~:)
除了汇编方面的知识,window机制和api讲的不是很深,那些内容和相关的讲述一样(别的语言),不过,我觉得仍然是一本好书~~我喜欢~:)
#13
不过,完全能看懂需要
一点的汇编知识+熟悉api+熟悉windows机制
一点的汇编知识+熟悉api+熟悉windows机制
#14
请问哪有下载,,你们帮帮我
#15
呵呵,,,我只有C/C++ sdk基础,,汇编刚学,,,,所以,,,,,,
不过还是觉得那书还可以,,用汇编来实现C SDK,,,,
刚学汇编,望大家多多关照
不过还是觉得那书还可以,,用汇编来实现C SDK,,,,
刚学汇编,望大家多多关照
#16
是本好书,看书的方法不同收获的不同,版主10个学时,我看100个学时,收获肯定不一样!!!!
骑骥一跃不能十步,驽马十驾功在不舍!!!!!!!!!!!!!
骑骥一跃不能十步,驽马十驾功在不舍!!!!!!!!!!!!!
#17
我up !!!!!!!!!
#18
首先什么,我对罗云彬是比较敬佩的,但仍然觉得这本书不太适合初学者。
首先,初学者本来对Windows编程就觉得很迷茫,因为讲解SDK编程的书较少(最起码比什么VC++速成之类的少),而且SDK写起来就很复杂,再加上汇编,刚开始学编程的人就晕头转向了,更不知道从何处下手了。
我是个汇编爱好者,但我觉得没有什么必要什么都用汇编。
如果你想学Windows编程,就先看看《programming windows》,无论是书还是电子版的,先看个大概明白Windows编程是怎么一回事,明白怎么是写程序。
如果你要学汇编,最好先从Dos学,不过也可以从保护模式下开始,就甘于寂寞,不管截面如何。
所以我觉得这本书不适合初学者。
如果有其他的意见,请指正。
首先,初学者本来对Windows编程就觉得很迷茫,因为讲解SDK编程的书较少(最起码比什么VC++速成之类的少),而且SDK写起来就很复杂,再加上汇编,刚开始学编程的人就晕头转向了,更不知道从何处下手了。
我是个汇编爱好者,但我觉得没有什么必要什么都用汇编。
如果你想学Windows编程,就先看看《programming windows》,无论是书还是电子版的,先看个大概明白Windows编程是怎么一回事,明白怎么是写程序。
如果你要学汇编,最好先从Dos学,不过也可以从保护模式下开始,就甘于寂寞,不管截面如何。
所以我觉得这本书不适合初学者。
如果有其他的意见,请指正。
#19
#define T_mp3_framesize ((unsigned short *) (vcx_romdatastart + 0xd634))
#define T_sample_rate ((unsigned short *) (vcx_romdatastart + 0xd6e8))
#define T_lsfbtable ((unsigned short *) (vcx_romdatastart + 0xd6f4))
#define T_ssfbtable ((unsigned short *) (vcx_romdatastart + 0xd700))
#define T_slen ((unsigned short *) (vcx_romdatastart + 0xd708))
#define T_longIdx ((unsigned short *) (vcx_romdatastart + 0xd748))
#define T_longDiff ((unsigned short *) (vcx_romdatastart + 0xd85c))
#define T_shortIdx ((unsigned short *) (vcx_romdatastart + 0xd964))
#define T_shortDiff ((unsigned short *) (vcx_romdatastart + 0xda0c))
#define T_mapbuf0 ((unsigned short *) (vcx_romdatastart + 0xdaa8))
#define T_mapbuf1 ((unsigned short *) (vcx_romdatastart + 0xe1c8))
#define T_mapbuf2 ((unsigned short *) (vcx_romdatastart + 0xe918))
#define T_islen ((unsigned short *) (vcx_romdatastart + 0xeb28))
#define T_nslen ((unsigned short *) (vcx_romdatastart + 0xed28))
#define T_stab ((unsigned char *) (vcx_romdatastart + 0xf128))
#define T_pow1 ((unsigned int *) (vcx_romdatastart + 0xf170))
#define T_pow2 ((unsigned int *) (vcx_romdatastart + 0xf1f0))
#define T_pretab1 ((unsigned short *) (vcx_romdatastart + 0xf270))
#define T_pretab2 ((unsigned short *) (vcx_romdatastart + 0xf29c))
这个是一种软体的一点设置而已,代码不能给出
#define T_sample_rate ((unsigned short *) (vcx_romdatastart + 0xd6e8))
#define T_lsfbtable ((unsigned short *) (vcx_romdatastart + 0xd6f4))
#define T_ssfbtable ((unsigned short *) (vcx_romdatastart + 0xd700))
#define T_slen ((unsigned short *) (vcx_romdatastart + 0xd708))
#define T_longIdx ((unsigned short *) (vcx_romdatastart + 0xd748))
#define T_longDiff ((unsigned short *) (vcx_romdatastart + 0xd85c))
#define T_shortIdx ((unsigned short *) (vcx_romdatastart + 0xd964))
#define T_shortDiff ((unsigned short *) (vcx_romdatastart + 0xda0c))
#define T_mapbuf0 ((unsigned short *) (vcx_romdatastart + 0xdaa8))
#define T_mapbuf1 ((unsigned short *) (vcx_romdatastart + 0xe1c8))
#define T_mapbuf2 ((unsigned short *) (vcx_romdatastart + 0xe918))
#define T_islen ((unsigned short *) (vcx_romdatastart + 0xeb28))
#define T_nslen ((unsigned short *) (vcx_romdatastart + 0xed28))
#define T_stab ((unsigned char *) (vcx_romdatastart + 0xf128))
#define T_pow1 ((unsigned int *) (vcx_romdatastart + 0xf170))
#define T_pow2 ((unsigned int *) (vcx_romdatastart + 0xf1f0))
#define T_pretab1 ((unsigned short *) (vcx_romdatastart + 0xf270))
#define T_pretab2 ((unsigned short *) (vcx_romdatastart + 0xf29c))
这个是一种软体的一点设置而已,代码不能给出
#20
个人觉得没必要读这本书(虽然我看过了)。
主要都是些sdk的东西,看过《windows程序设计》就基本清楚了。
当然,我对win32汇编的应用领域也不太清楚。感觉如果是编应用程序,sdk,mfc都要比它好些。win32汇编太繁杂了(可能是我先看sdk后读win32汇编所产生的感觉。)
W32API(李诚)说这本书可以很快搞懂,我比较赞同。
你学的普通的基础汇编还是很有用的,:)
主要都是些sdk的东西,看过《windows程序设计》就基本清楚了。
当然,我对win32汇编的应用领域也不太清楚。感觉如果是编应用程序,sdk,mfc都要比它好些。win32汇编太繁杂了(可能是我先看sdk后读win32汇编所产生的感觉。)
W32API(李诚)说这本书可以很快搞懂,我比较赞同。
你学的普通的基础汇编还是很有用的,:)
#21
up]
#22
要知道只有深入了解pe的结构,汇编的知识才可能在病毒方面有作为。病毒是什么啊?那里面思想足够提升你的实力100000....倍啊。别瞧不起人,牛的,你出一本!!
#23
#include<stdlib.h>
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#24
#include<stdlib.h>
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#25
一本好书!!假如把某某大学教授所写的书比喻为空中楼阁的话,老罗这本算是实实在在的摩天大厦!
不要认为我跟罗云彬有什么关系,他在北京而我在昆明,我是因为拜读了他的作品后才对他束然起敬的。
其中讲解多为实践经验升华,而不是教条式的理论讲解。
文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字,比起某某教授错误連篇的‘大作’
实在要强多了。堪称国内少见的优秀之作!
从其内容,同时涉及到Windows编程、API使用、32位汇编等,很适合希望进阶的初学者。
不要认为我跟罗云彬有什么关系,他在北京而我在昆明,我是因为拜读了他的作品后才对他束然起敬的。
其中讲解多为实践经验升华,而不是教条式的理论讲解。
文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字,比起某某教授错误連篇的‘大作’
实在要强多了。堪称国内少见的优秀之作!
从其内容,同时涉及到Windows编程、API使用、32位汇编等,很适合希望进阶的初学者。
#26
却是如此。
毕竟 Windows编程、API使用、32位汇编 这些东西,每样都得用 N 本书才能讲清楚。
当然还有讲不清楚的时候。。。
毕竟 Windows编程、API使用、32位汇编 这些东西,每样都得用 N 本书才能讲清楚。
当然还有讲不清楚的时候。。。
#27
学习,以后买一本看看
#28
谢谢各位的书评,小弟在此俯首言谢了!
#29
经人推荐,我看了一下这本书(罗),不怎么仔细,但是感觉和iczelion的win32asm教程差有不少地方太像了(是因为就这么点东西,所以谁写都一样?),但是比不上iczelion的,不知各位高人意下如何~
p.s.iczelion和罗的教程网上到处都是,为啥要花银子呢?
p.s.iczelion和罗的教程网上到处都是,为啥要花银子呢?
#30
我刚学完dos汇编,准备看看这书的升华一下的.听大家这么一说,感觉学这也没有什么用.
我不知道我是不是要改一下学习方向,学一学sdk,api什么的.好迷惘呀,指教指教我!!!!!!!!!!!!!!!!!!!!!!!
我不知道我是不是要改一下学习方向,学一学sdk,api什么的.好迷惘呀,指教指教我!!!!!!!!!!!!!!!!!!!!!!!
#31
如果你想在win环境下编程,对api要熟悉,看《windows高级编程》等经典书籍较好。其实我觉得罗云彬这本书很不错的,对我学win32asm有很大的帮助。
#32
哇,非常感谢夜雨.都有哪些经典书?可否例举一下.
#33
一个星期,两个星期估计各位只能是看个热闹,真要用到,我不信你就行,估计连有没有都不知道。
#34
up
#35
to byc6352(雪原)
"文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字....",我发现了。
"文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字....",我发现了。
#36
如果你英文不错的话,极力推荐你看"art of assemble"这本书非常棒.你可以在网上下载的
#1
怎么都在谈这本书?。。。
最多只能看一个星期的。。。超过了就是对自己的不负责任。。。
也就是说是 14 个学时
最多只能看一个星期的。。。超过了就是对自己的不负责任。。。
也就是说是 14 个学时
#2
不会这么快吧?就算基础很好,估计2个星期
#3
winsdk基础好,会点汇编的话,那书翻一遍就可以
#4
不错,如果原来学过C SDK 很容易上手
#5
唉
实际上只要 10 个学时就 OK 了。。。还是一边听歌一边看
实际上只要 10 个学时就 OK 了。。。还是一边听歌一边看
#6
我叫大家谈书评,大家怎么都在谈学习计划?
写书评……………………………………………………………………
写书评……………………………………………………………………
#7
只看了前四章,觉得太贵。
#8
课外读物而已。。。对于初学者有较大用处。。。
这不是书评吗?!
这不是书评吗?!
#9
晕
我花了70块钱买来的
本来想这个学期就买这一本书的
我花了70块钱买来的
本来想这个学期就买这一本书的
#10
Win32API 的这位老兄,你好像学东西游刃有余!
你是学生还是程序员?10个学时就可以搞定,你 太牛了吧!你真那么牛吗?
能不能用汇编搞个demo出来!!
你是学生还是程序员?10个学时就可以搞定,你 太牛了吧!你真那么牛吗?
能不能用汇编搞个demo出来!!
#11
还是很适合初学者的。
#12
刚开始学汇编+熟悉api
除了汇编方面的知识,window机制和api讲的不是很深,那些内容和相关的讲述一样(别的语言),不过,我觉得仍然是一本好书~~我喜欢~:)
除了汇编方面的知识,window机制和api讲的不是很深,那些内容和相关的讲述一样(别的语言),不过,我觉得仍然是一本好书~~我喜欢~:)
#13
不过,完全能看懂需要
一点的汇编知识+熟悉api+熟悉windows机制
一点的汇编知识+熟悉api+熟悉windows机制
#14
请问哪有下载,,你们帮帮我
#15
呵呵,,,我只有C/C++ sdk基础,,汇编刚学,,,,所以,,,,,,
不过还是觉得那书还可以,,用汇编来实现C SDK,,,,
刚学汇编,望大家多多关照
不过还是觉得那书还可以,,用汇编来实现C SDK,,,,
刚学汇编,望大家多多关照
#16
是本好书,看书的方法不同收获的不同,版主10个学时,我看100个学时,收获肯定不一样!!!!
骑骥一跃不能十步,驽马十驾功在不舍!!!!!!!!!!!!!
骑骥一跃不能十步,驽马十驾功在不舍!!!!!!!!!!!!!
#17
我up !!!!!!!!!
#18
首先什么,我对罗云彬是比较敬佩的,但仍然觉得这本书不太适合初学者。
首先,初学者本来对Windows编程就觉得很迷茫,因为讲解SDK编程的书较少(最起码比什么VC++速成之类的少),而且SDK写起来就很复杂,再加上汇编,刚开始学编程的人就晕头转向了,更不知道从何处下手了。
我是个汇编爱好者,但我觉得没有什么必要什么都用汇编。
如果你想学Windows编程,就先看看《programming windows》,无论是书还是电子版的,先看个大概明白Windows编程是怎么一回事,明白怎么是写程序。
如果你要学汇编,最好先从Dos学,不过也可以从保护模式下开始,就甘于寂寞,不管截面如何。
所以我觉得这本书不适合初学者。
如果有其他的意见,请指正。
首先,初学者本来对Windows编程就觉得很迷茫,因为讲解SDK编程的书较少(最起码比什么VC++速成之类的少),而且SDK写起来就很复杂,再加上汇编,刚开始学编程的人就晕头转向了,更不知道从何处下手了。
我是个汇编爱好者,但我觉得没有什么必要什么都用汇编。
如果你想学Windows编程,就先看看《programming windows》,无论是书还是电子版的,先看个大概明白Windows编程是怎么一回事,明白怎么是写程序。
如果你要学汇编,最好先从Dos学,不过也可以从保护模式下开始,就甘于寂寞,不管截面如何。
所以我觉得这本书不适合初学者。
如果有其他的意见,请指正。
#19
#define T_mp3_framesize ((unsigned short *) (vcx_romdatastart + 0xd634))
#define T_sample_rate ((unsigned short *) (vcx_romdatastart + 0xd6e8))
#define T_lsfbtable ((unsigned short *) (vcx_romdatastart + 0xd6f4))
#define T_ssfbtable ((unsigned short *) (vcx_romdatastart + 0xd700))
#define T_slen ((unsigned short *) (vcx_romdatastart + 0xd708))
#define T_longIdx ((unsigned short *) (vcx_romdatastart + 0xd748))
#define T_longDiff ((unsigned short *) (vcx_romdatastart + 0xd85c))
#define T_shortIdx ((unsigned short *) (vcx_romdatastart + 0xd964))
#define T_shortDiff ((unsigned short *) (vcx_romdatastart + 0xda0c))
#define T_mapbuf0 ((unsigned short *) (vcx_romdatastart + 0xdaa8))
#define T_mapbuf1 ((unsigned short *) (vcx_romdatastart + 0xe1c8))
#define T_mapbuf2 ((unsigned short *) (vcx_romdatastart + 0xe918))
#define T_islen ((unsigned short *) (vcx_romdatastart + 0xeb28))
#define T_nslen ((unsigned short *) (vcx_romdatastart + 0xed28))
#define T_stab ((unsigned char *) (vcx_romdatastart + 0xf128))
#define T_pow1 ((unsigned int *) (vcx_romdatastart + 0xf170))
#define T_pow2 ((unsigned int *) (vcx_romdatastart + 0xf1f0))
#define T_pretab1 ((unsigned short *) (vcx_romdatastart + 0xf270))
#define T_pretab2 ((unsigned short *) (vcx_romdatastart + 0xf29c))
这个是一种软体的一点设置而已,代码不能给出
#define T_sample_rate ((unsigned short *) (vcx_romdatastart + 0xd6e8))
#define T_lsfbtable ((unsigned short *) (vcx_romdatastart + 0xd6f4))
#define T_ssfbtable ((unsigned short *) (vcx_romdatastart + 0xd700))
#define T_slen ((unsigned short *) (vcx_romdatastart + 0xd708))
#define T_longIdx ((unsigned short *) (vcx_romdatastart + 0xd748))
#define T_longDiff ((unsigned short *) (vcx_romdatastart + 0xd85c))
#define T_shortIdx ((unsigned short *) (vcx_romdatastart + 0xd964))
#define T_shortDiff ((unsigned short *) (vcx_romdatastart + 0xda0c))
#define T_mapbuf0 ((unsigned short *) (vcx_romdatastart + 0xdaa8))
#define T_mapbuf1 ((unsigned short *) (vcx_romdatastart + 0xe1c8))
#define T_mapbuf2 ((unsigned short *) (vcx_romdatastart + 0xe918))
#define T_islen ((unsigned short *) (vcx_romdatastart + 0xeb28))
#define T_nslen ((unsigned short *) (vcx_romdatastart + 0xed28))
#define T_stab ((unsigned char *) (vcx_romdatastart + 0xf128))
#define T_pow1 ((unsigned int *) (vcx_romdatastart + 0xf170))
#define T_pow2 ((unsigned int *) (vcx_romdatastart + 0xf1f0))
#define T_pretab1 ((unsigned short *) (vcx_romdatastart + 0xf270))
#define T_pretab2 ((unsigned short *) (vcx_romdatastart + 0xf29c))
这个是一种软体的一点设置而已,代码不能给出
#20
个人觉得没必要读这本书(虽然我看过了)。
主要都是些sdk的东西,看过《windows程序设计》就基本清楚了。
当然,我对win32汇编的应用领域也不太清楚。感觉如果是编应用程序,sdk,mfc都要比它好些。win32汇编太繁杂了(可能是我先看sdk后读win32汇编所产生的感觉。)
W32API(李诚)说这本书可以很快搞懂,我比较赞同。
你学的普通的基础汇编还是很有用的,:)
主要都是些sdk的东西,看过《windows程序设计》就基本清楚了。
当然,我对win32汇编的应用领域也不太清楚。感觉如果是编应用程序,sdk,mfc都要比它好些。win32汇编太繁杂了(可能是我先看sdk后读win32汇编所产生的感觉。)
W32API(李诚)说这本书可以很快搞懂,我比较赞同。
你学的普通的基础汇编还是很有用的,:)
#21
up]
#22
要知道只有深入了解pe的结构,汇编的知识才可能在病毒方面有作为。病毒是什么啊?那里面思想足够提升你的实力100000....倍啊。别瞧不起人,牛的,你出一本!!
#23
#include<stdlib.h>
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#24
#include<stdlib.h>
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#include"vga13h.h"
#include<dos.h>
void main()
{
int i,j;
unsigned int x,y,c;
setmode();
for(x=1;x<=32;x++)
{
setpal(x, x*2-1,0, 0 );
setpal(x+32,63,x*2-1,0);
setpal(x+64,63 ,63, x*2-1);
setpal(x+96,63,63,63);
}
while(ScanKey()!=1)
{
for(x=0;x<320;x+=2)
{
for(y=1;y<=202;y+=2)
{
c=(point(x,y)+point(x+2,y)+point(x,y+2)+point(x+2,y+2))>>2;
if(c--)
{
poke(0xa000,(y-2)*320+x,(c<<8)+c);
poke(0xa000,(y-1)*320+x,(c<<8)+c);
}
}
y-=2;
pset(x,y,random(320));
}
}
closemode();
}
#if!defined(_DOS_DEF_)
#include<dos.h>
#endif
#define BYTE unsigned char
#define WORD unsigned int
#define DWORD unsigned long
#define BOOL BYTE
#define TRUE 1
#define FALSE !TRUE
WORD FONT_SEG;
WORD FONT_OFF;
void setmode();
void waitkey();
void closemode();
void GetFontAdd();
void locate(int Line,int Col );
void pset(int x,int y,BYTE color);
void setpal (int Color,BYTE r,BYTE g,BYTE b);
BYTE ScanKey(void);
BYTE point(int x,int y);
void GetFontAdd()
{
struct REGPACK regs;
regs.r_bx=0x0300;
regs.r_ax=0x1130;
intr(0x10,®s);
FONT_SEG=regs.r_es;
FONT_OFF=regs.r_bp;
}
void waitkey()
{
_AX=0;
genintrrupt(0x16);}
void setmode()
{
_AX=0x13;
genintrrupt(0x10);
GetFontAdd();
}
void closemode()
{
_AX=0x3;
genintrrupt(0x10);}
void setpal(int Color,BYTE r,BYTE g,BYTE b)
{
outportb(0x3c8,Color);
outportb(0x3c9,r);
outportb(0x3c9,g);
outportb(0x3c9,b);
}
void locate(int Line,int Col){
_DH=Line;
_DL=Col;
_AH=2;
_BX=0;
genintrrupt(0x10);
}
BYTE ScanKey(void)
{
int strat,end;
WORD key=0;
strat=peek(0,0x41a);
end=peek(0,0x41c);
if(start==d)return(0);
else
{
key==peek(0x40,start);
start+=2;
if(start==0x3e)start=0x1e;
poke(0x40,0x1a,start);
return(key/256);
}
}
void pset(int x,int y,BYTE color)
{
pokeb(0xa000,y*320+x,color);
}
BYTE point(int x,int y)
{
return peekb(0xa000,y*320+x);
}
#25
一本好书!!假如把某某大学教授所写的书比喻为空中楼阁的话,老罗这本算是实实在在的摩天大厦!
不要认为我跟罗云彬有什么关系,他在北京而我在昆明,我是因为拜读了他的作品后才对他束然起敬的。
其中讲解多为实践经验升华,而不是教条式的理论讲解。
文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字,比起某某教授错误連篇的‘大作’
实在要强多了。堪称国内少见的优秀之作!
从其内容,同时涉及到Windows编程、API使用、32位汇编等,很适合希望进阶的初学者。
不要认为我跟罗云彬有什么关系,他在北京而我在昆明,我是因为拜读了他的作品后才对他束然起敬的。
其中讲解多为实践经验升华,而不是教条式的理论讲解。
文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字,比起某某教授错误連篇的‘大作’
实在要强多了。堪称国内少见的优秀之作!
从其内容,同时涉及到Windows编程、API使用、32位汇编等,很适合希望进阶的初学者。
#26
却是如此。
毕竟 Windows编程、API使用、32位汇编 这些东西,每样都得用 N 本书才能讲清楚。
当然还有讲不清楚的时候。。。
毕竟 Windows编程、API使用、32位汇编 这些东西,每样都得用 N 本书才能讲清楚。
当然还有讲不清楚的时候。。。
#27
学习,以后买一本看看
#28
谢谢各位的书评,小弟在此俯首言谢了!
#29
经人推荐,我看了一下这本书(罗),不怎么仔细,但是感觉和iczelion的win32asm教程差有不少地方太像了(是因为就这么点东西,所以谁写都一样?),但是比不上iczelion的,不知各位高人意下如何~
p.s.iczelion和罗的教程网上到处都是,为啥要花银子呢?
p.s.iczelion和罗的教程网上到处都是,为啥要花银子呢?
#30
我刚学完dos汇编,准备看看这书的升华一下的.听大家这么一说,感觉学这也没有什么用.
我不知道我是不是要改一下学习方向,学一学sdk,api什么的.好迷惘呀,指教指教我!!!!!!!!!!!!!!!!!!!!!!!
我不知道我是不是要改一下学习方向,学一学sdk,api什么的.好迷惘呀,指教指教我!!!!!!!!!!!!!!!!!!!!!!!
#31
如果你想在win环境下编程,对api要熟悉,看《windows高级编程》等经典书籍较好。其实我觉得罗云彬这本书很不错的,对我学win32asm有很大的帮助。
#32
哇,非常感谢夜雨.都有哪些经典书?可否例举一下.
#33
一个星期,两个星期估计各位只能是看个热闹,真要用到,我不信你就行,估计连有没有都不知道。
#34
up
#35
to byc6352(雪原)
"文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字....",我发现了。
"文笔自然流畅,通俗易懂!至今我还未在书中发现一个错别字....",我发现了。
#36
如果你英文不错的话,极力推荐你看"art of assemble"这本书非常棒.你可以在网上下载的