关于WIN32汇编大家的看法?

时间:2023-02-02 01:19:18
感觉WIN32汇编完全没有汇编的味道.还真不如C..学完8086汇编有必要看看WIN32汇编吗?

47 个解决方案

#1


还没学完8086汇编的路过 关于WIN32汇编大家的看法?

#2


额,我觉得8086汇编才没有汇编的味道。。。

我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。

我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。

汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。

#3


而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。

#4


引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...

#5


你们讨论,我看结果..看书才是王道!

#6


看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的win32汇编, 理解起来会更容易些。 如果让一个新手上来就看win32的书, 一定是一件很纠结的事~, 关于WIN32汇编大家的看法? 个人观点。

#7


举个例子,你调用int 13h中断去操作硬盘,而这个int 13h实际上就是个API,在win32方式中,你可以调用C库的fopen或windows库的OpenFileA是一样的。

假如你想开发一个真正的读写硬盘的模块时,你会发现int 13h根本就无法满足你的要求,还得靠io操作。写win32位汇编程序,实际上脑袋里写的是C语言,写出什么函数之类的只要自己愿意,都可以和C语言兼容。这样的模块可以和C编译在一起使用,所以可以服务于DLL,可以服务于C++,可以通过JNI为Java提供服务,甚至vb、asp这样的东西都可以享受你汇编的成果。而你所说的8086汇编,基本上只有学生和老师才用得到,离开课本就没什么用了,用途也基本上就是做几个四则运算,画画花刺激一下喇叭。虽然也可以在DOS下开发些实用的东西,但是你做出来的东西会有人用么?拿到windows的命令提示符模式里,对不起,windows没提供那么多希奇古怪的中断给你使。

如果说逆向,那8086就更没用了,逆向本来就是把高级语言的代码反汇编来分析,就更贴近win32汇编了(win32汇编是用C语言的脑袋写汇编代码,至少也比8086汇编更亲和一点)。

至于什么是王道,开发操作系统,bootsector和实模式有点接近,但是只要进了保护模式就不同了,而进入保护模式前的代码数量跟整个操作系统比几乎可以忽略了。大部分的代码都是要保持跟C语言兼容的。

开发应用软件,向win32汇编这种C兼容的汇编才有用,跟C兼容意味着你的工程比纯汇编的生命力更强。和C兼容的代码在紧张的时候你可以包装成C++程序,不紧张的话你就纯汇编过去也不会比平坦的纯汇编效率低多少。

我的建议就是,即便你对win32汇编古感兴趣,那也请你注意一下:兼容C语言的汇编才是王道。没有C语言的支持,汇编就是学生的玩具。

#8


反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....

#9


引用 8 楼 xianzq888 的回复:
反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....
嗯, 踏踏实实比啥都强~
关于WIN32汇编大家的看法?

#10


你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?

看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样

#11


引用 6 楼 masmaster 的回复:
看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的win32汇编, 理解起来会更容易些。 如果让一个新手上来就看win32的书, 一定是一件很纠结的事~, 个人观点。


我最开始学汇编的时候向从8086突破,可实际上我的hello world是用混合编译后的C语言写出来的。8086汇编不好调试,你们会debug当然不这样想了,可是当初我连debug都不会,我写8086汇编根本就不知道怎么去看结果的。误打误撞看到了一些文章,后来也费了一些劲才学会用nasm和mingw混合编译,从那开始才真正看到自己的汇编代码的输出结果,用printf调试。后来学会了od感觉就不一样了,然后再看到debug的说明才会用debug。可是能用od谁还用debug啊。后来也玩了玩8086的汇编,感觉也没什么不同,就是调用中断的时候有点混乱,老想用C规则去把中断封成函数。
混合编译的编译命令大概就是下面几种的组合(nasm+mingw),就是nasm的-fwin32让我费了点劲才找到,其余的熟悉编译和连接过程就没问题。ld连接的时候指定一下引入的库和入口点就没什么了。汇编的结果用printf打出来一目了然。想调试直接上od,想快速找到关注的代码直接在代码里写int 3,用od调试比debug方便可不是一点点。
nasm code1.asm -fwin32 -o code1.o
gcc code2.c -c -o code2.o
ld code1.o code2.o -o test.exe

