汇编语言2(mooc)】的更多相关文章

伪指令没有:冒号.…
20125133 马国祥 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 对Linux系统的理解及学习Linux内核的心得: Linux是一个极为庞大的,由C与汇编语言写成的操作系统. Linux分开内核态和保护态,内核态拥有最高的访问权限,常常帮助用户态进程实现功能. Linux创建新进程的代码十分的漂亮,fork()函数和execve()函数创建进程的方式是把父进程的复制一遍再破…
Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 编写songchenning5315.c文件 图2 将c文件汇编成32位机器语言 图3 将.s文件中的链接语句删除,获得最后的汇编代码 二.分析堆栈变化情况 三.总结 阐明对“计算机是如何工作的”的理解. ①计算机是依据冯诺依曼体存储结构,依据其核心思想——存储程序计算机工作模型,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作. ②从硬件的角度看,是通过总线连接C…
大家好!    我是来自山东师范大学的吴乐.    今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第一单元学习了一些基本的汇编语言 现在我分享一下我的学习历程,本次课程的目的是通过反汇编一段简单的小程序学习基本汇编指令. 不废话了,上图    第一步: 首先在Code目录中编写一段简单的C语言小程序,不涉及输入输出,代码如下. int g(int x) { return x + 1; } int f(i…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [操作系统是如何工作的]   教学内容重要部分整理总结 1.三个法宝:存储程序计算机.函数调用堆栈.中断机制. 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构. 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能.(函数参数传递机制和局部…
Linux内核设计(第一周)——从汇编语言出发理解计算机工作原理 计算机工作原理 汇编指令 C语言代码汇编分析 by苏正生 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 从2月22日起,本学期的linux课程开始了.通过这两天的学习,觉得孟宁老师讲的真不错,条理清晰,举例适当.本周从计算机工作原理出发,回顾了冯诺依曼计算机结构,也回顾了汇编寄存器.汇编指令.C语言程序的汇编分析技巧,很…
做了一单片机设计,要用C语言与汇编语言同时实现,现将这次设计的感受和收获,还有遇到的问题写下,欢迎感兴趣的朋友交流想法,提出建议. 单片机设计:基于51单片机的99码表设计 软件环境:Proteus8.0 + Keil4 要求:1,开关按一下,数码管开始计时.2,按两下,数码管显示静止.3,按三下,数码管数值清零. C语言程序如下: #include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar shi…
线性表及其表现 第二章的内容是关于三种最基本的数据结构 结合<DDSA>第三章 表.栈和队列做一个总结 首先简单说明一下各个数据结构的特点: 数组:连续存储,遍历快且方便,长度固定,缺点是删除和添加数据需要移动(1,n)个数据,时间复杂度高 链表:离散存储,添加和删除方便,空间和时间消耗大,双向链表比单向的灵活,但是空间耗费也更大 Hash表:数据离散存储,利用hash 算法决定存储位置,遍历比较麻烦. 二叉树: 一般的查找遍历,有深度优先和广度优先两种,遍历分前序.中序.后序遍历,效率都差不…
做一些笔记记录自己的学习过程 第一节课介绍了数据结构的基本概念,首先没有直接给出相关的定义而是通过思考如何在书架上摆放书籍这样一个简单的类比了解到数据的组织方式的重要性,并通过printN函数的循环实现和递归实现的差异来说明解决问题方法的效率跟空间的利用效率有关,计算多项式在某一个给定点处的值来说明解决问题方法的效率与算法的设计有关. void PrintN(int N){int i; for (i=1;i<=N;i++){ printf("%d\n",i);}return;}/…
缩写原意: Overflow of = OV NV [No Overflow] Direction df = DN (decrement) UP (increment) Interrupt if = EI (enabled) DI (disabled) Sign sf = NG (negative) PL (positive) Zero zf = ZR [zero] NZ [ Not zero] Auxiliary Carry af = AC NA [ No AC ] Parity pf = P…
15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候我们说过,一个程序他可以有很多个任务,特权级指的是任务的不同部分的特权级,一个任务可以有两个空间,一个全局空间,一个局部空间.在一个任务内,全局空间和局部空间具有不同的特权级别,使用门,可以在任务内将控制从3特权级的局部空间转移到0特权级的全局空间,以使用内核或者操作系统提供的服务. 任务切换时以任…
在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的某些执行结果: 2)用来为CPU执行相关指令提供行为依据: 3)用来控制CPU的相关工作方式.…
C语言代码内嵌汇编的方法: 在C语言文件中以如下格式加入汇编代码 __asm__( “汇编语句模板” :输出部分 :输入部分 :“破坏描述部分” ) asm可以由__asm__代替,为其别名. 可加上__volatile__表示不需要编译器优化代码. 用双下划线起始或结尾. 所有汇编语句在双引号内,并以\n\t结束每一行. $后跟立即数. 寄存器用%%+寄存器名表示:%%eax 参数用%+参数序号表示:%0 , %1 ... 输入输出部分跟在语句后,用()表示,每一行前有“:”符号 参数序号与参…
继续开发 ; hello-os ; TAB= ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称 DW ; 每个扇区(sector)的大小 DB ; 簇(cluster)的大小 DW ; FAT的起始位置 DB ; FAT的个数 DW ; 根目录的大小 DW ; 该磁盘的大小 DB 0xf0 ; 磁盘的种类 DW ; FAT的长度 DW ; 1个磁道(track)有几…
(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接的过程中发现出现的错误如下: 链接时出现Undefined symbol ‘_main’ in module c0s 这样的错误信息,可能main函数与c0s.obj这个文件有关系. 这时我们想,C语言编译之后的文件后缀名是什么?是.obj.那汇编语言编译后的文件名是什么?也是.obj.这两个文件有…
汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 二.内存窗口 三.寄存器窗口 四.监视窗口 常用调试命令 字符串输入.输出 printf sprintf scanf 常用Windows API调用 MessageBox 确定函数的声明语句和库文件 读取CPU标识 WinDbg调试工具 实验题:用MessageBox函数显示CPU信息  源自:h…
一.寻址方式 1.概念: 一条指令由操作码和操作数构成,操作码是系统定义好的符号,执行指定的操作,操作数即是指令的对象,而寻址方式就是操作数的指定方式 操作码 目的操作数,源操作数 2.寻址方式的三种情况: (1)CPU中(2)储存器(3)I/O中 3.寻址方式分类 (1)隐含寻址: 指令中只有操作码没有指定的操作数,但是根据操作码就可确定相应的操作数 MUL BL; DIV BL; (2)立即寻址: 指令中直接给出要操作的数 ADD AL, 立即寻址只能用在源操作数上 (3)寄存器寻址: A.…
第1章 汇编语言工具概述 TMS320C54x DSP的汇编语言开发工具包括: ■  Assembler      ■  Archiver      ■  Linker      ■  Absolute lister      ■  Cross-reference utility      ■  Hex conversion utility      ■  Mnemonic-to-algebraic translator utility 本章将概要介绍上述工具在软件开发流程中如何协调工作,并对每…
第一章 汇编器链接器:汇编器将汇编语言翻译成机器语言,链接器将单个文件合并为可执行文件 intel 80X86系列处理器的汇编语言与VAX或者motorala 68x00等系统的汇编是否相同?不相同,汇编语言和CPU指令集是密切关联的,每种CPU体系对应不同的汇编. 什么是设备驱动程序:将操作系统的通用命令转化为对硬件具体细节实现的程序 常规机器语言指的是第二层 一条机器语言会被翻译成几条微指令,微指令是商业机密 高级语言会被解释成汇编语言,汇编语言被解释成机器语言(第二层),由操作系统(第三层…
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 16开 编辑推荐 畅销10年,经典再现! 本书第1版出版至今已经10年多了,第3版出版至今也已经3年多了,期间笔者收到了大量的读者来信,对本书提出了各种意见和建议,综合各方面的考虑,典藏版做了以下改进. ●     对第3版中已知的错误进行了修正,包括一些排版错误.错别字和例子中的Bug. ●    …
1.开发工具 在汇编语言中,用到的工具主要用下面几个: 汇编器.连接器.调试器.编译器 由于我在这里的是AT&T汇编语言.所以工具下也都是gnu下的那些. 1.1 汇编器(as) 汇编器有非常多,masm,nasm,gas等,不像高级语言,尽管都叫汇编语言.但不同的汇编器,其语法是存在非常大不同的.Intel汇编的书籍到处可见,但是AT&T的却少之又少.但想看Linux内核的话,还是要对AT&T汇编熟悉才行.这或许是自己为什么学习汇编的原因吧.说到汇编器,我们用的是as,其可选參数…
我的首个MOOC课程<面向对象软件开发实践> 我将在网易云课堂开讲MOOC课<面向对象软件开发实践>(http://mooc.study.163.com/course/YOOKCS0014-1000003016#/info),这门课程分为三个子系列,2014年12月上线第一系列,其余子系列将于2015年上半年上线. 欢迎感兴趣的朋友参与,共同学习. 金旭亮 2014.11.12…
本文地址:http://www.cnblogs.com/archimedes/p/assembly-register.html,转载请注明源地址. 本文主要将介绍的是8086 CPU中的寄存器, 寄存器就是个存储信息的单元或者说是器件又或者说是容器而已,就比如内存也是一个存储介质或者说是存储单元而已,其实寄存器从理解上来说和内存差不多, 只不过寄存器(这里讨论的寄存器都是 CPU 中的寄存器,不包括外设上的寄存器)位于CPU内部,寄存器是 CPU 中的稀有资源,而对于一个汇编程序员来说,CPU…
在罗云彬的<Windows环境下32位汇编语言程序设计>中第321页 ... .const szAllowedChar db '0123456789ABCDEFabcdef',08h ... .code _ProcEdit    proc    uses ebx edi esi hWnd,uMsg,wParam,lParam         mov    eax,uMsg         .if    uMsg ==    WM_CHAR             mov    eax,wPar…
HLA高级汇编语言环境的搭建与设置 我的操作系统:WINDOWS7 需要下载的东西:MASM32:http://www.masm32.com/masmdl.htm  HLA:http://webster.cs.ucr.edu/ MASM32和HLA你可以随意安装在任何目录,最好不要安装在带空格的目录下.然后复制MASM32\bin目录下的ml.exe, ml.err, link.exe, mspdb50dll到hla目录下.然后把hla目录加入到系统的环境变量中就OK啦!然后编辑环境我们就随便选…
转自:Uboot中start.S源码中指令级的详尽解析 green-waste为何 C 语言(的函数调用)需要堆栈,而汇编语言却需要堆栈之前看了很多关亍uboot的分析,其中就有说要为C语言的运行,准备好堆栈.而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有堆栈指针初始化这个动作.但是,从来只看到有人说系统初始化要初始化堆栈,即正确给堆栈指针sp赋值,但是却从来没有看到有人解释,为何要初始化堆栈.所以,接下来的内容,就是经过一定的探究,试图来解释一下,为何要初始化堆栈,即:…
1.C嵌套汇编 首先说一下关于GCC编译嵌有汇编语言的c语言吧,GCC编译的汇编语言不是我们上课时学的Intel x86汇编,而是AT&T汇编,两者的区别可以查看<Gcc使用的内嵌汇编语法格式小教程>. 下面是内嵌汇编的格式:语法:__asm__(“instruction ……  instruction"); //Linux gcc中支持(注意asm的下划线均为两个否则GCC将会无法编译.) __asm{ instruction instruction }:   //ADS中…
Xcode 上部的菜单拦: Product -> Debug Wokflow  下的菜单中,将“ Always Show Disassembly ”的勾去掉.(勾上的意思是用汇编语言进行Debug)…
汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. CPU执行ret指令时,进行下面的两步操作: (1)(IP) = ((ss)*16 +(sp)) (2)(sp) = (sp)+2 CPU执行retf指令时,进行下面四步操作: (1)(IP…