汇编学习小结

16位汇编语言的学习小结 前言:前一段时间一直在学习汇编语言,使用的书籍就是最经典的王爽那本书,现在也学习到了一个阶段,想着是不是把学了东西做个小结。 一些不容易弄明白的概念 1.  16位、32位、64位机和三大总线的关系     众所周知,CPU和外部芯片做信息交互必须使用三大总线:地址总线,数据总线,控制总线。     这三大总线相对于CPU来说可以称为外部总线,CPU内部由运算器(处理信息)、控制器(控 阅读详情
【基础概念:】
汇编指令,是机器指令的助记符,每一种CPU都有自己的机器指令集。
汇编,程序员用汇编语言(汇编指令)编写源程序,汇编编译器将其编译为机器码,由计算机执行。


【计算机常用计量单位:】
bit(位) byte(字节) kb(千字节) mb(兆) gb(千兆字节) 
一般以字节(byte)作为计算机存储容量的基本单位,一个字节是八个二进制位(1Byte=8Bit),共有2^8=256种电路状态。


怎么去理解计算机存储容量呢?
1):生活中,大家常说我下载了一个1MB的文件,那这1MB在平常人理解看来是什么样呢?
我想对于普通PC用户来说,1MB仅仅就是数字上的概念,比kb大,比gb小,用常用的数学概念来理解存储容量以及文件大小。


2):程序员眼中的1MB是什么样子呢?
1MB就是很多二进制位,计算机中所有信息都是以二进制方式表示的,其它的计量单位都是方便描述存储容量的。
具体是多少二进制位呢?
用规定好的转换规则进行转换得到: 1MB=1x1024=1024(kb) x 8 = 8192bit(位)。
1bit有两种电路状态,用二进制表示就是0和1。那么8192bit有2^8192次方个电路状态。


3:)计算机中的1MB,
可以简单分为内存中的1MB跟硬盘中的1MB。内存中暂时存储的数据跟硬盘中存储的数据都是一些二进制数据。

如果继续往下分,还可分为磁电存储介质中的1MB,可见,越往上越抽象,越往下越具体,一切事物的发展方式都是如此,不断地向上抽象。(个人理解)

我认为程序员应该在脑海里形成一种认识,你写的程序,对于计算机来说,都是一些二进制数据(0,1的不同排列组合)。
计算机将其转变为一系列高低电平,使计算机的电子器件受到驱动,进行运算。


附:
1.磁盘的工作原理是利用特定的磁粒子的极性来记录数据。磁头在读取数据时,将磁粒子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反


2.在计算机中,广泛采用的是只有"0"和"1"两个基本符号组成的二进制数,
而不使用人们习惯的十进制数,原因如下: 
(1)二进制数在物理上最容易实现。例如,可以只用高、低两个电平表示"1"和"0",也可以用脉冲的有无或者脉冲的正负极性表示它们。 
(2)二进制数用来表示的二进制数的编码、计数、加减运算规则简单。 
(3)二进制数的两个符号"1"和"0"正好与逻辑命题的两个值"是"和"否"或称"真"和"假"相对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利的条件。 


要说信息量,二进制实际并不大。采用二进制表示有以下优点:1、易于物理实现2、运算简单3、机器可靠性高4、通用性强四个特点。 


【何为CPU?内存用来干嘛?】
何为CPU(Central Processing Unit),有人把CPU比作人脑,它控制其他器件进行工作,
大脑通过神经来控制,而CPU则通过线路传输电信号来控制,以此驱动其它部件开始工作。
人脑有记忆跟学习功能,CPU则通过存储器来暂存数据,通过自己的指令集来实现简单的逻辑运算以及控制系统。


【怎样理解计算机程序?】
对与计算机来说:
  程序就是0跟1不同顺序的排列组合。


对于汇编语言来说:
  程序就是指令跟数据的集合。


对于高级程序语言来说:
  程序=算法+数据结构。


【编程到底是在做什么?】
计算机的基本组成:运算器,控制器,存储器,输入输出设备。
软件:就是计算机数据跟指令的集合!
CPU:执行计算机指令以及处理计算机软件中的数据。
进一步说明,编写程序,就是让CPU去执行我们写的一段实现某个功能的代码[数据跟指令]。