#12


引用 10 楼 xiaopoy 的回复:
你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?

看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样


我不熟悉APIC和SSDT,但是你也没做过汇编操作APIC和SSDT的程序。我说的对么?理解APIC和SSDT不需要8086,sysenter虽然是个中断,但它是为了C函数服务的。它和int 13h也不对应。它里面恐怕也不会用int 13h去操作硬盘。如果你真的想把这些东西作为你的论据,就别一堆问号,拿出让人信服的解释吧。
你说“sysenter所以使用的 SSDT表又如何理解?”,我断言你说不出什么必须学8086的理由。

#13


引用楼主 xianzq888 的回复:
感觉WIN32汇编完全没有汇编的味道.还真不如C..


你才知道...

#14


引用 13 楼 mydo 的回复:
引用楼主 xianzq888 的回复:
感觉WIN32汇编完全没有汇编的味道.还真不如C..


你才知道...

额,斑竹,我要代表上帝把你的汇编没收了。

#15


引用 14 楼 lyramilk 的回复:
额,斑竹,我要代表上帝把你的汇编没收了。


我的汇编波涛汹涌,连绵不绝,无法没收哦 :)

#16


引用 15 楼 mydo 的回复:
我的汇编波涛汹涌,连绵不绝,无法没收哦 :)

身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?

#17


学汇编就是为了搞搞破解之类的。

#18


引用 17 楼 nola 的回复:
学汇编就是为了搞搞破解之类的。


NO,学汇编是让你真正知道什么是计算机...

#19


引用 16 楼 lyramilk 的回复:
身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?


非也非也!偶从来都没说过汇编不好,只是认为 WIN32汇编是鸡肋,
汇编非常power,但是用在错误的地方就比较杯具了。

#20


感觉16位汇编和32的那些寄存器之类的没什么区,例如32位的程序拿到64位的编译器上去编译就变成64位的了.应该取决于编译器...似乎偏题了...

#21


我就看WIN32汇编看不下去了...满篇API.汇编失去了低层还有什么意思.不过还是要看下去,它毕竟有它的独特点.

以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.

目前看法,不代表以后的看法!

#22


WINDOWS上满是封装   TYPEDEF 到处乱用..  什么  OLECHAR  其实就是CHAR   不知道前面个写错没有..

太多这种东西咯..感觉用起来头痛呀....

#23


我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。



引用 22 楼 xianzq888 的回复:
WINDOWS上满是封装   TYPEDEF 到处乱用..  什么  OLECHAR  其实就是CHAR   不知道前面个写错没有..

太多这种东西咯..感觉用起来头痛呀....

如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。

#24


引用 15 楼 mydo 的回复:
引用 14 楼 lyramilk 的回复:
额,斑竹,我要代表上帝把你的汇编没收了。


我的汇编波涛汹涌,连绵不绝,无法没收哦 :)
羡慕ing~~~~~
关于WIN32汇编大家的看法?

#25


引用 23 楼 lyramilk 的回复:
我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。




引用 22 楼 xianzq888 的回复:

WINDOWS上满是封装 TYPEDEF 到处乱用.. 什么 OLECHAR 其实……


没有用过NASM我只用MASM,其它的都没有试过,呵呵.我只是感觉WINDOWS上面的数据类型太乱了...

而且很多大学开设的课程的时候都是用VC,而用VC的直接后果是什么,C和C++不分..

所以呀.等学到头来连C有多少个库文件都不知道...

所以呢,一门东西还是把一门东西搞清楚....别被微软所欺骗..

不知道偏题没有..上面只是个例子....

#26


你们讨论,我看结果..

#27


引用 26 楼 usertest1 的回复:
你们讨论,我看结果..


