口袋社区-Poke The BBS's Archiver

xyz小智 发表于 2018-3-6 21:12

汇编语言学习笔记

好久没来ptb了,几年不见,进来之后一时之间也不知道要发些什么贴子好,正巧最近有学习编程的心思,所以决定在编程乐园开个贴子,不仅能赚宠物奶粉钱,还可以造福大众增加自己的学习动力,何乐而不为?嘛,在此之前我其实也有一定程度地接触Fortran,VB和批处理的程序编写,这次想要更深刻地接触一下程序相关的世界,所以选择汇编语言作为我正式学习的第一门编程语言,反正都是兴趣使然我也懒得管实用不实用的问题了,贴子会不定期更新,嗯,看我的学习进度而定吧。

xyz小智 发表于 2018-3-7 00:51

在学习汇编语言之前首先要了解一下机械语言,所谓的机械语言就是机械指令的集合,用语言这个词真的很妙啊,听起来有种镰仓时期的阴阳师安倍晴明用咒语驱动识神的感觉。

xyz小智 发表于 2018-3-7 00:54

早期的程序设计使用的是机械语言,程序员把0、1数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再把程序通过纸带机和卡片机输入计算机,进行运算。
动画电影《尸者帝国》所使用的就是这种原始的机械计算机。

xyz小智 发表于 2018-3-7 01:00

应用8086cpu完成运算S=768+12288-1280
机械代码如下:
101110000000000000000011
000001010000000000110000
001011010000000000000101
光是这么一个简单的算式就有那么一长串二进制的数字,简直让人眼花,如果是更长一点的代码,真的是会把人逼疯的吧。

xyz小智 发表于 2018-3-7 01:02

所以,为了解决机械语言的蛋疼之处,应运而生的就是汇编语言。
汇编语言的主体是汇编指令。汇编指令和机械语言的差别在于指令的表达方法上。汇编指令是机械语言便于记忆和书写的格式,也就是所谓的简化写法?

xyz小智 发表于 2018-3-7 01:07

书上举了一个例子,指令1000100111011000表示把寄存器BX的内容送到AX中,汇编指令把它写成了mov ax,bx。
mov代表move ax,bx则代表两个寄存器。也就是说,是把机械语言代表的操作缩写标记,建立一一对应的映射关系。

xyz小智 发表于 2018-3-7 01:09

那么,当我们编程的时候,只需要写下那些直观的,代表操作缩写的汇编语言,然后采用编译器把它转换成机器码,就会变得省事很多。

xyz小智 发表于 2018-3-7 01:13

当然汇编语言反战到今天,并不是只有汇编指令这种机器码的助记符。
汇编语言大致分为三类。
第一类是汇编指令
第二类是伪指令,没有对应的机器码,由编译器执行,计算机不执行(所以这种指令是干嘛用的?不明白,之后再说吧)
第三类是其他符号如+、-、*、/等,由编译器识别,没有对应的机器码。
emmmmm
所以说主要有用的部分还是汇编指令吧?

xyz小智 发表于 2018-3-7 01:18

要学习汇编语言还需要了解一下存储器。
所谓的存储器就是内存,负责向cpu提供指令和数据然后,cpu才能进行运作和计算。
内存和磁盘不同,磁盘上的数据如果不读到内存里就不能被cpu使用。
emmm,看来还需要了解一下cpu和存储器的工作方式。

xyz小智 发表于 2018-3-7 01:27

指令和数据是应用上的概念,在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
所以1000100111011000可以看成大小89D8H的数据,也可以看成是指令mov ax,bx。
嘛,1000100111011000这串二进制数字转换成十六进制是89D8,而H代表Hex,也就是十六进制英语的简写。

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.