写总结:跟记笔记不一样,不应该像记笔记那样,抄写重点,应该用学到的知识组织自己的语言来描述你的理解以及你想表达的东西。
这样做的好处是,可以加强你对知识的理解以及思路的整理。
数据结构与算法大全 主要有以下的课件和pdf 1.杭州电子科技大学数据结构 2.数据结构-林大 3.数据结构与算法-合肥工大 4.数据结构-试题库 算法与数据结构_严蔚敏版_全部课件.ppt 数据结构与算法(JAVA语言版).pdf 数据结构与算法(JAVA语言版解密).pdf等 立即下载

相关推荐

NRF52832串口通信避坑指南:从SDK配置到硬件流控(RTS/CTS)实战

本文详细介绍了NRF52832串口通信的实战指南,从SDK配置到硬件流控(RTS/CTS)的完整实现。通过分析UARTE模块特性、解决SDK版本差异问题、正确配置硬件引脚以及实现稳定通信的代码示例,帮助开发者避开常见陷阱,确保高效可靠的串口通信。特别强调了硬件流控在高速通信中的重要性及其实践方法。

weixin_33739646的博客 280

怎么使用计算机二进制数,在计算机中为什么使用二进制数

1 在计算机中为什么使用二进制数在计算机中,广泛采用的是只有"0"和"1"两个基本符号组成的二进制数,而不使用人们习惯的十进制数,原因如下:(1)二进制数在物理上最容易实现。例如,可以只用高、低两个电平表示"1"和"0",也可以用脉冲的有无或者脉冲的正负极性表示它们。(2)二进制数用来表示的二进制数的编码、计数、加减运算规则简单。(3)二进制数的两个符号"1"和"0"正好与逻辑命题的两个值"是"和...

weixin_42522275的博客 1986

光谱数据计算CIE值(三刺激值、CIE1931、CIE1976、CCT)软件

软件界面如下,免安装,拷贝即可使用 导入光谱数据即可计算三刺激值、CIE1931、CIE1976、CCT CIE1931、CIE1976色坐标图形只管显示 导入的光谱数据格式如下,txt文本 波长380到780,间隔1nm 注意:缺省的数据默认写0即可 下面为一些CIE相关介绍: CIE(国际发光照明委员会):原文为Commission Internationale de L’Eclairage(法)或International Commission on Illumination(英)。这个委员会创

业余程序员小徐的博客 2万+

数据结构与算法之从汇编语言角度探讨全局变量和局部变量,形参(数据段和系统堆栈)

关于局部变量和形参变量我们将从汇编的角度来讨论这个问题 首先看c语言代码: #include <stdio.h> int globolVar = 100; // 100对应的十六机制为64H int functionOne(int formalVarInt, int formalVArShort); int functionOne(int formalVarInt, int fo...

James201904的博客 744

自适应滤波算法综述

自适应滤波算法综述

xdzhujy的博客 5万+

AI训练加速30%!用numactl玩转多显卡绑核的隐藏技巧

本文深入探讨了如何利用Linux系统的numactl工具,通过精确的NUMA绑核策略优化多GPU AI训练性能。文章详细解析了NUMA架构对性能的影响,提供了从拓扑探查、命令实战到多卡脚本化部署的完整指南,并分享了性能验证与常见陷阱,帮助开发者实现高达30%的训练加速。

web99的专栏 448

汇编语言数据结构

书名:汇编语言数据结构作者:王增才

hn911的专栏 1566

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

X86汇编学习小结

X86汇编学习小结 生成汇编代码 比如,一个简单的函数: // hello.c void func(){} 如何得到相应的汇编代码呢? gcc -S hello.c hello.s clang -S hello.c hello.s gcc -S -masm=intel hello.c

JK198310的专栏 768

一文弄懂Word2Vec之skip-gram(含详细代码)

