IBM-PC汇编知识总结

IBM-PC汇编知识总结

这里只是做一个简单的框架梳理,不填充内容了,复习着发现这学期复习策略还是错的,老是想玩点花的,但是事实证明还是陪了我12年的学习方式,那种应试的复习才更适合我。

一、汇编基础

80x86计算机组织

Ⅰ.简介

本学期汇编的所有内容都是在以8086cpu为核心的pc上学习的。

80x86是什么?80x86是一个Intel从1978年开始推出的处理器系列,也就是跟我们现在用的Core酷睿i3 i5 i7系列类似的处理器系列。

这是个非常有趣的问题,多说两句。

处理器架构和指令集的区别是什么?为了下面的扩展—处理器架构指的是处理器的硬件架构,设计处理器架构从硬件电路的层面实现指令集的操作而指令集指的是一堆二进制机器码,是最最底层的(从由硬件电路实现便可以看出)计算机指令。我们知道,高级语言(C/C++)→汇编语言(ASM)→机器语言(01),指令集对应的就是由高级语言/汇编语言翻译而成的语言。

一句话,指令集是设计CPU选择的最底层语言,处理器架构是CPU的硬件电路设计,是语言(指令集)的实现。

另外,要将汇编语言,处理器架构,指令集这三个层次的发展想象成三条时间线,从低到高来说—指令集的发展是最关键的,我所知道的有x86,基于RISC的ARM,还有现在i7用的SSE4.x;而处理器架构就变动很多,同一个系列的cpu,用着同样的指令集SSE4.x架构就不同,比如我的i7-7700使用的是Kaby Lake,而同系列i7-6700的六代cpu用的是Skylake架构,Kaby Lake即为Skylake的升级版;汇编语言是为了指令集助记诞生的,那么当然汇编的种类和指令集、架构息息相关,最容易区分的是汇编语言风格,Intel/AT&T。

以上是铺垫知识,网络上的很多博客和科普说法都很不严谨,如若我的表述有误望不吝指正。

最后正式谈到80x86,80x86是一个处理器系列,最开始Intel给cpu命名的时候,都起名为8086 80186 80286 80386 80486,因为起名都是80x86的形式,所以将系列就称为80x86,并且将系列所采用的指令集,称为x86,之后因为注册商标不能用数字,所以Intel才改叫Pentium(/pro/Ⅱ),Pentium一代其实就是80586,这八代cpu使用的都是x86指令集。

那个时候只有Intel给其他厂家授权才能使用x86指令集生产自己的cpu,直到后来,ARM基于不同于x86(CISC)的RISC做出自己的指令集,AMD(YES)也在1999年推出了自己的64位指令集,在Intel32位的x86基础上扩展出64位的x86-64,制造出他们历史上最成功的一系列cpu,而Intel也放弃了他们的 IA-64 ,转而使用AMD64(x86-64和IA-64的区别就在这), IA-32 (x86-32)自此成为过去式。

Ⅱ.寄存器组
Ⅲ.存储器

(联系段寄存器)

二、80x86的指令系统和寻址方式

1.80x86的寻址方式

一种是与数据有关的寻址方式,用来找到操作数;另一种是和转移地址有关的寻址方式,用来JMP和CALL进行程序流程控制。

(后面也要和前面来结合分析)

2.80x86的指令系统

总结一下所有的指令:在这里总结,然后分开分析寄存器等相关知识。

Ⅰ.数据传送指令
Ⅱ.算术指令
Ⅲ.逻辑指令
Ⅳ.串处理指令
Ⅴ.控制转移指令
Ⅵ.处理及控制与杂项操作指令

三、汇编语言程序格式和设计模式

1.伪指令

2.程序格式

3.分支和循环设计

4.子程序结构设计

5.宏汇编

四、中断

1.BIOS中断

2.DOS中断

3.两者交叉点

分别从键盘I/O,显示器I/O,打印机I/O,串行通信口I/O这四个方面再来共同理解两者的作用,主要是理解不是写出来。

五、汇编实践

图1 将视频切片为图片,逐帧放入文件夹中

图2 图片示例

图3 使用python按照固定的命名格式和输出格式将图片转变为字符画(notepad++显示不好)

转化原理:使用灰度值公式将像素的 RGB 值映射到灰度值:gray = 0.2126 r + 0.7152 g + 0.0722 * b。

图4 使用C模拟想要达到的结果,但是C输出刷新很慢,不如ASM效果好

图5 最后使用汇编实现

图6 C结果

图7 汇编结果

之后会将视频和代码上传。
http://v2beach.cn:9000/file/bad%20apple/ (已失效)
上传到github的时候手贱discard changes把代码弄丢了一些,剩下的都放在这儿了。(天呐这可真是危言耸听)(怎么会有这么难过的事情)(这一定不是发生在中国)

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×