47 个解决方案
#1
还没学完8086汇编的路过
#2
额,我觉得8086汇编才没有汇编的味道。。。
我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。
我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。
汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。
我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。
我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。
汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。
#3
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。
#4
WIN32汇编变成了API调用..感觉畸形了...
#5
你们讨论,我看结果..看书才是王道!
#6
看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的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语言的支持,汇编就是学生的玩具。
假如你想开发一个真正的读写硬盘的模块时,你会发现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
#10
你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?
看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?
看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样
#11
我最开始学汇编的时候向从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
我不熟悉APIC和SSDT,但是你也没做过汇编操作APIC和SSDT的程序。我说的对么?理解APIC和SSDT不需要8086,sysenter虽然是个中断,但它是为了C函数服务的。它和int 13h也不对应。它里面恐怕也不会用int 13h去操作硬盘。如果你真的想把这些东西作为你的论据,就别一堆问号,拿出让人信服的解释吧。
你说“sysenter所以使用的 SSDT表又如何理解?”,我断言你说不出什么必须学8086的理由。
#13
你才知道...
#14
额,斑竹,我要代表上帝把你的汇编没收了。
#15
我的汇编波涛汹涌,连绵不绝,无法没收哦 :)
#16
身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?
#17
学汇编就是为了搞搞破解之类的。
#18
NO,学汇编是让你真正知道什么是计算机...
#19
非也非也!偶从来都没说过汇编不好,只是认为 WIN32汇编是鸡肋,
汇编非常power,但是用在错误的地方就比较杯具了。
#20
感觉16位汇编和32的那些寄存器之类的没什么区,例如32位的程序拿到64位的编译器上去编译就变成64位的了.应该取决于编译器...似乎偏题了...
#21
我就看WIN32汇编看不下去了...满篇API.汇编失去了低层还有什么意思.不过还是要看下去,它毕竟有它的独特点.
以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.
目前看法,不代表以后的看法!
以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.
目前看法,不代表以后的看法!
#22
WINDOWS上满是封装 TYPEDEF 到处乱用.. 什么 OLECHAR 其实就是CHAR 不知道前面个写错没有..
太多这种东西咯..感觉用起来头痛呀....
太多这种东西咯..感觉用起来头痛呀....
#23
我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。
如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。
如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。
#24
羡慕ing~~~~~
#25
没有用过NASM我只用MASM,其它的都没有试过,呵呵.我只是感觉WINDOWS上面的数据类型太乱了...
而且很多大学开设的课程的时候都是用VC,而用VC的直接后果是什么,C和C++不分..
所以呀.等学到头来连C有多少个库文件都不知道...
所以呢,一门东西还是把一门东西搞清楚....别被微软所欺骗..
不知道偏题没有..上面只是个例子....
#26
你们讨论,我看结果..
#27
你还是来点儿个人观点撒...
#28
LZ只需要将win32的API调用想象成DOS的INT就OK了……
#29
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..
#30
所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如果为了沟通而沟通,那就是娱乐了。
#31
人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他(高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...
个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!
#32
只是觉得汇编是让我们知道什么是计算机..没必要为学汇编而学汇编..
如果你是为了挣钱找工作完全可以学C++ C# JAVA这些,现在很热门..
原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...
最后不得不来学汇编.操作系统原理.数据结构这一陀东西..
计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..
大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??
因兴趣而定..
偏题了吗???我汗....
仅代表个人意见..嘿嘿...
如果你是为了挣钱找工作完全可以学C++ C# JAVA这些,现在很热门..
原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...
最后不得不来学汇编.操作系统原理.数据结构这一陀东西..
计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..
大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??
因兴趣而定..
偏题了吗???我汗....
仅代表个人意见..嘿嘿...
#33
罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~
#34
因为每天看书, 都能有新的收获~, 更能深入的了解我的computer~
#35
我只想说楼上你用什么方法让你的小三角增加得朗快哦...
#36
所以即便汇编不能用来开发,我们还是地学,因为我们都不学了中国的软件就悲剧了。
#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
8086书一遍看完了,准备二遍巩固中。。
前途已然一片黑暗中。。
#1
还没学完8086汇编的路过
#2
额,我觉得8086汇编才没有汇编的味道。。。
我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。
我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。
汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。
我学汇编是从混合编译开始的,学汇编的每一步都离不开C语言,我觉得停留在8086的汇编是畸形的。现在的电脑谁给你机会用实模式写程序玩呢?仿C的汇编正好可以在我们常用的操作系统下进行开发。比如有时候我们做程序,有一个小小的函数需要处理数以G计的数据的每一个字节,这时候用汇编做一个小模块,然后混合到C语言中(或者内联,我不太相信内联)就可以突破汇编指令级的瓶颈了。
我觉得正是操作系统下的汇编,才能够真正帮我们做到理解C。C是所有其它编程语言的心理基础,而汇编却可以帮助我们探索C语言。最开始学习汇编的时候我觉得win32汇编没意义,看罗云彬的书就觉得他说的很没道理,可是当我从混合编译这个角度进入汇编世界后,我就明白了,其实int 21h这种东西才是真的没意义。
汇编调动硬件基本靠io指令,那些个中断内部也就是一层包装,使用它们跟使用WinAPI的技术层次差不多,一点也不底层。中断没意义,建议学win32汇编,这样的汇编才能用起来。
#3
而且实际上16位和32位汇编都是一样的,学明白win32汇编自然就会8086汇编了,只是不知道那些int中断而已,找本手册马上就能写程序的。
#4
WIN32汇编变成了API调用..感觉畸形了...
#5
你们讨论,我看结果..看书才是王道!
#6
看问题的角度不一样,呵呵,2楼老兄是过来人,跟初学者的角度不一样,我个人认为, 把8086汇编的基础打牢靠了以后,再看罗云彬的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语言的支持,汇编就是学生的玩具。
假如你想开发一个真正的读写硬盘的模块时,你会发现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
#10
你不写些8086的程序。对APIC 中断管理器了解了有什么作用?win用APIC实现DPC权重又怎么理解?
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?
看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样
和int13h对应的 sysenter所以使用的 SSDT表又如何理解?
看8086是因为它是早期的intel CPU,比现在的CPU设计简单很多,除了主要干枝没有其他的需要了解的。就像看linux 内核被推荐看 0.11版本一样
#11
我最开始学汇编的时候向从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
我不熟悉APIC和SSDT,但是你也没做过汇编操作APIC和SSDT的程序。我说的对么?理解APIC和SSDT不需要8086,sysenter虽然是个中断,但它是为了C函数服务的。它和int 13h也不对应。它里面恐怕也不会用int 13h去操作硬盘。如果你真的想把这些东西作为你的论据,就别一堆问号,拿出让人信服的解释吧。
你说“sysenter所以使用的 SSDT表又如何理解?”,我断言你说不出什么必须学8086的理由。
#13
你才知道...
#14
额,斑竹,我要代表上帝把你的汇编没收了。
#15
我的汇编波涛汹涌,连绵不绝,无法没收哦 :)
#16
身为汇编区的老大,总是对别人说汇编不好,建议别人不要学汇编。。。最要命的是还经常灌水。你可知罪?
#17
学汇编就是为了搞搞破解之类的。
#18
NO,学汇编是让你真正知道什么是计算机...
#19
非也非也!偶从来都没说过汇编不好,只是认为 WIN32汇编是鸡肋,
汇编非常power,但是用在错误的地方就比较杯具了。
#20
感觉16位汇编和32的那些寄存器之类的没什么区,例如32位的程序拿到64位的编译器上去编译就变成64位的了.应该取决于编译器...似乎偏题了...
#21
我就看WIN32汇编看不下去了...满篇API.汇编失去了低层还有什么意思.不过还是要看下去,它毕竟有它的独特点.
以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.
目前看法,不代表以后的看法!
以我目前的看法,API也没什么,也只不过和中断,子过程,宏的本质一样,都是指令的堆砌集成.
目前看法,不代表以后的看法!
#22
WINDOWS上满是封装 TYPEDEF 到处乱用.. 什么 OLECHAR 其实就是CHAR 不知道前面个写错没有..
太多这种东西咯..感觉用起来头痛呀....
太多这种东西咯..感觉用起来头痛呀....
#23
我是为了信任C语言而学习汇编的。在我心里最power的是C语言,汇编只是理解C语言的一个方式而已。如果不能为C语言服务,我宁愿把我学的汇编换100块钱。8086汇编我无论如何也想象不到它有什么用处。即便让我写bootsector我都不会去用中断。
如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。
如果你是mingw+nasm流派,你就坦然了,数据结构这东西,只要你给的字节数目没问题,它就没问题,你管它是什么呢。 用sizeof测出来是4的,无论什么东西看成int都不会错。没必要纠结什么OLECHAR还是CHAR。。用nasm的话,数据类型只有db,dw,dd,dq,dt这几种,能做出程序来都是靠糊弄,用多了,对数据类型就坦然了。
#24
羡慕ing~~~~~
#25
没有用过NASM我只用MASM,其它的都没有试过,呵呵.我只是感觉WINDOWS上面的数据类型太乱了...
而且很多大学开设的课程的时候都是用VC,而用VC的直接后果是什么,C和C++不分..
所以呀.等学到头来连C有多少个库文件都不知道...
所以呢,一门东西还是把一门东西搞清楚....别被微软所欺骗..
不知道偏题没有..上面只是个例子....
#26
你们讨论,我看结果..
#27
你还是来点儿个人观点撒...
#28
LZ只需要将win32的API调用想象成DOS的INT就OK了……
#29
如果是这样的话.那还不如C这类的高级语言来编写,还省得那么麻烦...没测试过..C代码应该和WIN32汇编的效率差距应试不是很大..C也可以内嵌汇编..
#30
所以庞大的Linux也没几行是汇编写的。但如果为了让汇编“更有用”而专注于DOS程序的开发,那就误解编程了。编程是人于计算机沟通的方式。我们通常是为了解决问题而沟通,而不是为了沟通而沟通。如果为了沟通而沟通,那就是娱乐了。
#31
人与计算机沟通自然用汇编不是最好的选择,但为了使您更好地和计算机沟通,汇编级的就成了不二选择,甚至是唯一.
假设计算机世界没有人懂其他(高)语言,但都懂汇编(级)语言,没关系,计算机业会继续向前发展.
倘若计算机世界没有人懂汇编(级)语言,但都懂其他(高)语言,那可能计算机业会很麻烦了...
个人浅见,或语言表达不完善,或个人看法有偏差,可以刀劈斧砍... ...但请勿使用凡会说话的中国人都会说的那几个字眼来表达!!!
#32
只是觉得汇编是让我们知道什么是计算机..没必要为学汇编而学汇编..
如果你是为了挣钱找工作完全可以学C++ C# JAVA这些,现在很热门..
原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...
最后不得不来学汇编.操作系统原理.数据结构这一陀东西..
计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..
大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??
因兴趣而定..
偏题了吗???我汗....
仅代表个人意见..嘿嘿...
如果你是为了挣钱找工作完全可以学C++ C# JAVA这些,现在很热门..
原本我的专业是C#但是在写程序的时候有很多问题总是喜欢去搞这是为什么...
最后不得不来学汇编.操作系统原理.数据结构这一陀东西..
计算机要学的真的太多了..现在的程序员真正懂计算机的也太少了..
大多都是会一门语言来做MS系统..有意思吗?那叫真正认识计算机是什么吗??
因兴趣而定..
偏题了吗???我汗....
仅代表个人意见..嘿嘿...
#33
罗布青菜各有所爱~,汇编, 我选择,我喜欢! 嘿嘿~
#34
因为每天看书, 都能有新的收获~, 更能深入的了解我的computer~
#35
我只想说楼上你用什么方法让你的小三角增加得朗快哦...
#36
所以即便汇编不能用来开发,我们还是地学,因为我们都不学了中国的软件就悲剧了。
#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
8086书一遍看完了,准备二遍巩固中。。
前途已然一片黑暗中。。