目录 前言 一、什么是Skip-gram算法 二、目标是什么 三、定义表示法 3.1 one-hot向量 3.2 词向量(word vector) 3.3 单词矩阵 3.4 单词相似度 3.5 softmax函数 3.6算法过程 3.7 求softmax 四、skipgram代码实现 4.1 如何把词转换为向量 4.2 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 4.3 使用Pytorch实现Skip-gram .

Python,数据分析,机器学习,深度学习 1万+

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9109

汇编语言学习小结

汇编语言是仅次于机器语言的底层语言,学习汇编语言可以让我们更好的理解CPU的工作方式和原理,可以帮我们更好的写好高级语言 我们通常使用的C,C++,C#语言都是基于汇编语言的高级语言。通常这些高级语言在机器中变为可执行文件的时候,都会经历以下几个步骤预处理(头文件引入,宏替换,内联函数替换等) 编译(编译器会对文件进行语法检查) 汇编(会将上述高级语言转换为汇编语言 mov,add,sub

elfprincexu的专栏 839

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

蓝凌EIS智慧协同平台frm_form_upload.aspx接口存在任意文件上传漏洞

nnn2188185的博客 357

8086汇编常见寄存器与指令

本文为学习书籍《汇编语言(第4版)》后的小结。

程序猿的成长笔记 537

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汇编学习小结(2)

什么是汇编 汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言,它是最接近与机械语言的编程语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 什么是寄存器 由于后面的学习,我们会讲到寄存器,所以我就先在这里讲解一下什么是寄存器吧。 寄

weixin_53409153的博客 374

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

汇编程序学习小结

经过今天下午的努力,终于是把这个上机实验程序给弄懂了,现在我自己来总结一下,希望对和我一样初学汇编的朋友们有所帮助: 原程序如下:Assembly code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->A

Paradise Isle 1004

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

小菜汇编基础和学习技巧小结(一)

以下小结纯属小菜自学过程产生的dump,大神请飘过!     汇编是一门庞大复杂的学问,在计算机的世界里差不多无所不入。很多编程领域都会或多或少跟汇编打交道。本人不是科班出身的程序员,所以很多基础都为零,学历也很低。因此学习汇编的难度可想而知。不过还是凭自己的耐力,掌握了少许的知识。下面做个小小的总结,分享给和我一样想入门汇编的朋友们。    1.参数直接传值和传入数值变量的区别

102

64位汇编移植小结 (学习学习)

这里的移植工作主要针对从32位x86cpu向intel及amd的64位cpu以及 xinxp64平台。编译环境为vs 2005.net,并且主要涉及汇编语言的移植。所用汇编语言编译器为yasm。 因为对于C语言,在vs2005.net环境下可直接进行64位平台的编译,其中注意事项已有许多文章涉及,这里不再复述。 A、而对于汇编语言,首先要注意,必须为纯汇编格式(*.asm文件)或intrins

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 745

[从零学习汇编语言] - 数据处理小结

文章目录前言一、寄存器小结1. BX,SI,DI,BP二、数据处理1. 立即数(idata) 前言 点赞再看,养成习惯! 该系列博文基于王爽老师 <汇编语言 第四版> 一书,需要的同学链接自取: 链接:https://pan.baidu.com/s/1NAgD1Z15LtK1BuH92xmICA 提取码:xlzb 另外书中提到的DosBox软件不想去官网下载的小伙伴也可以自取: 链接:https://pan.baidu.com/s/1O6PnLb_hN-WUS2avicNpcw 提取码

xiaoai1994的博客 770

8086汇编学习小结———实时更新

  初学IBM-PC 8086,对INT指令不是很理解。现从网上总计如下: 表:DOS系统功能调INT 21H AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀   01 键盘输入并回显   AL=输入字符 ...

weixin_30337157的博客 170

X86汇编学习小结----cmp 完整版本

生成汇编代码 比如,一个简单的函数: // hello.c void func(){} 如何得到相应的汇编代码呢? gcc -S hello.c hello.s clang -S hello.c hello.s gcc -S -masm=intel hello.c

Jason.liu的博客 6237
上一篇: 段寄存器的引用
下一篇: 为什么Java中byte类型的取值范围是-128~127
flowciyu
博客等级 码龄15年 65粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值