从0开始的汇编语言(七)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
我们使用(地址或寄存器名称)表示一个寄存器或一个内存单元的内容,()内地址是且一定是物理地址
我们将idata视作常量
话不多说我们马上开始。
AND和OR指令今天的开场比较直接,我们要学习一下and和or指令,因为我们想有一种更为灵活的定位内存地址的方法和相关的编程方法,话不多说开干!
我们来看一下and指令,and指令是逻辑与指令,按位进行与运算,例如:
12mov AL,01100011Band AL,00111011B
这两个指令运行后的结果是(AL)=00100011B,可以通过and指令设定操作对象的相应位为0,其余位不变。
比如AND AL,10111111B 设置了AL的第6位为0。AND AL,11111110B设置了AL的第0位为0。
之后我们来看 ...
从0开始的汇编语言(六)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
我们使用(地址或寄存器名称)表示一个寄存器或一个内存单元的内容,()内地址是且一定是物理地址
我们将idata视作常量
话不多说我们马上开始。
包含多个段的程序在学习这一章之前,我们也写了不少程序了,但这些程序都是只使用了一个段的,就好像一个程序只有Main函数。这种写程序的手法是很低端的,一点都不符合我们高端程序员的身份,更何况万一我的程序需要其他地方放数据怎么办?在上一篇中,我们讲到了要使用一段安全的空间,但是那段空间只有256个字节大小,万一我们需要的空间大于256个字节怎么办?其实在操作系统的管控下,程序可以取得任意容量的内存,操作系统会为我们安排好。
程序获取空间的手段有两种,一种是在加载程序时为程序分配好,另一种是在程序执行的过程中向系统申请。第二种就是我们 ...
从0开始的汇编语言(五)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
我们使用(地址或寄存器名称)表示一个寄存器或一个内存单元的内容,()内地址是且一定是物理地址
我们将idata视作常量
话不多说我们马上开始。
对前言更新的解释相信小伙伴们都发现了,我们的老伙伴前言终于更新啦!!这次更新了两条第一条是使用(),第二条是idata,我们一一说明。
首先是(地址或寄存器名称),为了描述上的简洁以后我们就都用(地址或寄存器名称)来表示一个内存单元或者寄存器中的内容啦。比如(ax)就代表寄存器ax中的内容,(20000H)代表20000H处内存单元中存放的内容。至于()所得到的内容到底是字型数据还是字节型数据要根据具体的运算决定,()中可以出现三种元素:
寄存器名
段寄存器名
地址(注意这里的地址是且必须是一个物理地址)
所以(AX)、(D ...
从0开始的汇编语言(四)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
话不多说我们马上开始。
一个源程序的诞生oh!这是什么意思?一个源程序的诞生!没错,学到这里我们终于开始写我们的第一个完整的汇编语言程序了,用编译和连接程序将它们变成.exe文件。但在这之前我们还是先看看一个程序怎么诞生的吧。
第一步,程序员打开了文本编辑器(Edit,记事本等)写下了一行一行汇编指令。这一步生成了一个储存源程序的文本文件。
第二步,使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,这样就生成了可以在操作系统中直接运行的可执行文件。
Tips:可执行文件包括两部分:
程序(从源程序的汇编指令翻译过来的机器码)与数据(源程序定义的数据)
相关描述信息(比如,程序有多大,要占用多少内存空间等)
这一步生成 ...
从0开始的汇编语言(三)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
话不多说我们马上开始。
字节型数据与字型数据众所周知,字节与字之间存在着一种二倍的关系,也就是说2个字节就等于1个字。由于内存单元是字节单元,也就是说一个内存单元只存储一个字节,所以计算机使用两个连续的内存单元存储一个字。计算机将这个字的第八位放在低位内存单元中,将高八位放在高位内存单元之中。我们称起始地址是N的字单元为N地址字单元。
DS和[address]现在我们知道了计算机如何将一个字存储到内存单元之中,但是计算机又如何从内存单元之中取出一个字呢?这就要提到另一个段寄存器DS了。DS寄存器中通常存放着要访问数据的段地址。(Tips:物理地址=段地址×16+偏移地址)
例如我们想要读取10000H中的数据,我们就编写了如下的程序:
123mov BX,1000Hmo ...
从0开始的汇编语言(二)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
话不多说我们马上开始。
CPU内部组成通常一个CPU由运算器、控制器、寄存器等器件所组成,这些器件在CPU中中过内部的总线相互连接。
其中运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内部总线将它们相互连接,在它们之间进行数据的传递。
寄存器对于我们学习汇编来讲,CPU中最为主要的部件是寄存器,寄存器是CPU中程序员可以进行读写操作的部件。程序员通过改变寄存器的内容来实现对CPU的控制。
不同的CPU,寄存器的个数、结构不同。8086CPU有14个寄存器,每一个寄存器都有自己的名字:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
通用寄存器在8086CPU中所有寄存器都是16位的。其中AX、BX、CX、DX ...
从0开始的汇编语言(一)
前言从0开始的汇编语言系列,选用的参考书籍是清华大学出版社,王爽老师的《汇编语言第四版》。该系列属于博主的笔记系列,文中会采用一些书中的例子,图片以及思考题供读者阅读,如需详细学习汇编语言可以购入一本,谢谢。
学习之前我们做如下约定(随着学习深入还会出现新的约定):
十六进制数均以H结尾
使用8086CPU作为案例
话不多说我们马上开始。
初识汇编
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
早在计算机诞生之初,人们就开始使用机器语言和计算机进行交流了,因为计算机的硬件作为一种电路元件,其输入输出只能是高电平和低电平,所以计算机传递的数据是有“0”和“1”组成的二进制数。二进制的语言就是计算机语言的本质,所有的高级语言诸如JAVA,C++,C#等最终都会 ...
QT编译MYSQL驱动
前言在使用QT进行C++开发时,会使用到MySQL,但高版本的QT并不支持MySQL(主要因为没有驱动,具体这里的爱恨情仇,博主也不太了解),所以想在QT中使用MySQL要自行手动的编译出MySQL驱动。
准备工作在编译我们的MySQL驱动之前需要准备好如下的几项东西
1.QT2.MySQL3.QT源代码
QT下载好安装器后需要选择自己的组件进行安装,这里必须要有的就是这个sources组件,当然了如果不确定自己是否安装过sources组件或者需要安装可以打开QT安装目录下的MaintenanceTool进行修改。至于编译套件的选择看个人喜好,但一定一定一定要注意的事情是编译套件的位数必须和MySQL的位数一致否则后续的编译会失败!!这里博主以编译套件MinGW 11.2.0 64-bit为例子。(PS:一定要记得自己把QT安在哪里了呀!!)
MySQLMySQL只需要去官网下载最新版本即可戳这里进入MySQL下载界面
下载完成后第一个界面选择Custom
第二个界面中选择一个MySQL Server进行安装,官方为我们提供了8.0、5.7、5.6三个大版本可以选择
点开选择的MyS ...