如何学习汇编!!请给个思路!!
我想用汇编语言设计一种低级语言(如C语言(我对C语言的结构已经非常熟悉))来巩固自己所学的知识!!我现在已经看完了王爽的书(我想已经算是入门了吧!!)但是感觉差的很远!!...
我想用汇编语言设计一种低级语言(如C语言(我对C语言的结构已经非常熟悉))来巩固自己所学的知识!!
我现在已经看完了王爽的书(我想已经算是入门了吧!!)但是感觉差的很远!!
不知道要按照我这个思路接下来还应该学习什么 请给个思路
提供几本书籍
可能我说错了 我设计了一门翻译型语言
假设(假设哈!!)C语言是我开发出来的
我先用我的c语言写出了如下代码
main()
{
int a b c;
c = a+b;
}
然后由翻译器(注意是翻译器)翻译成
a dw 10
b dw 20
c dw ?
mov ax,a
mov bx,b
add ax,bx
mov c,ax
最后编译!!
我不是用汇编做汇编的编译器
我是想做一个翻译器
比如说我现在已经设计出来一种计算机语言 但是我现在并不是设计一个直接可以把我的语言编译成2进制码编译器 而是先把我的语言先翻译成汇编语言 在由汇编的编译器把翻译好的汇编码 最终编译成可执行文件!! 展开
我现在已经看完了王爽的书(我想已经算是入门了吧!!)但是感觉差的很远!!
不知道要按照我这个思路接下来还应该学习什么 请给个思路
提供几本书籍
可能我说错了 我设计了一门翻译型语言
假设(假设哈!!)C语言是我开发出来的
我先用我的c语言写出了如下代码
main()
{
int a b c;
c = a+b;
}
然后由翻译器(注意是翻译器)翻译成
a dw 10
b dw 20
c dw ?
mov ax,a
mov bx,b
add ax,bx
mov c,ax
最后编译!!
我不是用汇编做汇编的编译器
我是想做一个翻译器
比如说我现在已经设计出来一种计算机语言 但是我现在并不是设计一个直接可以把我的语言编译成2进制码编译器 而是先把我的语言先翻译成汇编语言 在由汇编的编译器把翻译好的汇编码 最终编译成可执行文件!! 展开
4个回答
展开全部
你是做编译器吗,要看《编译原理》那本龙书,《深入理解计算机系统》
你可以用C语言来做C语言编译器,
你要用汇编来做的话就还要学很多东西,王爽的书只能算冰山一角。
比如说你要编译出exe文件,你必须熟悉PE文件格式,熟悉windows api,《Win32 程序员参考大全》是要看的。还有C语言的main函数之前有个startup()启动函数,是编译器自动添上去的,完成了一些初始化操作,你知道吗?
汇编有很多种,王爽的书只介绍了IA16汇编,而且对BIOS中断和保护模式介绍得不够深入,如果你去下载“1000个病毒源代码”,你能看懂几个?
保护模式可以看《80x86汇编语言程序设计教程》和《保护方式下的80386及其编程》。
windows汇编可以看《Windows.环境下32位汇编语言程序设计》,那本书挺好,我看很多遍,不过那本书也只能算入门级的。
你要写编译器那是大型的汇编程序了,《汇编语言编程艺术》也是要看的,虽然那本书介绍的是HLA。软件工程和设计模式也要了解。
反正要比较扎实的基础。
你不会汇编的话不可能对C语言很熟悉,你认为你很熟悉可能是你知识面太窄了
比如你看一下这个C语言程序你能看懂吗
http://anonsvn.wireshark.org/viewvc/releases/wireshark-1.6.4/
你可以用C语言来做C语言编译器,
你要用汇编来做的话就还要学很多东西,王爽的书只能算冰山一角。
比如说你要编译出exe文件,你必须熟悉PE文件格式,熟悉windows api,《Win32 程序员参考大全》是要看的。还有C语言的main函数之前有个startup()启动函数,是编译器自动添上去的,完成了一些初始化操作,你知道吗?
汇编有很多种,王爽的书只介绍了IA16汇编,而且对BIOS中断和保护模式介绍得不够深入,如果你去下载“1000个病毒源代码”,你能看懂几个?
保护模式可以看《80x86汇编语言程序设计教程》和《保护方式下的80386及其编程》。
windows汇编可以看《Windows.环境下32位汇编语言程序设计》,那本书挺好,我看很多遍,不过那本书也只能算入门级的。
你要写编译器那是大型的汇编程序了,《汇编语言编程艺术》也是要看的,虽然那本书介绍的是HLA。软件工程和设计模式也要了解。
反正要比较扎实的基础。
你不会汇编的话不可能对C语言很熟悉,你认为你很熟悉可能是你知识面太窄了
比如你看一下这个C语言程序你能看懂吗
http://anonsvn.wireshark.org/viewvc/releases/wireshark-1.6.4/
更多追问追答
追问
呵呵 你说的我的都明白 (我暂时也没有想这么多) 我懂的确实很少!
可是你没有明白我的意思
我不是用汇编做汇编的编译器
我是想做一个翻译器
比如说我现在已经设计出来一种计算机语言 但是我现在并不是设计一个直接可以把我的语言编译成2进制码编译器 而是先把我的语言先翻译成汇编语言 在由汇编的编译器把翻译好的汇编码 最终编译成可执行文件!!
追答
编译器应该是做不出来的,不过你可以尝试着去做,会遇到不少困难,在这个过程中也能学到不少东西。
你可以先做个简单点的C语言解释器,
就说你用C语言写一个程序,打开那个程序后每输入一条C语言指令回车后就执行。这样的例子网上有很多,功能都比较简单,你可以尝试添加更高级的功能。不过即使做解释器也是要学编译原理的。
那再简单一点,你先做一个计算器,
就是每输入一个算式回车后输出结果,
比如输入(3^2+4^2)/5-1,那么要输出4,
计算器要支持加、减、乘、除、括号、幂、三角函数、移位、逻辑运算,
还有类似excel的sum求和、平均、计算方差等函数。
你要把这个计算器做出来了就可以考虑做解释器了
展开全部
不知道你是大学几年级的学生,我想应该是大学二年级或三年级的学生吧,汇编语言是机器语言的抽象,所以学好汇编学懂汇编是很有用处的。你现在用的是王爽的汇编书,这本教程是很经典的,也很实用,你已经看完的意思是不是里面的东西都已经弄懂,大部分高校的汇编语言都是选用的王爽的教材。
你可以去你们图书馆找找《深入理解计算机系统》这本书,里面的第三章讲的就是汇编语言与你所熟悉的C语言之间的相对应关系,然后编编小程序,是那种脱离书本自己编程,这一步我估计你已经差不多达到了,这样的话,就可以尝试一些比较大的汇编程序,可以跟着书本学,比如汇编语言编出动物图形等等,遇到不懂得问题,多上图书馆和网上找找资料,推荐一本杨文显的《新汇编语言程序设计》,后面几章都是比较实用经典的,自己也可以上你们学校图书馆去找找书籍,要学精的话是要勤奋努力的,关键是要能钻,老师讲的东西都太基本。
此外编译原理这个也可以考虑去学学,希望对你有所帮助!
你可以去你们图书馆找找《深入理解计算机系统》这本书,里面的第三章讲的就是汇编语言与你所熟悉的C语言之间的相对应关系,然后编编小程序,是那种脱离书本自己编程,这一步我估计你已经差不多达到了,这样的话,就可以尝试一些比较大的汇编程序,可以跟着书本学,比如汇编语言编出动物图形等等,遇到不懂得问题,多上图书馆和网上找找资料,推荐一本杨文显的《新汇编语言程序设计》,后面几章都是比较实用经典的,自己也可以上你们学校图书馆去找找书籍,要学精的话是要勤奋努力的,关键是要能钻,老师讲的东西都太基本。
此外编译原理这个也可以考虑去学学,希望对你有所帮助!
更多追问追答
追问
我刚刚补充了问题 不知道你是否理解了我的意思 不知你能否根据我的意思给详细解答一下!!
如果够详细 还有分送上!
另外我在上高2 这些都是我从初中开始学的!!
追答
这个先在汇编程序中给a,b,c每个先申请一个内存空间,用寄存器暂存a,b的值,相加之后再送入c的内存单元就好了
a dw 10
b dw 20
c dw ?
mov ax,a
mov bx,b
add ax,bx
mov c,ax
这样就能实现了,上高二的话不得不说你确实很不错,中学就开始学习这些,真的不错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设计一种低级语言( 如c语言)? c语言是高级语言吧?
追问
C语言是一种面向过程的语言 相对来说他的确很低级
仅此于汇编
不知道你是从何得知C语言是高级语言的!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询