分类:开发者手册 相关文章

汇编语言学习笔记(一):基础知识

前言 此文章如出现歧义或错误的地方请谅解,这篇文章是我在学习汇编的时候同时记录下来的笔记,然后通过教程的方式发表出来,因为通过这样的方式发表出来,可以锻炼自己的语言组织能力,并且能够把问题思考懂了,然后再通过初学者的角度来记录这片文章,从而巩固自己的知识。如果有任何错误歧义的地方,可以通过邮箱与我取得联系。 为什么学习汇编? 首先在现在用汇编语言来写用户层面上的应用是很少的了,当然也有一些应用比如驱动、boot loader等。既然已经很少有人用汇编写用户层面的应用了,但是为什么要学习?因为汇编语言是作用于硬件上工作的语言,有便于理解计算机工作的原理,以后学习高级语言更为有利,特别是对于反汇编……

继续阅读»»»

汇编语言学习笔记(二):寄存器

为什么要了解寄存器 为什么了解寄存器?因为CPU是计算机的大脑,可以通过指令读写寄存器实现对CPU的控制,你试想一下如果你的大脑不能控制只能控制手和脚等,不就等于扯线木偶了? 寄存器只是CPU内部的一个器件,对于汇编来说CPU中比较重要的三个器件: 运算器:对数据进行处理 控制器:控制各种器件工作 寄存器:对数据进行储存 而在CPU内部,这三个器件包括其他器件都是靠CPU内部总线相连,这里的内部总线是指的CPU内部器件的总线,而上一章节说的总线是CPU与外部器件比如显卡、内存等器件的总线。 8086CPU 每个CPU寄存器和结构都是不相同的,而王爽《汇编语言》第三版主要讲的是在8086CPU上……

继续阅读»»»

汇编语言学习笔记(三):初识Debug

什么是Debug?Debug是DOS、Windows提供的8086程序调试工具,可以查看CPU各种寄存器的内容,内存情况和机器码级跟踪程序的运行。 Debug一共有20多个命令,但我们在目前为止会使用到Debug的6个命令: R命令:查看、改变寄存器的内容 D命令:查看内存中的内容 E命令:改写内存中的内容 U命令:将内存中的机器指令翻译成汇编指令 T命令:执行一条机器指令 A命令:以汇编指令的格式向内存中写入一条机器指令 Windows下的Debug 在Windows下自带提供了Debug,可以直接通过Window提供的DOS进入到Debug,可以通过开始命令,输入cmd然后进入到DOS界面……

继续阅读»»»

汇编语言学习笔记(四):寄存器[内存访问]

内存中字的储存 在8086CPU中,寄存器为16位,可以储存一个字(1Word=2Byte),拿ax来说,低8位放在al中,高8位放在ah中。 在内存单元一个内存单元只能存储一个字节,那么如果存储一个字型数据就会用到两个内存单元,低8位放在低地址当中,高8位放在高地址当中,比如下图中,储存了两个字型数据,一个是4E20H,一个是0012H,它们的存放数据大概如下: 而当连续两个内存单元储存的是一个字型数据的时候,可以将这字型数据的起始地址称为N地址字单元,比如00001内存单元和00002内存单元,可以直接称为00001地址字单元。

HTML表格的加载优化

在HTML设计数据展示的时候会经常使用到HTML表格来展示数据,但是如果数据量过大,就导致表格显示慢,因为在HTML中,表格的显示是需要等待内部所有数据都加载完毕才会显示整个表格,这样对用户体验很不好,比如下面这样: <table border=”10px” width=”500px”> <caption>test</caption> <tr> <th>加载本地数据</th> <th>加载本地数据</th> <th>加载本地数据</th> <th>加载本地数据&l……

继续阅读»»»

Python头部注释

#!/usr/bin/env python3 # -*- coding: utf-8 -*- 在刚开始学习Python的时候遇到了上面的疑问,这些疑问感觉很奇怪,应为对于Nodejs这样的语言,这些问题是不会存在的,后来了解了一下关于这些疑问,觉得还是非常有用。 比如在Nodejs当中我用高版本新特性的Node写了一段程序,我只能在文件中说明这是使用什么版本的Node,但是如果用户无法注意到这个问题,很有可能他电脑里面使用的是低版本的Node,可能就会发生错误,而Python如果这样声明了过后就会解决掉这个问题。 默认脚本语言解释器 一般在python文件中第一行都有一个注释,上面指定了这个脚……

继续阅读»»»

Anaconda入门教程

Anaconda是什么? Anaconda可以理解为Python的软件发行版,可以用来管理包、环境,但是Anaconda主要针对于数据科学。 Anaconda附带了conda、Python以及150和科学有关的包及其依赖包,其中由conda负责管理包和环境,由conda安装的包会自动去安装依赖包,所以只知道需要安装的包叫什么名字,而不用去管这个包依赖的有哪些包。 Conda和pip的区别在于都是包管理器,但是conda还提供了环境管理,什么是环境管理呢? 你可以把它想象为虚拟机,每个虚拟机都有一个独立的环境,互相可以安装不同版本的软件,比如说我虚拟机1安装word2007,虚拟机2安装word……

继续阅读»»»

Python函数参数

位置参数 位置参数是指定了多少参数,就必须输入多少参数,否则就会报错。也可以把位置参数理解为必须参数,如果没有输入同等的参数,就会报错,比如下面的代码,计算两个数的乘积。 def power(x,y): return x * y power(2,5) # 10 power(2) #报错 默认参数 默认参数指的是可以给一个参数设置一个默认值,如果用户没有输入这个参数,那么在函数内部就会用这个参数设置的默认值进行计算,比如说下面的函数是返回两个数的乘积,如果用户没有输入第二个数,就默认为数值’2’。 def power(x,y=2): return x * y power(2,5) # 10 po……

继续阅读»»»

Python 列表生成表达式

如何生成列表? 先试想一下,如果你需要生成1-50的数值列表,如果没有列表生成式你将会这样来做: x = [] i = 1 while i <= 50: x.append(i) i += 1 还有一种方法就是通过range函数生成整数数列,然后通过list函数生成一个列表返回,大概操作如下: list(range(0,50)) 当然range函数提供了第三个参数,用于设置步数,你可以理解为间隔数,比如我只需要返回0-50中的偶尔,那么我用range生成的数列需要每隔两个数生成一个: list(range(0,50,2))

Python生成器

什么是生成器(generator)? 在Python中提供了一种名为generator的对象,他是通过next函数去中断执行并且generator对象具有Iterable对象,也就是说可以用于for循环,generator最大的作用是按需生成值,这个是什么意思呢?当我们需要一组元素很多的列表的时候会占用很大的内存,比如你需要生成一组从0-100000的列表,那么这个列表的长度将有10万,这是多么大的列表?如果比这个数值更大呢?那么很大一部分内存都将用来保存这个列表。 list(range(100000)) 类似于上面这样的情况,我们可以用generator对象来按需生成数值来供我们处理,你可以……

继续阅读»»»