汇编语言

《汇编语言》第二章总结

守給你的承諾、 提交于 2020-03-24 02:24:50
汇编语言(面向机器的程序设计语言) 第二章 信息的大本营——寄存器 CPU概述 一个典型的CPU由运算器、控制器、寄存器等器件组成。运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作。 内部总线连接各种器件,在它们之间进行数据的传送,实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。这个章节所介绍的寄存器是CPU中程序员可以用指令读写的部件,程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数和结构都是不同的。8086CPU有14个寄存器,每个寄存器都有对应的名称分别为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。 2.1 通用寄存器 8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。以AX为例,16位寄存器的逻辑结构如下图: 16位寄存器的逻辑结构, 其存放的无符号数据范围:0 ~ 2^16 -1 为了与早期CPU操作兼容,这4个寄存器均可拆分成两个8位寄存器单独使用,分别为AX分为AH和AL,BX分为BH和BL,CX分为CH和CL,DX分为DH和DL,下面以AX为例: AH和AL存放的无符号数据范围:0 ~ 2^8 -1 一个字由两个字节组成,可以存在一个16位寄存器中

《汇编语言(第二章)》课后小结

ε祈祈猫儿з 提交于 2020-03-24 02:22:34
通过本章的学习:了解通用寄存器,掌握字数据在寄存器中的存储,理解段的概念,了解段寄存器,掌握汇编指令mov, add和jmp的基本用法。 一个典型的CPU由运算器、控制器、寄存器等器件组成。内部总线实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。本课程内容介绍基于8086CPU, 8086是Intel系列中16位微处理器,地址总线20位。 CPU字长是指CPU在单位时间内能一次处理的二进制位数。该指标反映出CPU内部运算处理的速度。而位宽是指CPU通过外部数据总线与内存之间一次能够传送的数据位。 关于ISA,一个处理器支持的指令和指令的字节级编码称为它的ISA。不同处理器“家族”系列,有不同的ISA。同一系列里也有不同类型的处理器。虽然每个厂商制造的处理器性能和复杂性不断提高,但是不同的类型在ISA级别上都保持着兼容。 指令使用注意事项,(1) 在mov和add指令中,两个操作对象的位数应一致。(2)运算时超出寄存器表示的位数的情形,例如:设(AX) = 8226H, (BX) = 8226H,执行ADD AX, BX后, (AX) =044CH,本来8226H+8226H=1044CH,舍弃高位的1,最后取044CH。 8086结构表示物理地址的障碍,8086内部的寄存器都是16位的,而外部地址总线宽度为20位

汇编语言(王爽版)学习笔记 实验2 用机器指令和汇编指令编程

放肆的年华 提交于 2020-03-17 20:41:39
实验任务: 操作过程: 答: mov ax,[0] ; ax=C0EA add ax,[2] ; ax=C0FC mov bx,[4] ; bx=30F0 add bx,[6] ; bx=6021 push ax ; sp= 00FE ;修改的内存单元的地址是2200:FE-2200:FF 内容为C0FC (push指令执行前,sp先减2) push bx ; sp=00FC ;修改的内存单元的地址是2200:FC-2200:FD 内容为6021 pop ax ; sp=00FE ; ax=6021 pop bx ; sp= 00FC ; ax=C0FC push [4] ; sp=00FE ;修改的内存单元的地址是2200:FE-2200:FF 内容为30F0 push [6] ; sp=00FC ;修改的内存单元的地址是2200:FC-2200:FD 内容为 2F31 教材在实验2的介绍部分有如下的说明: 来源: CSDN 作者: Wo_Knight 链接: https://blog.csdn.net/weixin_43092232/article/details/104835565

学汇编有感

≡放荡痞女 提交于 2020-03-17 08:11:31
这几天一直在学习王爽的那本汇编语言,书算是基本上看完了,这本书的确是很适合学汇编的新手。 我学汇编的主要目的是想更深入的学习windows和编写更好的软件,所以我在一边学习《汇编语言》一边学习看雪老大出的那本经典的《加密与解密》。 《汇编语言》学完了后再看那本厚厚的《加密与解密》就基本上能看懂了(当然了,如果你也看的话还要学点c语言) 来源: https://www.cnblogs.com/onroad/archive/2009/07/13/1522699.html

通俗地理解什么是编程语言

限于喜欢 提交于 2020-03-17 00:29:43
学习编程语言之前,首先要搞清楚「编程语言」这个概念。 很小的时候,父母就教我们开口说话,也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习,我们竟然在不知不觉中学会了说话,同时也能听懂其他小朋友说话的意思了,我们开始向父母要零花钱买零食和玩具、被欺负了向父母倾诉…… 我们说的是汉语,是“中国语言”,只要把我们的需求告诉父母,父母就会满足,我们用“中国语言”来控制父母,让父母做我们喜欢的事情。 “中国语言”有固定的格式,每个汉字代表的意思不同,我们必须正确的表达,父母才能理解我们的意思。例如让父母给我们10元零花钱,我们会说“妈妈给我10块钱吧,我要买小汽车”。如果我们说“10元给我汽车小零花钱妈妈”,或者“妈妈给我10亿人民币,我要买F-22”,妈妈就会觉得奇怪,听不懂我们的意思,或者理解错误,责备我们。 我们通过有固定格式和固定词汇的“语言”来控制他人,让他人为我们做事情。语言有很多种,包括汉语、英语、法语、韩语等,虽然他们的词汇和格式都不一样,但是可以达到同样的目的,我们可以选择任意一种语言去控制他人。 同样,我们也可以通过”语言“来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming Language)。 编程语言也有固定的格式和词汇,我们必须经过学习才会使用,才能控制计算机。 编程语言有很多种,常用的有 C语言 、 C++ 、 Java