你还是来点儿个人观点撒...

#28


引用 4 楼 xianzq888 的回复:
引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...


LZ只需要将win32的API调用想象成DOS的INT就OK了……

#29


引用 28 楼 lmxmx 的回复:
引用 4 楼 xianzq888 的回复:
引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...


LZ只需要将win32的API调用想象成DOS的INT就OK了……


如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

#30


引用 29 楼 xianzq888 的回复:
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如果为了沟通而沟通,那就是娱乐了。

#31


引用 30 楼 lyramilk 的回复:
引用 29 楼 xianzq888 的回复:
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如……

人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他(高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...

个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!

#32


只是觉得汇编是让我们知道什么是计算机..没必要为学汇编而学汇编..

如果你是为了挣钱找工作完全可以学C++   C#    JAVA这些,现在很热门..

原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...

最后不得不来学汇编.操作系统原理.数据结构这一陀东西..

计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..

大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??

因兴趣而定..

偏题了吗???我汗....

仅代表个人意见..嘿嘿...

#33


罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~ 

#34


引用 33 楼 masmaster 的回复:
罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~

因为每天看书, 都能有新的收获~, 更能深入的了解我的computer~ 

#35


我只想说楼上你用什么方法让你的小三角增加得朗快哦...

#36


引用 31 楼 nanlingcg 的回复:
人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他 (高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...

个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!


所以即便汇编不能用来开发,我们还是地学,因为我们都不学了中国的软件就悲剧了。

#37


win32汇编,其实学的是win32的SDK,也就是Win32系统提供的api

#38


win32汇编其实就是 8086汇编基础+API,如果是单纯为了理解计算机底层原理8086汇编就足矣,如果还想在windows里搞搞破解,win32汇编必不可少。一句话:有需要或兴趣都可以学win32汇编。

#39


解决问题才是目的

#40


win32不只是会变慢,还有windows。它是汇编结合了操作系统的特性。所以。。。楼主如果想在windows下有作为,必须理解windows系统吧。学win32,必须的。。。

#41


win32不只是汇编

#42


路过,本来不想说什么的,但是心情不好,想骂人,适合才是最好的,搞WIN编程,你不调用API你调用什么,有本事自己写操作系统去,你要是觉得写操作系统不过瘾,你可以自己生产硬件,自己造CPU自己制定指令。

最后说合适最好的。如果是初学者,不管学什么,先把一个学好了再说,别东学下,西学下,到后来什么都不会。

#43


win32汇编,说白了就是“汇编+Win32 API”,汇编可以让你更深入的理解计算机,Win32 API让你更深入的理解Windows操作系统。也许你学了汇编但是在以后的实践中并没有用到它(注意,没有用到它不代表它没用,只是因为你没用,你没用,可以理解成你没有用,也可以理解成你没有用,这只是个文字游戏,却也从某个方面说明了某方面的事实),但是对计算机多些理解,看看底层的一些东西,可以让你用高级语言编程时,看的更明朗。至于Win32 API,我想,如果你在操作系统下编程,而不使用API,那么,你的程序大概是人人都能编的出来的了,(当然不是全部,但是,如果你只是想玩玩,这够了,倘若你想成为真的高手,或是想利用你的知识来挣些钱玩玩其他的,那你该焦虑起来了)。

#44



想问一下,汇编怎样才可以像C一样输入一个整型的数据呢?我用StdIn输入,不行啊!我不想要用到8086那些方法,将数据的ASCII值进行变换!

#45


看了《疯狂的程序员》特别想看下罗云彬的win32书,我这学期刚学8086汇编,求学习之路

#46


每一个真正意义上程序员,学习汇编是必须的,只懂得用高级语言编程的,而不明白程序在计算机内部的运行原理,你只是停留在“程序员奴隶”的阶段,

#47


引用 8 楼  的回复:
反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....

8086书一遍看完了,准备二遍巩固中。。
前途已然一片黑暗中。。

#1


还没学完8086汇编的路过 关于WIN32汇编大家的看法?

#2


额,我觉得8086汇编才没有汇编的味道。。。

我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。

我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。

汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。

#3


而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。

#4


引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...

#5


你们讨论,我看结果..看书才是王道!

#6


看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的win32汇编, 理解起来会更容易些。 如果让一个新手上来就看win32的书, 一定是一件很纠结的事~, 关于WIN32汇编大家的看法? 个人观点。

#7


举个例子,你调用int 13h中断去操作硬盘,而这个int 13h实际上就是个API,在win32方式中,你可以调用C库的fopen或windows库的OpenFileA是一样的。

假如你想开发一个真正的读写硬盘的模块时,你会发现int 13h根本就无法满足你的要求,还得靠io操作。写win32位汇编程序,实际上脑袋里写的是C语言,写出什么函数之类的只要自己愿意,都可以和C语言兼容。这样的模块可以和C编译在一起使用,所以可以服务于DLL,可以服务于C++,可以通过JNI为Java提供服务,甚至vb、asp这样的东西都可以享受你汇编的成果。而你所说的8086汇编,基本上只有学生和老师才用得到,离开课本就没什么用了,用途也基本上就是做几个四则运算,画画花刺激一下喇叭。虽然也可以在DOS下开发些实用的东西,但是你做出来的东西会有人用么?拿到windows的命令提示符模式里,对不起,windows没提供那么多希奇古怪的中断给你使。

如果说逆向,那8086就更没用了,逆向本来就是把高级语言的代码反汇编来分析,就更贴近win32汇编了(win32汇编是用C语言的脑袋写汇编代码,至少也比8086汇编更亲和一点)。

至于什么是王道,开发操作系统,bootsector和实模式有点接近,但是只要进了保护模式就不同了,而进入保护模式前的代码数量跟整个操作系统比几乎可以忽略了。大部分的代码都是要保持跟C语言兼容的。

开发应用软件,向win32汇编这种C兼容的汇编才有用,跟C兼容意味着你的工程比纯汇编的生命力更强。和C兼容的代码在紧张的时候你可以包装成C++程序,不紧张的话你就纯汇编过去也不会比平坦的纯汇编效率低多少。

我的建议就是,即便你对win32汇编古感兴趣,那也请你注意一下:兼容C语言的汇编才是王道。没有C语言的支持,汇编就是学生的玩具。

#8


反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....

#9


引用 8 楼 xianzq888 的回复:
反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....
嗯, 踏踏实实比啥都强~
关于WIN32汇编大家的看法?

#10


你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?

看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样

#11


引用 6 楼 masmaster 的回复:
看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的win32汇编, 理解起来会更容易些。 如果让一个新手上来就看win32的书, 一定是一件很纠结的事~, 个人观点。


我最开始学汇编的时候向从8086突破,可实际上我的hello world是用混合编译后的C语言写出来的。8086汇编不好调试,你们会debug当然不这样想了,可是当初我连debug都不会,我写8086汇编根本就不知道怎么去看结果的。误打误撞看到了一些文章,后来也费了一些劲才学会用nasm和mingw混合编译,从那开始才真正看到自己的汇编代码的输出结果,用printf调试。后来学会了od感觉就不一样了,然后再看到debug的说明才会用debug。可是能用od谁还用debug啊。后来也玩了玩8086的汇编,感觉也没什么不同,就是调用中断的时候有点混乱,老想用C规则去把中断封成函数。
混合编译的编译命令大概就是下面几种的组合(nasm+mingw),就是nasm的-fwin32让我费了点劲才找到,其余的熟悉编译和连接过程就没问题。ld连接的时候指定一下引入的库和入口点就没什么了。汇编的结果用printf打出来一目了然。想调试直接上od,想快速找到关注的代码直接在代码里写int 3,用od调试比debug方便可不是一点点。
nasm code1.asm -fwin32 -o code1.o
gcc code2.c -c -o code2.o
ld code1.o code2.o -o test.exe

#12


引用 10 楼 xiaopoy 的回复:
你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?

看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样


我不熟悉APIC和SSDT,但是你也没做过汇编操作APIC和SSDT的程序。我说的对么?理解APIC和SSDT不需要8086,sysenter虽然是个中断,但它是为了C函数服务的。它和int 13h也不对应。它里面恐怕也不会用int 13h去操作硬盘。如果你真的想把这些东西作为你的论据,就别一堆问号,拿出让人信服的解释吧。
你说“sysenter所以使用的 SSDT表又如何理解?”,我断言你说不出什么必须学8086的理由。

#13


引用楼主 xianzq888 的回复:
感觉WIN32汇编完全没有汇编的味道.还真不如C..


你才知道...

#14


引用 13 楼 mydo 的回复:
引用楼主 xianzq888 的回复:
感觉WIN32汇编完全没有汇编的味道.还真不如C..


你才知道...

额,斑竹,我要代表上帝把你的汇编没收了。

#15


引用 14 楼 lyramilk 的回复:
额,斑竹,我要代表上帝把你的汇编没收了。


我的汇编波涛汹涌,连绵不绝,无法没收哦 :)

#16


引用 15 楼 mydo 的回复:
我的汇编波涛汹涌,连绵不绝,无法没收哦 :)

