学汇编语言需要什么基础,学编程需要什么基础?
学汇编语言需要什么基础,学编程需要什么基础?详细介绍
本文目录一览: 学习汇编语言需要哪些基础知识?
不要高级语言的基础,唯一需要的基础是:微型计算机原理知识,只有具备一定计算机原理知识的人才能真正的理解掌握汇编语言,多去看看关于计算机内部硬件的书,例如:主板上都有什么?CPU内部结构及其功能等等,不需要多深奥,看最肤浅的就可以了
汇编是最底层的编程语言,原则上说不需要任何基础的,,,,,,楼主有C语言的基础,学起汇编编程来会事半功倍的。。。。。。。。。
学汇编最好还能学点汇编的扩展知识,比如像CPU的大致结构啊,中断啦,存储器扩展之类的硬件知识
学习汇编语言
需要一些‘计算机组成结构’方面的知识
因为汇编语言是比较接近于机器语言的一类语言
楼主学过C对学习汇编也是有好处的 毕竟编程的思想有了
我计算机专业 这学期刚学了汇编~
学好汇编 大好前程啊 ~ 我们一起努力!
零基础,我是计算机专业的,我们就这么学的,但发现没有用到以前的东西!
知道16进制怎么回事就行了
需要点英语知识吧,再稍微懂点电脑,又有C语言基础,足够了
汇编语言直接与硬件结构打交道,所以学习汇编语言,你至少要懂得与之相关的硬件知识,比如中断系统、专用模块(比如串口,定时器,计数器)、存储器结构、数据总线、地址总线;你还需要熟悉指令系统;当然,数字电路知识也是必须的。
汇编语言结构不如高级语言那么清晰,看起来比较繁琐和枯燥,所以需要专心和静心,不能浮躁,否则很难深入进去,汇编语言使用频率最多的是十六进制数,所以数制转换你需要很熟悉。
如何学习汇编语言?
学习汇编语言过程:
一,要有一定的微机硬件基础知识,因为汇编很底层,更加接近机器语言,往往很多的东西要从机器层面来支持理解。
二,最好先学习一门高级语言,因为高级语言更接近人的语言,相对比较容易理解。掌握了一门高级语言后再学汇编,一来不易产生畏惧感,二来遇到问题,只能局限于已学的汇编知识来来思考遇到的问题,此时跳出汇编,旁援掌握的语言有助拓新思路,而不只局限与汇编一个思路。
三,细致,踏实的学习态度是少不了的,更为重要的是实践。比喻为:犹如一个战士进入敌营中心地带,要冷静,小心,还要勇敢,智慧,要在敌中心步步为胜,留意敌人的一举一动,将敌一扫而光,不可大意一步,因为接近核心了,稍一大意有可能留下极大隐患。
四,一个狂热的学习劲头,是学习的动力。勤奋,刻苦,等品质也将帮你一路顺进。
想学习单片机汇编语言,怎样学入门比较快呢
先学C语言,清华大学谭浩强的那个版本就不错。有了基础之后再学汇编语言会容易一点。找本好点的教材。当然,自己看书总是没有向别人讨教来的容易和方便~~
有基础的话自学一点问题也没有,找一本好的书就可以了,介绍一本郭天祥编的关于单片机的,那里面就是用的C语言,挺不错的,简单易懂,零基础也可以学。
蓝屏
兄弟如果你真的想学好单片机的话,建议你不要太过于求成,真的是要一个脚步一个脚印来的,这样你后面会很轻松,千万不要一来就想做个什么东西出来,不要小看流水灯等这类小实验,它能帮助你很好的了解单片机的结构,汇编虽然繁琐,但是你下定决心苦两三个月,你在回头看,你会觉得这路走得值,在想想几个月算得了什么啊,等你真的融入到单片机里的时候,你会发现,哎呀时间过得真快啊,你总是想和时间赛跑。
这个学习单片机还有点用,希望能帮到您。
单片机的硬件基础 http://hi.baidu.com/dzkfw/blog/item/f446f73f9fed61e6838b13f0.html
建议用C语言,比较快,指令系统可以忽略。
1、需要先熟悉电路尤其是数字电路知识。
2、明白常规的数制:主要是2进制和16进制。
3、理解常规概念:比如时钟、时钟周期,工作时序等;还需要懂得地址、寻址、PC等常规概念。
4、指令无需强记,只要明白指令类型、指令字长和指令运行周期等即可。
当然,上述要求只是初步要求。汇编语言是与硬件紧密联系的编程语言,没有电子硬件基础,学起来有种学天书的感觉,所以,硬件扫盲是必须的;另外,要先从51单片机的汇编学比较好,因为它的资料多,硬件相对简单,指令丰富,最主要它是一款“大众”机,提供帮助的资源很吩咐!
如何学习汇编啊
1、看王爽的《汇编语言》。这个书有视频,去网上找。
2、找一本计算机体系机构与编程的书,用心看完。
3、基础的汇编也就这些东西了,WIM32的汇编接近高级语言,如果不用,也就没必要看了。
希望能帮到你!
1. 保持好心态,不要急,拿着王爽的书一点一点来,把书中碰到的每一个不会的都弄明白。感觉碰到一些似懂非懂的可以先做个记号放那,等一会儿再回头看。
2. 多动手写程序,哪怕是书中的例子,看完题目就把书合上,先写一遍,然后和书中的对比一下。每章后面的题更要弄懂,因为接下来的几章中还会碰到这个题的延伸部分。
1. 学汇编的方法
应该具备的条件:--微机(80X86型微机) --MSDOS操作系统或Win95/98的 "MS-DOS方式" -- 编程工具: 文本编辑器: 如 MS-DOS 的 EDIT
汇编器: 如 MASM.EXE 5.0 版本
连接器: 如 LINK.EXE
二进制转换: 如 EXE2BIN.EXE
学习汇编语言实践性很强。只有经过编写大量代码才能熟练掌握。此外阅读源程序也很有帮助。
由于汇编语言是与 CPU 芯片紧密相关的,所以必须针对某一机型,清楚地了解 CPU 芯片及其外围
设备的硬件资料。只有这样,编写代码才能得心应手。所以有两类资料需要你去积累:一类是硬件
方面的资料和系统软件方面的资料,另一类是算法方面的经验。其他比如汇编工具等则没有多少东
西需要深究。
第一类资料,比如 各种 BIOS 中断,MS-DOS 功能调用,Windows API 库,这些可以归为系统
软件方面;而 CPU 结构,端口定义,中断定义,总线方式等可归为硬件资料。
第二类资料,比如排序算法,字符串查找算法等。像搜索引擎所采用的算法,能在最短的时间
内,找出符合条件的信息,而且还带有智能性。这种查找方案包含了很科学的算法。它们都是抽象
的东西。
总之,学习汇编,你应该目的明确,而且目标机器明确,要解决的问题也明确。这样才能有
的放矢,最终有所收获。
2 汇编语言基础 基本指令
我们学习的对象机器是 PC 机,CPU 是 Intel80x86,所以先熟悉 CPU 的大致结构。
其实经常用到的是 CPU 的各个寄存器,其他比如引脚,内部结构等,开始时先不去管它。
由于Intel80x86 各版本 CPU 新的与旧的保持兼容,旧的 CPU 下设计的程序无需任何修改就能在
新的CPU 下运行。Intel 8086/8088 的 所有寄存器在后来的 新版本 CPU 中都保持。它们也是最
基本的 CPU 寄存器。 所以主要学习 Intel 8086 CPU 的寄存器:
加法器 AX (AH/AL)乘法,除法,I/O, 快速的算术运算
基址寄存器BX (BH/BL) 基址指针 (数据段)
计数器CX (CH/CL) 循环,重复或位移的计数器
数据寄存器DX (DH/DL) 乘法,除法,I/O
源索引SI 源串和索引指针
目标索引DI 目标串和索引指针
基址指针BP 栈的基址指针
栈指针SP 栈的当前位置指针
标志 CPU 标志
指令指针IP 当前指令的内存位置
代码段CS 程序代码段值
数据段DS 程序数据段值
栈段SS 栈操作的段值
附加段ES 程序附加数据段的段值
其中 CPU 标志寄存器各位的含义如下:
FLAG: (相应的 BIT 为 1 时的含义)
CF进位位向目标操作数进位或借位
PF奇偶校验位 低字节校验结果为偶校验
AF辅助进位标志低 4 bits 的进位或借位标志
ZF零标志结果为零
SF负数标志结果为负数
TF单步标志(CPU)转为单步状态
IF中断标志中断响应打开 (清除时关闭)
DF方向 字串操作默认向下(down rather than up)
OF溢出 结果过大或过小(for destination) 汇编语言指令主要就是对上述各个寄存器的操作。下面这段代码是一个完整的 COM 型可执行
程序文件的代码,经过编译,连接和转换后,能直接执行,结果是在彩色背景下显示一些字符。
编译后只有204 Bytes。
(你需要把这段代码完整地复制下来并另存为一个以 ASM为扩展名的文件,例如 mypro1.asm。
然后对它进行编译连结和转换,就生成一个名为 mypro1.COM 的可执行文件。你只要在 DOS 命令行
敲入 mypro1 加回车就能看到它的执行结果。关于如何编译连结等问题以后再说。你先可以在汇编
工作室主页上下载简装工具,使用其中的 TOCOM.BAT [filename] 批处理即可顺利生成COM文件。)
在这个例子中使用了几类指令:
mov 寄存器,立即数;数据传输类
mov 内存,寄存器 ;数据传输类
push 寄存器 ;堆栈操作: 入栈
pop 寄存器 ;堆栈操作: 出栈
int 10H ;10H 号 中断 (视频)
int 21H ;21H 号 中断 (功能调用)
除了这些指令外,还看到:
assume ;假定
offset ;求偏量
ORG ;地址定位
byte ptr;字节属性
db;定义字节,内存分配
在一个完整的汇编源程序中,一般包括上述两类内容,它们分别是指令和汇编伪操作,
它们是构成源程序必不可少的成分。这些指令和汇编伪操作在用法上有许多细节,需要通
过具体的程序举例来逐步掌握。;运行环境: MS-DOS 或 Windows98 的 MS-DOS 方式
;硬件条件: 安装有 VGA 或更新的显示适配器
;这是命令文件 (COM) 格式的程序结构,
stackseg segment stack
stackseg ends
codeseg segment
assume ss:codeseg
assume cs:codeseg
ORG 100H
Entry: mov ah,0fH;取当前显示模式
int 10
mov byte ptr cs:vMode,al
mov byte ptr cs:vPage,b
mov ah,00
mov al,03
int 10H ;设置显示模式: 3
mov ah,05
mov al,00
int 10H ;设置当前显示页: 0
mov ah,06H
mov ch,00
mov cl,00
mov dh,24
mov dl,79
mov bh,63
mov al,00
int 10H ;清屏操作(用以指定色彩)
mov ah,06H
mov ch,10
mov cl,20
mov dh,15
mov dl,50
mov bh,00
mov al,00
int 10H ;清除指定屏幕区域(用以指定色彩) mov ah,06H
mov ch,09
mov cl,22
mov dh,14
mov dl,52
mov bh,79
mov al,00
int 10H ;清除指定屏幕区域(用以指定色彩)
mov ah,02
mov dh,11
mov dl,30
mov bh,00
int 10H ;定位光标: 11,30
mov ah,09
mov dx,offset cs:string1
push cs
pop ds
int 21H ;显示一串字符
mov ah,02
mov dh,13
mov dl,30
mov bh,00
int 10H;定位光标: 13,30
mov ah,09
mov dx,offset cs:string2
int 21H;显示一串字符
mov ah,02
mov dh,25
mov dl,00
mov bh,00
int 10H;定位光标:25,00(即隐藏光标)
mov ah,00
int 16H;等待键盘输入
mov ah,00
mov al,byte ptr cs:vMode
int 10H;恢复显示模式
mov ah,05
mov al,byte ptr cs:vPage
int 10H;恢复当前显示页
mov ah,02
mov dh,24
mov dl,00
mov bh,00
int 10H;恢复光标: 24,00
mov ah,06H
mov ch,00
mov cl,00
mov dh,24
mov dl,79
mov bh,07
mov al,00
int 10H ;清屏 mov ax,4c00H
int 21H ;结束程序,返回 MS-DOS 提示符
String1 db 'Can you see it?$'
String2 db 'Any key to exit$'
vMode db ?
vPage db ?
codeseg ends
end Entry ----------------------------------------------------------------------------------------
学编程需要什么基础?
学编程需要以下这些基础:
1、数学基础
从计算机和应用的发展历史来看,计算机的数学模型和体系结构等好多都是由数学家提出的,包括最早的计算机也是为数值计算而设计的。因此,要学好计算机是需要一定的数学基础的,初学者有高中水平就差不多了。
2、逻辑思维能力的培养
程序员必须要有一定的逻辑思维能力,逻辑思维能力的培养更需要长时间的实践锻炼。但是也不必操之过急,逻辑思维说白了是一个技术,和打游戏,把妹,打拳击一样,多进场练习才是关键。
如果做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。
3、选择一种合适的入门语言
网络编程目前较为流行的网络编程工具可谓“风格迥异,百花齐放”。
每一种工具都有其独特的特点,在互联网实现上都有各自的优势序设计工具不外乎如下几类: ① 本地开发应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 ② 跨平台开发开发工具如 Java等。
4、注意理解一些重要概念
程序设计的教程看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三。
5、掌握编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习Java在学习中应把重点放在其语言基础、Java与ActiveX以及JavaBeans等组件之间的编程技术以及应用上来。
你可以自己编一些较为经典的小程序来加深基本技能的掌握:用Java的图形处理能力编写纸牌游戏,用AWT编写扫雷或者俄罗斯方块、用Java的网络功能编写网络聊天室等等。关键是学一种思想,有了思想,那么我们就很容易触类旁通。
学习编程其实不需要什么基础,只要可以正常操作电脑就可以学习编程,但是如果想往高深的技术研究就需要学习很多东西,时代咋子进步很多东西都有千丝万缕,所以很多编程需要都是相通的。
1、明确的学习目标学习编程对大多数信息技术专业人员非常有用 学习编程和成为程序员可以从个人的角度解决软件使用中遇到的问题,改进现有的软件,为自己找到一份理想的工作增加重要的权重,并帮助你在找工作的路上找到一份好工作。
2、从国家的角度来看,它可以为中国软件业做出应有的贡献。优秀的程序员将永远是争论的对象。 学习编程还可以训练我们的思维,使我们的逻辑思维更加严谨。能够持续享受创新的乐趣将永远有机会走在高科技的前沿,因为编程本身就是一种创造性的工作。
3、知识经济时代给我们带来了无限的机遇。要真正掌握计算机技术并在信息技术行业有所作为,具备一定的编程能力是一个基本条件和要求。
4、为基础编程打下坚实的基础,应总结如下几个方面,数学基础从计算机发展和应用的历史来看,计算机的数学模型和体系结构是由数学家提出的,最早的计算机也是为数值计算而设计的。 因此要学好计算机必须有一定的数学基础初学者应该有高中水平。
学编程需要以下这些基础:
1、数学基础
因为大多编程都涉及了基本的算术运算,但可能你想要学习更先进的概念。如果你想写出复杂的模拟或者算法级别程序,这将是非常重要的。对于大多数日常编程而言,你并不需要太多先进的数学知识。但学习逻辑,尤其是计算机逻辑,将能帮助你理解处理更先进程序的复杂问题的最好方式,所以想学好编程,平时就需要多注重逻辑思维的培养。
2、英语基础
现在大部分编程语言是基于英语语言的,比如常见的C、C++、java等等都是英语单词堆起来的,如果有点英语底子的学生,在学习编程知识时可以见文知意,见闻知意什么意思呢,就是看到编程语言的某个单词就知道它在这个编程语言中的意思与作用,就容易学习编程语言了,所以最好有英语基础,这样学习编程轻松、高效一些。
3、其他知识
还有需要学习其它方面的知识。如果是前端方向,还需要学习设计方面的知识,PS、Fl等;计算机知识,操作系统、计算机网络等等;如果是非前端方向:计算机知识,操作系统,计算机网络,计算机组成原理等等。
学编程需要早点学会盲打、软件工程、数学基础。
1、早点学会盲打
盲打越早学会越好,即使你不写程序代码,总还是要用电脑打字的。不会盲打的人常用“二指禅”打字,比专业打字员慢上几十倍。而只要刻意练习,一般1个月就能学会,只不过一开始速度慢点罢了,以后只需要不停地打下去就行了。
2、数学基础
从计算机和应用的发展历史来看,计算机的数学模型和体系结构等好多都是由数学家提出的,包括最早的计算机也是为数值计算而设计的。因此,要学好计算机是需要一定的数学基础的,初学者有高中水平就差不多了。
3、软件工程
这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。《实用软件工程》(黄色,清华)。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
学编程需要以下这些基础:
一、做好心里准备
自学编程的弯路多得数不完,坑多得踩不完。如果你决定要自学编程,就意味着踏上了一条面对困难、挫折和失败的无尽之路,要想清楚自己能不能承受这些挫折,自己能不能坚持走到最后。
二、选定方向
编程的世界是多元纷繁的,大的方向就分前端开发、后端开发、移动开发、云计算、数据处理、智能硬件、物联网、虚拟现实等等,光编程语言都几十种。如果没有做过功课,贸然进入只会分分钟懵逼。所以最好是根据自己的兴趣爱好再结合市场前景,先选定一个方向,再选择一门语言,然后头也不回的深深扎进去。
三、制定学习目标计划
选定了方向之后,剩下的就是朝着目的努力前进了。自学的过程是枯燥乏味的,也没有人陪伴督促,所以要想自学有一定成果,除了要有清晰明确的目标计划,还要有很强的自我约束能力,还要善于自我及激励。
不然很容易自由涣散,三天打鱼两天晒网,看起来花了不少时间,实际上没学到什么。
学习编程的基础:
1、英语基础
虽然对于初级程序员来说,英语只需要写简单的词汇就可以,但是如果想要走的更远,还是要去学习和掌握。我极力推荐英语是因为在学习IT技术上,没有专业文档的阅读能力是不可想象的,中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把英文印刷上去,学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练,吃得苦下得狠心绝对是任何行业都需要的品质。相信只要有几年工作经验的人都会深有感触!
2、计算机体系结构和汇编语言
关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著),你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
3、计算机操作系统原理
我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统,无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众,只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》。
4、数据结构和算法
这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的。很多人喜欢买C++版的,但我觉得没有必要,C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂,倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
5、软件工程
这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。
6、Windows 程序设计
我建议任何企图设计Windows程序的人在学习VC以前仔细的学完它,而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中,没有C++,没有GUI,没有控件,有的就是如何用原始的C语言来完成Windows程序设计。
在学完了它以后,你才会发现VC其实是很容易学的,千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰,我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。
学习汇编要以什么为基础知识?学汇编要学哪种语言最好?
要有C语言基础比较容易学点,有些书有时候会拿C语言来和汇编的语法做比较,加深理解。
推荐入门书:<
>王爽(上网买才20来块,不过到后面有点难)
然后可以看看你对拿方面看好或有兴趣,可以再学硬件,Win32,Linux汇编之类的东东。
做什么事都要坚持,老实说汇编不是一般的难,不过学会之后对其它语言的东西都能很快掌握理解。。。
最好和C语言结合起来学习,先把C语言学完,紧接着学习汇编原理,还有计算机体系结构和硬件基础都接触一下了解一下,总的来说,底层的基础的东西学习起来是很费力很枯燥的,要好好坚持,我也是这么走过来的。。。以后共同进步哈。。。
学汇编前需要学一门高级语言,比如VB。此外要有一些计算机基础,比如计算机对指令的执行过程。汇编语言直接对硬件进行操作,学起来会有些吃力,需要一定的毅力。看雪论坛去吗,那是学汇编的好去处。
这位大哥说话真囧.....
汇编嘛,是一门仅仅高于机器语言的编译语言,因为其级别低,所以安全性良好,不易被破解,同时使用反汇编技术,也是当今破解计算机软件及操作系统的核心技术。
学汇编之前呢,一定要已经是一个已经接触过编程语言的并且对其有一定认识的人。个人感觉学汇编之前起码要会2门高级语言(C语言必须),再是本人对编程有浓厚的兴趣,这么说吧,汇编自学是很难的,要比C啊,java啊,c#啊都难。
你说的自己思维分析,呵呵,说实话,您描叙的自己能力和程序员的要求貌似有一定偏差。可以说,一个把window操作系统玩得飞,各种功能都明白的高手,这都不代表他能做为一个好的程序员。编程的那种思维能力我个人感觉是和你数学的思维力紧密相关的,会不会弄电脑,那是另一个方面的问题。
至于你说得当名黑客,可以强夺别人SCI权限,或者是反汇编破解bit加密,这些事情那就更是要一个人的天赋了,这可不是说来就可以有的。
所以我的建议是希望您务实一点,先学基本的编程语言,弄清自己的能力所属的方向后再找出路,一开始想入飞飞的当什么黑客不太切合实际~
汇编语言>
零基础学习编程入门需要掌握哪些基础?
随着互联网的快速发展,越来越多的人想要重新互联网的行业,学习计算机编程,尤其是零基础学习编程的小伙伴想要学习又不知道学习计算机编程需要哪些基础?针对准备学习计算机编程又不是科班出身的学员,而是通过培训机构杀入代码战场,对于这类人,昌平IT培训建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时,我还列出了一些书目,这些书应该都还可以在书店买到。
1、英语基础
虽然对于初级程序员来说,英语只需要写简单的词汇就可以,但是如果想要走的更远,还是要去学习和掌握。
我极力推荐英语是因为在学习IT技术上,没有专业文档的阅读能力是不可想象的,中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把英文印刷上去,学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练,吃得苦下得狠心绝对是任何行业都需要的品质。
2、计算机体系结构和汇编语言
关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著),你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。
3、计算机操作系统原理
我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统,无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。
这一类书也很多,我没有发现哪一本书非常出众,只是觉得在看完了这些书后如果有空就应该看看《InsideWindows2000》。
4、数据结构和算法
这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的。很多人喜欢买C++版的,但我觉得没有必要,C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂,倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。
汇编语言怎么学?
⒈读程序:我将读程序放在前面是有原因的。在你没有阅读过一份完整的源代码之前,你别指望能写出有多好的程序来!这是对每一位初学者的忠告也是警告,而且必须具备一定的语言基础知识,这里的基础知识主要是指语法知识,最起码要能读懂别人的程序的每一行意思。有没有程序的设计思想,在这个时期并不重要,只要具备一定的语法基础就可以了,思想可以通过阅读完别人的源程序后分析得来。
记得在大一学习C语言的时候,我们都很重视语法的学习,整天都看教材、做练习,而且赶在老师的讲课前预习,课后又复习巩固,将一些语法点记得滚瓜烂熟,可后来一到做课程设计的时候,坐在电脑面前简直是老鼠拖鸡蛋—无从下手了,而且不断的问自己:“我平时的努力哪去了?语法都会了呀,怎么还是做不出程序来?”相信很多人都像笔者以前那样,错误地以为学会了语法就等于掌握了编程。编程的能力包括经验、技巧、耐心等几个因素,而并非想象中的那样简单,更不要以为编程就是简简单单的写程序!其实学一门语言并不需要刻意去记那些条条框框的语法,在看代码的时候,遇到了不明白的地方再去查相关的料,一点一点补充基础知识再配合源程序的思路,这时的理解才是最深刻的,我可以肯定地说,这个时候对语法
的接受程度绝对比你刚开始时的死记要强!
读程序也不能单纯地读,要真正做到“俯而读,昂而思”。好的代码是百读不厌的,比如Shotgun的那道构造洪水Ping攻击的代码,我至少读了20遍。笔者喜欢将从网上搜集来的代码打印到纸上(尽管学校的打印费贵得要命,打一份代码就得花去十几块甚至几十块大洋~~~),然后边看边做好眉批,遇到一个新函数记下它的功能,一些忘记了的知识在旁边标出来,还可以写上对程序的看法等等。特别是遇到了一些新的API函数,最好标出来,对你以后编程的时候也许会用得着,最后别忘了分析一下程序的思路,这样对你以后编写类似的程序很有帮助的。
⒉写程序:问题可谈到点子上了,学那么多语言,读那么多程序最终还不是为了写程序,做出适合需要的软件来?“君子性非异也,善加于物也”,笔者认为一切从借鉴开始,先是修改别人的程序,等到有了一定的程度再写出属于自己的程序。
刚开始写程序,不要奢望一下子写出很出色的程序来,“万丈高楼平底起”,编程贵在动手,只要你动手去写了,就算只有一句“printf(“Hello!”);”也是一次进步!此外,还要依照自身的能力循序渐进地写,开始的时候写一点功能简单的、篇幅短小的代码,力求简洁、完整,“麻雀虽小,但五脏俱全”,然后在此基础上进行扩充,一点一点添加功能,下面笔者摘录一位国内一流编程高手、“豪杰超级解霸”的作者梁肇新的编程心得,请大家看看一个成功的程序员是如何写程序的,希望对广大菜鸟有所启发:
想自学汇编语言。请问是否需要C语言的基础?
完全没有,汇编是单片机的指令码,你只有了解单片的就可以编写,C呢都是经过编译软件间接来生成汇编的。所以不必担心有影响。
不需要,C是高级语言,汇编是低级语言。其实计算机语言的学习MS不需要其他语言的基础。
应该没有吧,汇编很低层,需要更多硬件知识,而C是高级语言,不必管低层的工作,跟汇编还是有距离的。
学习汇编和C语言没有必然的联系,汇编是学习单片机或计算机的内部硬件的结构,汇编开发需要对各种寻址方式以其一些指令了解,必须了解指令和芯片的时序,控制信号,地址,而C语言开发只需要了解各种芯片的时序、控制信号、地址,用这些知识来编写函数就可以了。
所以说学汇编要多练习,在硬件平台上练习就可以了,而且汇编出错概率多,调试比较麻烦,要养成好的程序编写习惯,掌握基本的方法;
而C只要编译成功,时序,控制信号,地址正确,就是可以用的。