汇编语言学习总结

隐身守侯 提交于 2020-03-13 09:39:46
8086CPU 总共有14 个16位寄存器:         1、通用寄存器:8个         2、指令指针:1个         3、标志寄存器:1个 18位         4、段寄存器:4个 1、通用寄存器:数据寄存器4个 、、、 指针寄存器及变址寄存器4个        a、数据寄存器可以分为 高8位、低8位,可以分别寻址               AX = AH &AL:累加寄存器--------------运算、与外部IO通信               BX = BH & BL:基址寄存器-------------地址索引               CX =CH & CL:计数寄存器-------------计数--------移位指令、循环(loop)               DX = DH & DL:数据寄存器-------------数据传递        b、指针寄存器和变址寄存器               SP(Stack Pointer):堆栈指针寄存器-----------------SS:SP->目前的堆栈位置               BP(Base Pointer):基址指针寄存器------------------SS: BP               SI(Source Index):源变址寄存器 --------------

汇编语言-转移指令

删除回忆录丶 提交于 2020-03-12 04:03:11
可以修改IP,或同时修改CS和IP的指令统称为转移指令 。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。 8086CPU的转移行为有以下几类。 只修改IP时,称为 段内转移 ,比如:jmp ax 同时修改CS和IP时,称为 段间转移 ,比如:jmp 1000:0。 由于转移指令对IP的修改范围不同,段内转移又分为: 短转移 和 近转移 。 短转移IP的修改范围为 -128~127。 近转移IP的修改范围为 -32768~32767。 8086CPU的转移指令分为以下几类。 无条件转移指令(如:jmp) 条件转移指令(如:jcxz) 循环指令(如:loop) 过程 中断 操作符 offset 操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。 mov ax , offset start ; 相当于指令 movax , 0 因为start是代码段中的标号,它所标记的指令是代码段中的第一条指令,编译地址为 0 。 jmp 指令 jmp为无条件转移指令,可以只修改IP,也可以同时修改CS和IP。 jmp指令要给出两种信息: 转移的目的地址。 转移的距离(段间转移,段内短转移,段内近转移) jmp short 标号(转到标号处执行指令)段内短转移 jmp short 标号 的功能为: (ip)=(ip)+8位位移。 8位位移=标号处的地址 -

汇编语言复习(一)

天涯浪子 提交于 2020-03-12 03:40:13
基本概念 机器语言 机器语言: 机器语言是一种数字语言,专门设计成能够被计算机处理器(Cpu)理解。 汇编语言 汇编语言: 包含用助记符书写的语句,汇编语言不是可移植的 可移植性: 一种语言,如果它的源程序能够在各种各样的计算机系统中进行编译和运行,那么这种语言是被称为可移植得 。 汇编语言和机器语言是一对一的关系:每一条汇编语言指令对应一条机器语言指令 汇编语言的规则: 大多数汇编语言规则都是以目标处理器及其机器语言的物理局限性为基础的。例如,Cpu要求两个指令操作数的大小相同。与C++或者Java相比,汇编语言的规则较少,因为汇编语言是以限制底层数据访问为代价的,而高级语言是用语法规则来减少意外的逻辑错误。 虚拟机 虚拟机概念是一种说明计算机硬件和软件关系的有效方法 通俗的说,虚拟机就是把高级语言翻译成对应的设备的低级语言 简单的练习 # include <iostream> using namespace std ; int f ( const char * p ) { int n = 0 ; for ( int i = 15 ; i >= 0 ; i -- ) { n = n + ( pow ( 2 , i ) ) * ( p [ 15 - i ] - '0' ) ; } return n ; } void test01 ( ) { const char * p =

windows搭建gcc开发环境(msys2) objdump

こ雲淡風輕ζ 提交于 2020-03-11 18:18:36
前言 可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等。 msys2可以在windows下搭建一个完美的类linux环境,包括bash、vim、gcc、make等工具都可以通过包管理器来添加和卸载 msys2的包管理器是使用的pacman,用过archlinux的应该都知道pacman了。 我们现在的目标是要集成make+gcc+gdb的一条编译工具 安装 下载地址: msys2 如果是exe,直接双击安装,如果是zip,直接解压到安装的地方即可。然后双击msys2.exe运行 [图片上传失败...(image-295493-1523187370956)] 给 MSYS2 添加中科大的源 使用过archlinux的应该会知道,pacman在安装的时候,如果源没有设置好,下载是很慢的。 需要修改的文件是: 1. \etc\pacman.d\mirrorlist.mingw32 2. \etc\pacman.d\mirrorlist.mingw64 3. \etc\pacman.d\mirrorlist.msys 简单的说 msys64\etc\pacman.d 目录下有三个文件。 mirrorlist.msys mirrorlist.mingw64 mirrorlist

8086汇编 介绍

痞子三分冷 提交于 2020-03-10 12:36:56
8086汇编 介绍 什么是汇编语言   汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 效率 运行效率:开发软件的核心部件,快速执行和实时响应。 开发效率:做合适的事,开发效率无敌 底层 计算机及外围设备的驱动程序 操作系统的内核 嵌入式系统:家用电器、仪器仪表、物联网…… 8086 CPU介绍   Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久之后,Intel 就推出了 Intel 8088 (一个拥有8位外部数据总线的微处理器)。它是以8080和8085的设计为基础,拥有类似的寄存器组,但是地址总线扩充为20位。总线接口单元(Bus Interface Unit)透过6字节预存(prefetch) 的队列(queue)位指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。