身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?

#17


学汇编就是为了搞搞破解之类的。

#18


引用 17 楼 nola 的回复:
学汇编就是为了搞搞破解之类的。


NO,学汇编是让你真正知道什么是计算机...

#19


引用 16 楼 lyramilk 的回复:
身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?


非也非也!偶从来都没说过汇编不好,只是认为 WIN32汇编是鸡肋,
汇编非常power,但是用在错误的地方就比较杯具了。

#20


感觉16位汇编和32的那些寄存器之类的没什么区,例如32位的程序拿到64位的编译器上去编译就变成64位的了.应该取决于编译器...似乎偏题了...

#21


我就看WIN32汇编看不下去了...满篇API.汇编失去了低层还有什么意思.不过还是要看下去,它毕竟有它的独特点.

以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.

目前看法,不代表以后的看法!

#22


WINDOWS上满是封装   TYPEDEF 到处乱用..  什么  OLECHAR  其实就是CHAR   不知道前面个写错没有..

太多这种东西咯..感觉用起来头痛呀....

#23


我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。



引用 22 楼 xianzq888 的回复:
WINDOWS上满是封装   TYPEDEF 到处乱用..  什么  OLECHAR  其实就是CHAR   不知道前面个写错没有..

太多这种东西咯..感觉用起来头痛呀....

