网站的备案信息域名不一样厦门小鱼网
这篇文章写于2019年5月9号。
今天在了“回收站”中无意中看到这篇文章。我忘了当时出于什么原因将其删除。
重新看了一遍,还记得当年是在一个自习室里面敲的。文中的一些往事虽然没直接写出来,但看了下内容,还能记得。脑子确实是个好东西。
既然看到,便是缘分,重新放出来吧。
2021年1月28号
后面还有一个课设二,没有做。课设二要求编写一个自行启动的计算机,不需要在现有操作系统环境中运行的程序。看着程序要求很长,很麻烦,不想做。(“世之奇伟、瑰怪、非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。” ——王安石《游褒禅山记》)
我尝试在脑子里,搭起整个汇编语言的框架,似乎不太成功。内存?寄存器?程序?中断?总结不了内容,便不要总结了~
现在关于使用debug还是emu8086的问题。我还是认为使用emu8086比较好。当然,比较好是在我敲代码方便性上而言。
最开始学习这本书的时候,我还下载了参考答案,这不对的。独立思考带来的创造性是非常重要的。幸好,我随之将其删除。
也许生活中,有的人,喜欢较真。当然,“较真”在我这是一个中性词。不同的观点,压下偏见,静静的听一听,某些时候也是有道理的。当然,有道理,我也不一定去做。哈哈。柴静在《看见》这本书中也写道年轻的时候她的故事,挺有意思的。某些时候,简单的引导和以身示范或许是最好的效果。是一种宽容。一个人能活好长时间,有些错对,磕磕绊绊就过去了。
学习从来是慢慢来。某些时候是开阔开阔眼界。但是思考性的深度还是必要的。何必在基础学习的时候压缩学习,在使用的时候多走弯路了?空闲的时候,看一看同类的其他书目,非常必要。独学而无友,则孤陋而寡闻。身边有一群搞学习的小伙伴,有空的时候,讨论讨论,非常nice。
这本书的大多数程序基本上,都是自己完成的。完成之后,网上看下别人是怎么做,很其他人探讨一下也很有必要。这本书,写的很好。作业的难度在引导下,在思考后基本都能完成。我的课设一写了七个小时左右。当中有个问题,我处理的方法是两次压栈,在书后面的章节中,也涉及到了。但,提前想出,也是挺开心的。当然,我课设一的程序结构有点菜,后来也懒得改动了。
整理东西的时候,整理的不是书上的东西。整理的是脑子里对于该内容的结构。整体之前,也会看下网上是如何整理的。每当看到,把书上的顺序搬到博客中的这类文章,就觉得挺操蛋的。看待问题要有自己的思路。
(汇编语言,也是编程语言。也是顺序,选择分支,循环这几部分逻辑结构。或者说只有顺序和选择。因为循环也是选择分支的一部分。程序的选择分支,必然要用到转移指令。转移指令的根本还是修改cs:ip。不管指令如何运行,必然都离不开寄存器和内存的访问。寄存器的存在,有时候或许是便于对内存的管理。还有一个非常大的板块是中断。中断避免了程序想流水一样,平平流过,没有什么波澜。汇编的学习离不开硬件。《微机原理与接口》还是非常必要看一下的。)
最后附上书上P285,指令系统的总结,作为结束。
针对8086CPU
1、数据传送指令
比如mov、push、pop、pushf、popf、xchg等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送
2、算术运算指令
比如add、sub、adc、sbb、inc、dec、cmp、imul、idiv、aaa等都是算术运算指令,这些指令实现寄存器和内存中数据的算术运算。他们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位
3、逻辑指令
比如and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr等都是逻辑指令。除了not指令外,他们的执行结果影响标志寄存器的相关标志位
4、转移指令
可以修改IP,或同时修改IP和CS的指令统称为转移指令。分类如下:
4.1:无条件转移指令,比如jmp
4.2:条件转移指令:jcxz、je、jb、ja、jna、jnb等
4.3:循环指令,比如loop
4.4:过程,比如call、ret、retf
4.5:中断,比如int、iret
5、处理控制指令
这些指令对标志寄存器或其他寄存器状态进行设置,比如cld、std、cli、sti、nop、clc、cmc、stc、hlt、wait、esc、lock等都是处理器控制指令
6、串处理指令
这些指令对内存中的批量数据进行处理,比如movsb、movsw、cmps、scas、lods、stos等。若要使用这些指令方便进行批量数据的处理,则需要rep、repe、repne等前缀指令配合使用。
类似系列《汇编语言》的博客参考:
https://www.cnblogs.com/dennisOne/tag/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/
https://blog.csdn.net/u013018721/column/info/masm