如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。

#24


引用 15 楼 mydo 的回复:
引用 14 楼 lyramilk 的回复:
额,斑竹,我要代表上帝把你的汇编没收了。


我的汇编波涛汹涌,连绵不绝,无法没收哦 :)
羡慕ing~~~~~
关于WIN32汇编大家的看法?

#25


引用 23 楼 lyramilk 的回复:
我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。




引用 22 楼 xianzq888 的回复:

WINDOWS上满是封装 TYPEDEF 到处乱用.. 什么 OLECHAR 其实……


没有用过NASM我只用MASM,其它的都没有试过,呵呵.我只是感觉WINDOWS上面的数据类型太乱了...

而且很多大学开设的课程的时候都是用VC,而用VC的直接后果是什么,C和C++不分..

所以呀.等学到头来连C有多少个库文件都不知道...

所以呢,一门东西还是把一门东西搞清楚....别被微软所欺骗..

不知道偏题没有..上面只是个例子....

#26


你们讨论,我看结果..

#27


引用 26 楼 usertest1 的回复:
你们讨论,我看结果..


你还是来点儿个人观点撒...

#28


引用 4 楼 xianzq888 的回复:
引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...


LZ只需要将win32的API调用想象成DOS的INT就OK了……

#29


引用 28 楼 lmxmx 的回复:
引用 4 楼 xianzq888 的回复:
引用 3 楼 lyramilk 的回复:
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。


WIN32汇编变成了API调用..感觉畸形了...


LZ只需要将win32的API调用想象成DOS的INT就OK了……


如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

#30


引用 29 楼 xianzq888 的回复:
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如果为了沟通而沟通,那就是娱乐了。

#31


引用 30 楼 lyramilk 的回复:
引用 29 楼 xianzq888 的回复:
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..

所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如……

人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他(高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...

个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!

#32


只是觉得汇编是让我们知道什么是计算机..没必要为学汇编而学汇编..

如果你是为了挣钱找工作完全可以学C++   C#    JAVA这些,现在很热门..

原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...

最后不得不来学汇编.操作系统原理.数据结构这一陀东西..

计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..

大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??

因兴趣而定..

偏题了吗???我汗....

仅代表个人意见..嘿嘿...

#33


罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~ 

#34


引用 33 楼 masmaster 的回复:
罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~

因为每天看书, 都能有新的收获~, 更能深入的了解我的computer~ 

#35


我只想说楼上你用什么方法让你的小三角增加得朗快哦...

#36


引用 31 楼 nanlingcg 的回复:
人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他 (高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...

个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!


所以即便汇编不能用来开发,我们还是地学,因为我们都不学了中国的软件就悲剧了。

#37


win32汇编,其实学的是win32的SDK,也就是Win32系统提供的api

#38


win32汇编其实就是 8086汇编基础+API,如果是单纯为了理解计算机底层原理8086汇编就足矣,如果还想在windows里搞搞破解,win32汇编必不可少。一句话:有需要或兴趣都可以学win32汇编。

#39


解决问题才是目的

#40


win32不只是会变慢,还有windows。它是汇编结合了操作系统的特性。所以。。。楼主如果想在windows下有作为,必须理解windows系统吧。学win32,必须的。。。

#41


win32不只是汇编

#42


路过,本来不想说什么的,但是心情不好,想骂人,适合才是最好的,搞WIN编程,你不调用API你调用什么,有本事自己写操作系统去,你要是觉得写操作系统不过瘾,你可以自己生产硬件,自己造CPU自己制定指令。

最后说合适最好的。如果是初学者,不管学什么,先把一个学好了再说,别东学下,西学下,到后来什么都不会。

#43


win32汇编,说白了就是“汇编+Win32 API”,汇编可以让你更深入的理解计算机,Win32 API让你更深入的理解Windows操作系统。也许你学了汇编但是在以后的实践中并没有用到它(注意,没有用到它不代表它没用,只是因为你没用,你没用,可以理解成你没有用,也可以理解成你没有用,这只是个文字游戏,却也从某个方面说明了某方面的事实),但是对计算机多些理解,看看底层的一些东西,可以让你用高级语言编程时,看的更明朗。至于Win32 API,我想,如果你在操作系统下编程,而不使用API,那么,你的程序大概是人人都能编的出来的了,(当然不是全部,但是,如果你只是想玩玩,这够了,倘若你想成为真的高手,或是想利用你的知识来挣些钱玩玩其他的,那你该焦虑起来了)。

#44



想问一下,汇编怎样才可以像C一样输入一个整型的数据呢?我用StdIn输入,不行啊!我不想要用到8086那些方法,将数据的ASCII值进行变换!

#45


看了《疯狂的程序员》特别想看下罗云彬的win32书,我这学期刚学8086汇编,求学习之路

#46


每一个真正意义上程序员,学习汇编是必须的,只懂得用高级语言编程的,而不明白程序在计算机内部的运行原理,你只是停留在“程序员奴隶”的阶段,

#47


引用 8 楼  的回复:
反正我现在就对现在所学的8086感兴趣.学完再说..

哈哈..前途一片黑暗呀.....

8086书一遍看完了,准备二遍巩固中。。
前途已然一片黑暗中。。